2016-03-22 4 views
-1

学校プロジェクトを分析するマルウェアサンプルがあります。ペイロードは0xBABEBABEで4バイト(DWORD)ごとに排他的論理和をとります。最初の4バイトを排他的論理和(XOR)すると0x4D5A9000(MZヘッダー)が返されたことが分かりました。私はファイルを解読できるようにプロセスを自動化するスクリプトが必要です。Pythonで各4バイト(DWORD)と0xBABEBABEでXORを読む

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バイトのデータについては、この唯一の作品:

は、ここで私はこれまでにしようとしているものです。

あなたは

+0

オーケーいつの日か、このような問題に実行する場合、これが役立つかもしれないありがとう。あなた自身ですでにこれを解決しようとしましたか?もしそうなら、どこに正確にこだわったのですか?私は一般的に、人々は「私のためにこのコードを作ってください」というリクエストにはあまりうまく反応しませんが、これはやってみましたが、助けてください "-requests ;-) – Carpetsmoker

+0

あなたの質問を編集し、試した内容をコメントに入れてください;-) – Carpetsmoker

+0

ありがとう@Carpetsmoker :) –

答えて

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) 
関連する問題