1

1.我有层次结构

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

我正在尝试打印 DHCP 数据包类型,我该怎么做。(我没有看到任何获取它的选项)

我尝试打印dh.opts但不确定如何解码它..?(我缺乏二进制格式的经验)

2.我看到 Jon Oberheide 的几个老例子,他能够以几乎可读的格式打印整个数据包以太网、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)

你能帮我解决这个问题吗?例子会很棒

4

1 回答 1

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')
于 2016-03-12T17:37:15.803 回答