PaulSilentin

PotterDATunpack.py by ikskoks

Jul 20th, 2015
857
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.17 KB | None | 0 0
  1. #ENGLISH
  2. #Tested on Python 2.7.5
  3. #Author of this code: ikskoks
  4. #Contact: https://www.facebook.com/ikskoks
  5. #This code/python script is for personal use ONLY
  6. #It was made for XENTAX users
  7.  
  8.  
  9. #POLISH
  10. #Testowane na Pythonie 2.7.5
  11. #Autor tego skryptu: ikskoks
  12. #Kontakt: https://www.facebook.com/ikskoks
  13. #Ten kod/skrypt w pythonie jest wylacznie do uzytku domowego
  14. #Kod zostal napisany i udostepniony tylko dla uzytkownikow forum XENTAX
  15.  
  16.  
  17.  
  18. import argparse
  19. import os
  20. import sys
  21. import time
  22. import struct
  23. import binascii
  24. import linecache
  25.  
  26. lokalizacja_skryptu = os.path.dirname(os.path.abspath(__file__))
  27. parser = argparse.ArgumentParser()
  28. parser.add_argument("plik_DIR", help="Sciezka do pliku DIR")
  29.  
  30.  
  31. args = parser.parse_args()
  32. (sciezka_dir, nazwa_dir) = os.path.split(args.plik_DIR)
  33. (Krotka_nazwa_dir, extension) = os.path.splitext(nazwa_dir)
  34.  
  35. nazwa_dat = "POTTER.DAT"
  36. pelna_sciezka_dat = os.path.join(os.path.abspath(sciezka_dir), nazwa_dat)
  37.  
  38.  
  39. potter_dat = open(pelna_sciezka_dat, 'rb')
  40. potter_dir = open(args.plik_DIR, 'rb')
  41.  
  42. liczba_plikow = potter_dir.read(4)
  43. liczba_plikow = struct.unpack('i', liczba_plikow)[0]
  44.  
  45.  
  46. for i in range(liczba_plikow):
  47.     nazwa_pliku = potter_dir.read(12)  #czytanie danych z DIR
  48.     nazwa_pliku = nazwa_pliku.split(b'\x00')[0]
  49.     rozmiar_pliku = potter_dir.read(4)
  50.     rozmiar_pliku = struct.unpack('i', rozmiar_pliku)[0]
  51.     offset_pliku = potter_dir.read(4)
  52.     offset_pliku = struct.unpack('i', offset_pliku)[0]
  53.     #print nazwa_pliku, rozmiar_pliku, offset_pliku
  54.    
  55.     potter_dat.seek(offset_pliku) #czytanie danych z DAT
  56.     przeczytane_dane = potter_dat.read(rozmiar_pliku)
  57.    
  58.     sciezka_zapisywanego_pliku = os.path.join(os.path.join(os.path.abspath(sciezka_dir), "WYPAKOWANE"), nazwa_pliku) #zapisywanie danych do plikow
  59.     print sciezka_zapisywanego_pliku
  60.     if not os.path.isdir(os.path.join(os.path.abspath(sciezka_dir), "WYPAKOWANE")):  
  61.             os.makedirs(os.path.join(os.path.abspath(sciezka_dir), "WYPAKOWANE"))  
  62.            
  63.     with open(sciezka_zapisywanego_pliku, 'wb') as plik_wyjsciowy:
  64.         plik_wyjsciowy.write(przeczytane_dane)    
  65.    
  66.    
  67. print "Wypakowywanie zakonczone sukcesem."
Advertisement
Add Comment
Please, Sign In to add comment