Python 解密单字节异或编码文件
我有一个二进制文件,用一个字节进行单字节异或编码,我试图对文件进行暴力攻击,并将生成文件的哈希值与原始文件进行比较,但找不到,我与作者确认了原始哈希值 我写的代码Python 解密单字节异或编码文件,python,encryption,cryptography,xor,Python,Encryption,Cryptography,Xor,我有一个二进制文件,用一个字节进行单字节异或编码,我试图对文件进行暴力攻击,并将生成文件的哈希值与原始文件进行比较,但找不到,我与作者确认了原始哈希值 我写的代码 #!/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()) fo
#!/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文件,然后我比较文件的散列,但没有找到它。在
范围内使用0xff
的停止值,实际上您缺少0xff
本身
摘录自:
对于正阶跃,范围r的内容由
公式r[i]=开始+步骤*i,其中i>=0,r[i]<停止
您应该改为使用0x100
作为停止值
for key in range(0x00,0x100):
谢谢你的评论,我确实错过了0xff,但答案仍然不正确,我不确定。谢谢,这似乎是散列中的一个输入错误。谢谢。我让一位同事使用单字节xor“加密”,我立即看到了xor字节,因为有一段数据是0x00,所以xor字节很明显。如果你想要加密,使用真正的加密,比如AES.thank@zaph我不是在寻找真正的加密,我只是在破译一个文件,但一切都完成了,这是我写的散列中的一个输入错误。