如何使用特定偏移量的给定密钥通过异或运算符解密二进制文件中的数据



我有一个二进制数据文件,该文件由一个简单的异或密码加密,使用给定的密钥在偏移量+0x88(这是0x80长),然后数据(+0x108)被lzo1x压缩。

解密这些文件最有效的方法是什么?

最好通过使用一些命令行实用程序(我可以指定输入偏移量)或一些脚本(没有太多的编码)?

使用dd来提取你需要的数据,例如(使用bash语法):

dd if=foo.dat bs=1 skip=$((0x88)) count=$((0x80)) of=xorkey.bin
dd if=foo.dat bs=1 skip=$((0x108)) of=data1.bin

然后使用简单的Python代码进行转换:

#!/usr/bin/env python3
def str_xor(data, key):
    for i in range(len(data)):
        data[i] ^= key[i % len(key)]
    return data
key  = bytearray(open('xorkey.bin', 'rb').read())
data = bytearray(open('data1.bin',  'rb').read())
encoded = str_xor(data, key)
open("data1.bin.xor", "wb").write(encoded)
decoded = str_xor(data, key)
open("data1.bin.xor.xor", "wb").write(decoded)

然后安装lzop工具,它提供LZO1X算法的压缩/解压缩(通过:apt-get/brew install lzop安装),例如:

lzop -dc data1.bin.xor > data1.out

根据这个注释,也可以使用PowerShell从特定的文件块中获取字节,并使用foreach操作符像这样取字节:

$foo=(($c=gc .encrypted.dat -Encoding byte)[0x80..$C.Length]) | %{$_ -bxor 63} 

最新更新