当你在 scapy 中串一个数据包时,你得到的下面的编码是什么?这当然不是十六进制的。
str(IP()) 'E\x00\x00\x14\x00\x01\x00\x00@\x00|\xe7\x7f\x00\x00\x01\x7f\x00\x00\x01'</p>
\x 是十六进制表示法。在这种情况下,当您使用 str(IP()) 时,您正在尝试将数据包数据转换为不完全有效的字符串,因为并非每个原始十六进制数据都可以在 ASCII 表中找到以用字母替换它,因此任何可以'不被转换会以这种格式\x14 看到。
我认为以下示例将有所帮助:
将数据包数据编码为十六进制格式以使用 python 方法查看
Welcome to Scapy (2.1.1-dev)
>>> pkt=IP()
>>> pkt.summary()
'127.0.0.1 > 127.0.0.1 ip'
>>> data=str(pkt)
>>> data.encode('hex')
'450000140001000040007ce77f0000017f000001'
>>>
考虑以下几点: