Windows11下Scapy发送数据包时无法设置混杂模式报错求助
解决Windows11下Scapy设置混杂模式失败的OSError(31)问题
问题情况
Windows11系统中,以管理员权限启动Scapy交互模式,发送Ethernet层数据包时触发以下错误:
OSError: \Device\NPF_{21330BA1-83F1-4778-B42D-89E43A29CE77}: failed to set hardware filter to promiscuous mode: Ein an das System angeschlossenes Gerät funktioniert nicht. (31)
执行代码:
b = Ether(dst = "ff:ff:ff:ff:ff:ff") send(b)
可行解决方案
1. 用对发送函数+关闭混杂模式
你发送的是Ethernet层帧,需使用sendp()而非send()——send()是针对IP层数据包的专用函数。同时强制关闭混杂模式,避免触发硬件层面的设置错误:
b = Ether(dst = "ff:ff:ff:ff:ff:ff") # 替换为你的LAN网卡名称,可通过show_interfaces()命令查看所有可用网卡 sendp(b, promisc=False, iface="Realtek PCIe GbE Family Controller")
2. 重置NPF服务
Scapy依赖的NPF(网络数据包过滤)服务可能出现异常,执行以下步骤重置:
- 以管理员身份打开命令提示符
- 输入
net stop npf停止服务 - 再输入
net start npf重新启动服务
3. 更新网卡驱动
错误码31明确提示设备无法正常工作,大概率是网卡驱动与Windows11兼容性问题:
- 打开「设备管理器」→ 找到「网络适配器」分类下的LAN网卡
- 右键选择「更新驱动程序」,优先安装网卡厂商官网提供的最新驱动版本
4. 替换WinPcap为Npcap
WinPcap已停止维护,对Windows11的支持存在缺陷,建议更换为Npcap:
- 先卸载电脑中已安装的WinPcap
- 下载Npcap官方安装包,安装时勾选「Install Npcap in WinPcap API-compatible Mode」,确保Scapy可以兼容调用
5. 检查网卡混杂模式支持
部分轻薄本的集成网卡可能本身不支持混杂模式,或需要在BIOS中手动开启:
- 查询你的网卡型号参数,确认是否支持混杂模式
- 重启电脑进入BIOS界面,查找「Network」相关设置选项,确认是否有开启混杂模式的开关
内容的提问来源于stack exchange,提问作者user13021032
相关产品推荐
相关产品推荐

