You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Scapy sr1()函数未返回响应包问题求助(Windows10+Python3环境)

解决Scapy在Windows 10下sr1()捕获不到ICMP响应的问题

我之前在Windows 10环境用Scapy的时候也碰到过一模一样的问题——Wireshark明明看到响应包回来了,但sr1就是卡在那不动,给你几个亲测有效的排查方向:

1. 必须以管理员身份启动Scapy-Shell

Windows对网络抓包的权限限制很严,普通用户权限下Scapy只能发包,没法正常捕获返回的数据包。右键点Scapy-Shell的启动快捷方式,选**"以管理员身份运行"**,重新执行你的命令试试,这是最常见的解决办法。

2. 手动指定网卡接口

有时候Scapy会自动选到错误的网卡(比如你电脑有多个网卡,比如无线+有线),导致发包和收包不在同一个接口。先执行命令看一下所有网卡:

show_interfaces()

找到对应你当前10.0.0.x网段的网卡名称,然后发包时加上iface参数,同时记得加timeout避免无限等待:

p = IP(dst='10.0.0.138')/ICMP(type='echo-request')/Raw('Hello')
r = sr1(p, iface="你的网卡名称", timeout=5)

3. 检查Windows防火墙拦截

Windows防火墙可能把Scapy要接收的ICMP响应给拦了。你可以临时关闭防火墙测试一下,如果关闭后能正常收到响应,就去防火墙里加个规则:允许Python程序或者Scapy-Shell接收ICMP类型的数据包。

4. 升级Scapy到最新版本

旧版本的Scapy在Windows 10上可能有兼容性bug,用pip升级到最新版试试:

pip install --upgrade scapy

先从管理员权限这个方法开始试,大概率就能解决问题啦。

内容的提问来源于stack exchange,提问作者SomeOne

火山引擎 最新活动