You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cmd环境运行scapy调用sniff()函数卡死无响应问题求解

Scapy sniff() 函数无响应问题原因及解决方案

核心原因

  • 流量匹配失败:sniff(count=2)默认无超时设置,会永久阻塞直到捕获到2个符合规则的数据包,如果当前监听网卡无符合要求的流量产生,就会出现CMD卡死无法操作的情况
  • 网卡权限不足:Windows平台下scapy抓包依赖Npcap/WinPcap驱动,仅用管理员身份启动CMD缺少对应驱动支持时,无法读取网卡数据包,也会进入永久阻塞状态
  • 网卡匹配错误:默认监听全部网卡时,部分虚拟网卡/专用网卡无流量产生或限制抓包权限,也会导致抓包逻辑无法完成

解决方法

增加超时参数避免永久阻塞

调用sniff()时添加timeout参数设置最大等待时长,超时后无论是否抓到足够数量的包都会自动退出:

# 示例:最长等待10秒,满足抓到2个包或10秒超时任一条件即返回
packets = sniff(count=2, timeout=10)

指定监听网卡

先查看当前设备可用网卡列表,指定有正常流量的网卡进行监听:

  1. 在scapy交互界面执行show_interfaces(),获取所有网卡的名称、序号信息
  2. 调用sniff()时通过iface参数指定目标网卡:
# 示例:指定WLAN网卡抓包,替换为你实际需要监听的网卡名称
packets = sniff(count=2, iface="WLAN", timeout=10)

补充安装抓包驱动

Windows平台下需要额外安装Npcap驱动才能正常使用scapy抓包能力:

  1. 卸载设备上已安装的旧版WinPcap
  2. 安装最新版Npcap,安装过程中勾选「WinPcap API兼容模式」选项
  3. 重启CMD后重新运行抓包代码即可

主动触发测试流量

启动抓包后手动触发网络请求,比如执行ping baidu.com命令、打开浏览器访问任意网页,确保目标网卡有流量经过,让sniff()可以快速捕获到足够的数据包完成执行。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:15:03