2016-03-22 33 views
-1

Bir okul projesini analiz etmek için kötü amaçlı yazılım örneğim var. Yük, XORing tarafından 0xBABEBABE ile her 4 bayt (DWORD) tarafından kodlanır. Bunu biliyordum çünkü XORing ile ilk 4 bayt bana 0x4D5A9000 (MZ header) verdi. Dosyayı çözebileceğim şekilde işlemi otomatik hale getirebilen bir komut dosyası istiyorum.Her dört bayt (DWORD) ve XOR'u Python ile 0xBABEBABE ile okuyun.

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) 

Ama bir anda 1byte verileri için bu sadece çalışır:

İşte ben bugüne kadar çalıştık budur.

Eğer

+0

Tamam bir gün böyle bir konu haline çalışıyorsa bu yardım edebilir ederiz; Bunu zaten kendin çözmeyi denedin mi? Eğer öyleyse, tam olarak nereye takıldınız? Genel olarak, insanlar "lütfen bu kodu benim için yapınız" cevabını çok iyi yanıtlamıyorlar (ki bu bana benziyor), ama ** "bunu denedim" denedim ve şimdi sıkışıp kaldım, lütfen yardım edin "-requests ;-) – Carpetsmoker

+0

Sorunuzu [değiştir] ve ne denediğinizi dahil etmelisiniz, yorumlarda yayınlamayın ;-) – Carpetsmoker

+0

Teşekkürler @Carpetsmoker :) –

cevap

1

Ben zaten çözüldü ama herkes :)

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)