2017-09-19 3 views
0

ich versuche, ein Hex-String-Format zu konvertieren Zum Beispiel zu Shellcode: Ich habe eine Datei in Hex-String habe wie aabbccddeeff11223344 und ich mag, dass genau dieses Format zu zeigen, durch Python konvertieren: "\xaa\xbb\xcc\xdd\xee\xff\x11\x22\x33\x44" einschließlich die Zitate "".Python von Hex-Shellcode-Format

Mein Code ist:

with open("file","r") as f: 
    a = f.read() 
    b = "\\x".join(a[i:i+2] for i in range(0, len(a), 2)) 
    print b 

so meine Ausgabe ist aa\xbb\xcc\xdd\xee\xff\x11\x22\x33\x44\x.

Ich verstehe, dass ich es über sed Befehl tun kann, aber ich frage mich, wie ich dies durch Python erreichen kann.

Antwort

0

Das binascii Standardmodul hilft hier:

import binascii 

print repr(binascii.unhexlify("aabbccddeeff11223344")) 

Ausgang:

>>> print repr(binascii.unhexlify("aabbccddeeff11223344")) 
'\xaa\xbb\xcc\xdd\xee\xff\x11"3D' 
+0

Danke. Die Ausgabe fehlt also \ x22 \ x33 \ x44. Ich habe den Fehler "Type Error: Odd-length string". – kluo

+0

@ kluo, nein, die Ausgabe des Codes in meiner Antwort _ist nicht_ irgendetwas fehlt und der Code _ist nicht_ verursacht irgendwelche Fehler. Bitte überprüfe, wie du es ausführst und beachte, dass ''\ x44' == 'D'', '' \ x33 '==' 3'' und' \ x22 '==' "'', was ist genau das, was dieser Code produziert – ForceBru

+0

Oh, ich verstehe ... Können wir das ursprüngliche Hex-Format irgendwie behalten? – kluo