用Python读取0xBABEBABE的每四个字节(DWORD)和异或
我有一个恶意软件样本要分析一个学校项目。有效负载通过使用0xBABEBABE每4个字节(DWORD)进行XORing编码。我知道这一点,因为用它对前4个字节进行XORing得到了0x4D5A9000(MZ头)。我想要一个脚本,可以自动化的过程,以便我可以解码的文件 以下是我迄今为止所尝试的:用Python读取0xBABEBABE的每四个字节(DWORD)和异或,python,file,binary,hex,xor,Python,File,Binary,Hex,Xor,我有一个恶意软件样本要分析一个学校项目。有效负载通过使用0xBABEBABE每4个字节(DWORD)进行XORing编码。我知道这一点,因为用它对前4个字节进行XORing得到了0x4D5A9000(MZ头)。我想要一个脚本,可以自动化的过程,以便我可以解码的文件 以下是我迄今为止所尝试的: xor_key = 0xfe result = bytearray('') with open("myfile.bin","rb") as encoded_file: for one_byte in
xor_key = 0xfe
result = bytearray('')
with open("myfile.bin","rb") as encoded_file:
for one_byte in encoded_file.read():
result.append(one_byte^xor_key)
但一次只能处理1字节的数据
谢谢我已经解决了这个问题,但如果有人有一天遇到这样的问题,这可能会有所帮助:)
可以你已经试着自己解决这个问题了吗?如果是的话,你到底是在哪里被卡住的?一般来说,人们对“请为我编写此代码”请求(看起来像这样)的响应不太好,但对“我尝试了此方法,现在我卡住了/困惑了,请帮助”请求的响应很好;-)你应该提出你的问题,包括你尝试过的内容,而不是在评论中发表;-)谢谢你,吸烟者:)
import struct
from functools import partial
XOR_key = 0xbabebabe
XORed_data = bytearray('')
with open('binaryFile.bin','rb') as fileToXOR:
for chunk in iter(partial(fileToXOR.read, 4), ''):
data = struct.unpack('I', chunk)[0]
if data != 0:
result = data ^ XOR_key
XORed_data += bytearray(struct.pack("I", result))
else:
XORed_data += bytearray("\x00\x00\x00\x00")
with open('decrypted_file.bin','wb') as XORedFile:
XORedFile.write(XORed_data)