【发布时间】:2015-07-17 17:01:23
【问题描述】:
sniff 的filter 功能好像不能正常工作。
我正在使用以下过滤器执行嗅探
a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
但有时sniff 会像这样捕获UDP 数据包:
>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:0 UDP:1 ICMP:0 Other:0>
有时sniff 会捕获带有错误端口的 TCP 数据包:
>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:1 UDP:0 ICMP:0 Other:0>
>>> a[0]
<Ether dst=00:26:55:cb:3b:10 src=00:22:64:55:c8:89 type=0x800 |<IP version=4L ihl=5L tos=0x10 len=92 id=8683 flags=DF frag=0L ttl=64 proto=tcp chksum=0x9484 src=192.168.1.71 dst=192.168.1.133 options=[] |<TCP sport=ssh dport=1874 seq=350107599 ack=2484345720 dataofs=5L reserved=0L flags=PA window=254 chksum=0x846b urgptr=0 options=[] |<Raw load="yn\x01\x9d\xfca\xc9V-8\x18|\xc4\t\xf1\xc4\xd8\xd3\xc6\x95E\x19'h\xc0\x89\xf1\x08g\xa3\x9a\xa9\xf51RF\xc2\x1f\xe5a\xac\x83M\xc9\x0b\x80\x85\x1b\xcf\xb6f\xcc" |>>>>
有时sniff 会像这样捕获ARP 数据包:
>>> a=sniff(count=1,filter="tcp and host 192.168.10.55 and port 14010")
>>> a
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:1>
>>> a[0]
<Ether dst=ff:ff:ff:ff:ff:ff src=00:22:07:2c:53:97 type=0x806 |<ARP hwtype=0x1 ptype=0x800 hwlen=6 plen=4 op=who-has hwsrc=00:22:07:2c:53:97 psrc=192.168.1.178 hwdst=ff:ff:ff:ff:ff:ff pdst=192.168.1.179 |<Padding load='\x00\x07\x00\x00\x00\x00\x00\x00p\x00\x00\x00\x00\x00\x01\x14\x00\x00' |>>>
我的过滤器中是否缺少某些内容?我怎样才能避免这个问题?
【问题讨论】:
-
大胆猜测:你运行 scapy 的机器上是否有任何异常的网络接口?我正在考虑虚拟机(例如 Virtualbox 或 VMWare)接口、tun/tap 等。如果您将
iface=eth0(或任何您的主以太网接口被调用)添加到sniff参数列表,它是否有效?请注意,有些 TCP 数据包可以归类到Other下,因此请使用a.summary()而不是a来检查结果。 -
@Wintermute 我用过
iface="eth0",但总是遇到同样的问题 -
您是否安装了
tcpdump?另外,scapy -d是否给出任何警告? -
@Wintermute 我已经安装了 tcpdump,并且我让 wireshark 并行运行
-
@Wintermute
scapy -d仅返回 1 个警告:WARNING: No route found for IPv6 destination :: (no default route?)
标签: python linux networking tcp scapy