Scapy的sniff函数无法捕获任何接收数据包该如何解决?
Scapy sniff函数无捕获数据包问题解决思路
- 优先确认运行权限:抓包属于特权操作,Windows环境下需要以管理员身份运行终端/VSCode,Linux/macOS环境下需要加sudo执行脚本。如果近期调整过账户权限、更新了系统安全策略,大概率是权限失效导致默认状态下无法读取网卡数据包。
- 手动指定网卡排查默认接口异常:先打印当前Scapy识别的所有网卡列表,确认默认接口是否有变动,执行代码:
输出列表中找到你需要监听的网卡的名称/索引,再传入sniff的iface参数测试:from scapy.all import show_interfaces show_interfaces()
近期如果更新过网卡驱动、新增了虚拟网卡(比如VPN、虚拟机网卡),会导致Scapy的默认监听接口指向了无流量的虚拟网卡。from scapy.all import sniff # 替换为你查到的网卡名称,比如Windows下是"以太网",Linux下是"eth0" sniff(prn=lambda x:x.show(), timeout=5, iface="你的网卡名称") - 检查系统防火墙/安全软件拦截:近期如果更新了防火墙规则、安装了新的安全软件,可能会拦截Scapy的数据包捕获请求,临时关闭防火墙和第三方安全软件后再测试。
- 检查底层抓包依赖是否正常:Scapy在Windows下依赖WinPcap或Npcap,Linux下依赖libpcap,近期如果更新过这些依赖或者系统升级导致依赖不兼容,重新安装对应兼容版本的依赖包即可。
- 确认网络环境变动:如果近期切换了网络环境(比如从家用网切换到公司加密网络),部分加密网络下普通抓包工具无法捕获明文数据包,可以先尝试ping一个公网地址,同时运行抓包脚本,确认是否有ICMP包被捕获。
内容的提问来源于stack exchange,提问作者Lawrence13
相关产品推荐
相关产品推荐

