【发布时间】:2016-08-01 13:58:54
【问题描述】:
我想在SystemA 的接口上监听数据包。因为看起来我看不到绝大多数传入的数据包,所以我以最简单的形式使用了scapy:
import scapy.all as scapy
def filtre(p):
if p.haslayer(scapy.IP):
print(p[scapy.IP].src)
# Disable scapy verbosity
scapy.conf.verb = 0
scapy.sniff(iface="eth0", prn=filtre, store=0)
这是在SystemA 上运行的,并将输出发送到文件中。
同时,我跑
-
tcpdumpSystemA和SystemB -
nmap SystemA -P0SystemB
我们的想法是查看在nmap 会话期间有多少数据包离开SystemB 并到达SystemA。结果是
- 根据两个
tcpdump,1000个数据包离开SystemB并到达SystemA - 但是只有大约 150 到 200 个数据包,
SystemB的源 IP 由scapy在SystemA上注册
我做了几个测试,有tcpdump 会话和没有(他们没有改变结果 AFAICT),并通过scapy 获得不同数量的数据包 - 在 150-200 范围内。
这是在 LAN 上,SystemB 是 debian,SystemA 是 RPi3。我可以预期一些数据包没有被注册,但不是 80% 到 90%。同时tcpdump 在两个系统上系统地注册了预期的 1000 个数据包。
我有什么遗漏吗?
编辑:50 个数据包(nmap SystemA -p1-50 -P0)的相同测试很好,scapy 注册了所有 50 个数据包。
【问题讨论】:
标签: python networking scapy