解密单字节异或编码文件

Decipher sing-byte XOR encoded file

我有一个用单字节异或编码的二进制文件,我试图暴力破解文件并将生成的文件的哈希值与原始文件进行比较但找不到它,我用作者.

我写的代码

#!/usr/bin/env python3

def bin_xor(data, key):
    for i in range(len(data)):
        data[i] ^= key
    return data

data = bytearray(open('sample',  'rb').read())
for key in range(0x00,0xff):
    decoded = bin_xor(data, key)
    name = str(key) + '.bin'
    open(name, "wb").write(decoded)

它会生成 255 个 .bin 文件然后我比较文件的哈希值但没有找到它。

通过在 range 中使用 0xff 的停止值,您实际上错过了 0xff 本身。

摘自range's documentation

For a positive step, the contents of a range r are determined by the formula r[i] = start + step*i where i >= 0 and r[i] < stop.

您应该使用 0x100 作为停止值。

for key in range(0x00,0x100):