# -*- coding: utf-8 -*- import struct import sys data = "" dataout="" with open(sys.argv[1], 'rb') as f: data = f.read() f.closed pv=struct.unpack('> 24 key3 = ((pv ^ otid) >> 16) & mask key2 = ((pv ^ otid) >> 8) & mask key1 = (pv ^ otid) & mask substructG=[struct.unpack('> 8) + data[66:] i=0 while i < 12: substructG[i] ^= key1 substructA[i] ^= key1 substructE[i] ^= key1 substructM[i] ^= key1 substructG[i+1] ^= key2 substructA[i+1] ^= key2 substructE[i+1] ^= key2 substructM[i+1] ^= key2 substructG[i+2] ^= key3 substructA[i+2] ^= key3 substructE[i+2] ^= key3 substructM[i+2] ^= key3 substructG[i+3] ^= key4 substructA[i+3] ^= key4 substructE[i+3] ^= key4 substructM[i+3] ^= key4 i+=4 mod = pv % 24 i=0 if mod == 0: for i in range(12): data = data[0:68+i] + struct.pack('