Windows10下Scapy发送ICMP包报错:无法设置混杂模式如何解决?
解决Windows10下Scapy发送ICMP数据包的NPF驱动混杂模式错误
问题重现
执行以下Scapy代码发送ICMP请求时出现错误:
request_packet = IP(dst="www.google.com")/ICMP(type="echo-request") send(request_packet)
错误信息:
OSError: \Device\NPF_{5E5248B6-F793-4AAF-BA07-269A904D1D3A}: failed to set hardware filter to promiscuous mode: A device attached to the system is not functioning.
解决方案(Windows10有线网络环境)
以管理员权限运行脚本
Scapy操作网络接口需要系统管理员权限,右键点击终端/IDE,选择「以管理员身份运行」,再执行你的Python脚本。重启NPF服务
打开管理员权限的命令提示符,依次执行以下命令:net stop npf net start npf这会重置WinPcap的网络数据包过滤服务,解决临时的驱动异常。
重置有线网卡
打开「设备管理器」,找到「网络适配器」下的有线网卡,右键选择「禁用」,等待3-5秒后再右键选择「启用」,重置网卡的硬件状态。修改Scapy代码,指定网卡并关闭混杂模式
强制指定你的有线网卡,同时关闭混杂模式(不需要监听所有数据包时可以关闭),示例代码:from scapy.all import IP, ICMP, send, get_if_list # 先查看所有可用网卡名称 print(get_if_list()) # 替换成你的有线网卡名称,比如"以太网" target_iface = "以太网" request_packet = IP(dst="www.google.com")/ICMP(type="echo-request") send(request_packet, iface=target_iface, promisc=False)更新网卡驱动
打开「设备管理器」,检查有线网卡是否有黄色感叹号,若有则右键选择「更新驱动程序」,选择自动搜索更新,安装适配Windows10的最新网卡驱动。
内容的提问来源于stack exchange,提问作者Serket
相关产品推荐
相关产品推荐

