用Python读取每四个字节(DWORD)和XOR与0xBABEBABE

时间:2016-03-22 10:10:47

标签: python file binary hex xor

我有一个恶意软件样本来分析学校项目。有效载荷通过每4个字节(DWORD)与0xBABEBABE进行异或编码来编码。我知道,因为XORing前4个字节给了我0x4D5A9000(MZ标头)。我想要一个可以自动化该过程的脚本,以便我可以解码该文件。

这是我到目前为止所尝试的内容:

#if DEBUG
[assembly: XmlnsDefinition("debug-mode", "TestingAlternateContent")]
#endif

但这仅适用于1byte数据。

谢谢

1 个答案:

答案 0 :(得分: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)