【发布时间】:2016-04-19 21:31:21
【问题描述】:
当使用 scapy 嗅探数据包时,我可以将它们保存到变量中
sniffed = sniff(count=1)
现在我想看看包里面有什么
print sniffed
或
print str(sniffed)
但这一切给我的结果如下:
������0� E4h@@����������� l��
这不是我所需要的。那么如何将嗅探到的数据包转换为人类可读的二进制文件、字节数组或其他更有用的东西,以便我可以看到里面的内容?我已经尝试过将struct.unpack(format, packet) 与"!B" 之类的格式一起使用,但这似乎不是正确的解决方案,因为数据包可以长于一个字节或一个短或一个整数。
我正在尝试的示例
>>> packet = sniff(count=1)[0]
>>> hexdump(packet)
0000 00 50 56 8E 00 0D 14 CC 20 16 E7 59 08 00 45 00 .PV..... ..Y..E.
0010 00 34 6B AB 40 00 40 06 C6 48 AC 11 8A E2 68 10 .4k.@.@..H....h.
0020 69 CC B5 47 00 50 E9 85 17 B0 BA EF 29 B2 80 10 i..G.P......)...
0030 01 DD 8D 58 00 00 01 01 08 0A 00 0E A2 C0 03 5D ...X...........]
0040 9D 1C
>>> packetByteArray = bytearray(repr(str(packet)))
>>> hex(packetByteArray[0])
'0x27'
>>>
但是在 hexdump 中我可以看到第一个字节实际上是 0x00 而不是 0x27
【问题讨论】:
标签: struct packet scapy unpack