【问题标题】:Read each four bytes (DWORD) and XOR with 0xBABEBABE with Python使用 Python 读取每四个字节(DWORD)和 XOR 与 0xBABEBABE
【发布时间】:2016-07-09 04:02:31
【问题描述】:

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

这是我迄今为止尝试过的:

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 个字节的数据。

谢谢

【问题讨论】:

  • 好的;您是否已经尝试自己解决此问题?如果是这样,你到底是在哪里卡住的?我一般来说,人们对“请为我编写此代码”的请求(看起来像)的反应不太好,但确实对“我试过了,现在我被卡住了”的反应很好/困惑,请帮助”-请求 ;-)
  • 您应该edit 您的问题并包括您尝试过的内容,而不是将其发布在 cmets 中;-)
  • 谢谢@Carpetsmoker :)

标签: python file binary hex xor


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多