Guest User

Generic Text Dumper v1

a guest
Mar 11th, 2015
559
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.59 KB | None | 0 0
  1. import os
  2. import struct
  3. import sys
  4.  
  5. def get_data(filename):
  6.     totalbytes = os.path.getsize(filename)
  7.     infile = open(filename, 'rb')
  8.     totalfiledata = infile.read(totalbytes)
  9.     infile.close()
  10.     return totalfiledata
  11.  
  12. def is_jis_char(s):
  13.     try:
  14.         s.decode('cp932')
  15.     except UnicodeDecodeError:
  16.         return False
  17.     if len(s.decode('cp932')) == 1:
  18.         return True
  19.     return False
  20.  
  21. def myprogram(f):
  22.     output = []
  23.     filedata = get_data(f + '.unpack')
  24.     pos = 0
  25.     while pos < len(filedata) - 1:
  26.         if is_jis_char(filedata[pos:pos+2]):
  27.             flag = False
  28.             startpos = pos
  29.             while True:
  30.                 pos += 1
  31.                 if filedata[pos] == '\x00':
  32.                     break
  33.             endpos = pos
  34.             while filedata[pos] == '\x00':
  35.                 if pos == len(filedata) - 1:
  36.                     break
  37.                 pos += 1
  38.             allowable_len = pos - startpos - 1
  39.                
  40.             if '\\n' in filedata[startpos:endpos]:
  41.                 flag = True
  42.                 s = filedata[startpos:filedata.find('\\n',startpos)]
  43.                 s1 = filedata[filedata.find('\\n',startpos) + 2:endpos]
  44.             else:
  45.                 s = filedata[startpos:endpos]
  46.             output.append('\t'.join([hex(startpos), s, str(allowable_len)]) + '\n')
  47.             if flag:
  48.                 output.append('\t'.join(['', s1, '']) + '\n')
  49.         else:
  50.             pos += 1
  51.     outfile = open(f + '.data','wb')
  52.     outfile.write(''.join(output))
  53.     outfile.close()
  54.  
  55. myprogram(sys.argv[1])
Add Comment
Please, Sign In to add comment