如何使用特定偏移量处的给定密钥通过 XOR 运算符解密二进制文件中的数据?
How to decrypt data in binary file by XOR operator using a given key at specific offset?
我有一个二进制数据文件,它使用偏移量 +0x88
(0x80
长)处的给定密钥通过简单的 XOR cipher 加密,然后是数据(+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
工具,该工具提供 compression/decompression LZO1X 算法(安装方式:apt-get
/brew
install lzop
),例如:
lzop -dc data1.bin.xor > data1.out
根据 this 评论,也可以使用 PowerShell 从特定文件块中获取字节并使用 foreach 运算符对字节进行异或运算,如下所示:
$foo=(($c=gc .\encrypted.dat -Encoding byte)[0x80..$C.Length]) | %{$_ -bxor 63}
我有一个二进制数据文件,它使用偏移量 +0x88
(0x80
长)处的给定密钥通过简单的 XOR cipher 加密,然后是数据(+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
工具,该工具提供 compression/decompression LZO1X 算法(安装方式:apt-get
/brew
install lzop
),例如:
lzop -dc data1.bin.xor > data1.out
根据 this 评论,也可以使用 PowerShell 从特定文件块中获取字节并使用 foreach 运算符对字节进行异或运算,如下所示:
$foo=(($c=gc .\encrypted.dat -Encoding byte)[0x80..$C.Length]) | %{$_ -bxor 63}