Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct, hashlib, zlib, sys
- def hexToByteArr(h):
- byte_arr = []
- s = ''
- for c in h:
- s += c
- if (len(s)==2):
- byte_arr.append(s)
- s = ''
- return byte_arr
- if __name__ == '__main__':
- if (len(sys.argv)>=2):
- input_path = sys.argv[1]
- output_path = input_path+'.patched'
- if (len(sys.argv)>=3):
- output_path = sys.argv[2]
- f = open(input_path, 'rb').read()
- hex_size = hexToByteArr(struct.pack('<I', len(f)).encode('hex'))
- hex_value = f.encode('hex')
- hex_byte = hexToByteArr(hex_value)
- for i in range(len(hex_size)):
- hex_byte[i+32] = hex_size[i]
- sha1_data = ''.join(hex_byte[32:]).decode('hex')
- sha1_byte = hexToByteArr(hashlib.sha1(sha1_data).hexdigest())
- for i in range(len(sha1_byte)):
- hex_byte[i+12] = sha1_byte[i]
- adler32_data = ''.join(hex_byte[12:]).decode('hex')
- adler_int = zlib.adler32(adler32_data) % (1<<32)
- adler32_byte = hexToByteArr(struct.pack('<I', adler_int).encode('hex'))
- for i in range(len(adler32_byte)):
- hex_byte[i+8] = adler32_byte[i]
- patched = ''.join(hex_byte).decode('hex')
- f1 = open(output_path, 'wb')
- f1.write(patched)
- f1.close()
- print 'Done'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement