2013-12-05 5 views
2

Я пытаюсь преобразовать шестнадцатеричный в ASCII, но у меня возникают большие трудности при этом -Преобразование шестнадцатеричной в ASCii при чтении пакетов в scapy - Python

>>> pkt[9][3].sprintf("%Raw.load%") 
"'\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\xff\\x00\\x1d\\x01\\x04\\xfe\\t\\x00\\xb4\\xc0\\xa8\\x00!\\x00'" 

>>> pkt[9][3].sprintf("%Raw.load%").decode("hex") 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/lib/python2.7/encodings/hex_codec.py", line 42, in hex_decode 
output = binascii.a2b_hex(input) 
TypeError: Odd-length string 

ответ

1

В Scapy функция str() возвратит шестигранник строка для пакета для вас.

От Scapy Hex String -

>>> pkt_str = str(pkt) 
>>> pkt_str 
'\x00PV\xfc\xceP\x00\x0c)+S\x19\x08\x00E\x00\x00T\x00\[email protected]\[email protected]\x01Z|\xc0\xa8 
\x19\x82\x04\x02\x02\x01\x08\x00\x9c\x90Za\x00\x01\xe6\xdapI\xb6\xe5\x08\x00 
\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b 
\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./' 

После преобразования, вы можете повторно импортировать его обратно в Scapy. Все упоминалось в документации, на которую я указал.

+0

Это, безусловно, лучший подход. –

+0

Ребята, спасибо вам за помощь! Оказывается, то, что я искал, было проще, чем я думал ... 'pkt_str.encode ('hex')' – user3071906

Смежные вопросы