数据包嗅探和伪造实验
Completion requirements
一旦我们捕获了数据包,可能需要完全或部分地显示该数据包。有几种方法可以做到这一点。以下示例将展示如何使用这些方法。
我们首先使用 sniff() 捕获两个数据包(通过 count 参数指定数量)。然后以各种方式显示第一个数据包 (pkts[0]) 的内容。下面的示例展示了如何显示数据包的原始数据(第一个示例)或每一层的详细信息(第二个示例)。
>>> pkts = sniff(iface="br-07950545de5e", count=2)
>>> hexdump(pkts[0])
0000 02 42 0A 09 00 05 02 42 0A 09 00 06 08 00 45 00 ...
0010 00 54 BD E5 40 00 40 01 68 A7 0A 09 00 06 0A 09 ...
0020 00 05 08 00 A0 30 00 73 00 01 D5 B1 D0 60 00 00 ...
...
>>> ls(pkts[0])
dst : DestMACField = '02:42:0a:09:00:05' (None)
src : SourceMACField = '02:42:0a:09:00:06' (None)
type : XShortEnumField = 2048 (36864)
--
version : BitField (4 bits) = 4 (4)
...
src : SourceIPField = '10.9.0.6' (None)
dst : DestIPField = '10.9.0.5' (None)
...
我们还可以使用 packet 类的内置函数来打印数据包的摘要或详细信息。
>>> pkts[0].summary()
'Ether / IP / ICMP 10.9.0.6 > 10.9.0.5 echo-request 0 / Raw'
>>> pkts[0].show()
###[ Ethernet ]###·
dst = 02:42:0a:09:00:05
src = 02:42:0a:09:00:06
type = IPv4
###[ IP ]###
...
src = 10.9.0.6
dst = 10.9.0.5
###[ ICMP ]###
type = echo-request
...
###[ Raw ]###
load = '\xd5\xb1.../01234567'
内容来源:书, Network Security Basics,ch 4.4
Last modified: Monday, 8 September 2025, 3:53 PM