Как напечатать тип сообщения DHCP в Python, используя dpkt

1. У меня есть иерархия слоев

dh = dpkt.dhcp.DHCP(udp.data)

Я пытаюсь напечатать тип пакета DHCP, как я могу это сделать (я не видел никакой возможности получить его)

Я пробовал печатать dh.opts но не уверен, как я могу его декодировать..?(мой опыт работы с двоичными форматами)

2. Я видел несколько старых примеров от Джона Оберхайде, он смог напечатать весь пакет Ethernet, IP или т. Д. В почти читаемом формате. например

>>> print eth
Ethernet(src='\x00\x1a\xa0kUf', dst='\x00\x13I\xae\x84,', data=IP(src='\xc0\xa8\n\n',
off=16384, dst='C\x17\x030', sum=25129, len=52, p=6, id=51105, data=TCP(seq=9632694,
off_x2=128, ack=3382015884, win=54, sum=65372, flags=17, dport=80, sport=56145)))

Как я могу напечатать данные целого пакета в читаемом формате и затем перейти слой за слоем или данные перикулярного слоя, как я пытался

print dh //gives me unreadable(I believe binary formatted text)

Можете ли вы помочь мне в этом.. Примеры будут отличными

1 ответ

Когда вы не в python REPL, вам нужно позвонить repr функция на желаемом пакете.

>> dh = dpkt.dhcp.DHCP(udp.data)                                               
>> print repr(dh)  
>>> DHCP(xid=15645, chaddr='\x00\x0b\x82\x01\xfcB', opts=[(53, '\x01'), (61, '\x01\x00\x0b\x82\x01\xfcB'), (50, '\x00\x00\x00\x00'), (55, '\x01\x03\x06*')], data='\x00\x00\x00\x00\x00\x00\x00')
Другие вопросы по тегам