# DC18 bin300 string decryptor # http://smokedchicken.org h = { 0: '4a977fd18d9eada7b5a8cb9009311b77'.decode('hex'), \ 0x11: '5afa2306bc15a62e345137b6157a1d7d'.decode('hex'), \ 0x045b: 'fe54cf2a45d7a08d9f90e56fc9c1ec2c'.decode('hex'), \ 0x1551: 'fac9834a0a839d24a07baed69c2d6b27'.decode('hex'), \ 0x2a75: '23005df2dd75e5f722aa5e52453247a2'.decode('hex') } enc_key = '7d343be755ff63e0a5908f625c203573'.decode('hex'); offsets = [0, 0x11, 0x45b, 0x1551, 0x2a75] res = bytearray(16) for i in offsets: for j in offsets: op1 = bytearray(h[i]) op2 = bytearray(enc_key) op3 = bytearray(h[j]) for k in range(16): res[k] = op1[k] ^ op2[k] for k in range(16): res[k] = res[k] ^ op3[k] print "%04x %04x %s %s" % (i, j, str(res).encode('hex'), str(res))