Как напечатать тип сообщения 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')