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

无法激活pcap处理程序:Python3嗅探TP-LINK网卡报错求助

问题核心

使用Python3+Scapy对型号为0bda:b711的TP-LINK网卡进行802.11帧嗅探时,触发OSError: Could not activate the pcap handler错误,目标是获取dBm_AntSignal和dBm_AntNoise字段,相同代码可在MacBook正常运行。

解决方案

1. 手动切换网卡到监听模式(Linux必做)

MacOS会自动处理监听模式切换,但Linux下需要手动操作:

  • 关闭网卡:
    sudo ip link set wlp1s1 down
    
  • 设置监听模式:
    sudo iw dev wlp1s1 set type monitor
    
  • 重新启用网卡:
    sudo ip link set wlp1s1 up
    
  • 验证模式:执行iw dev wlp1s1 info,确认输出中type字段为monitor

2. 修正Scapy代码参数

原代码存在两个关键问题:

  • monitor='True'是字符串类型,Scapy需要布尔值True
  • 强制启用conf.use_pcap可能与Linux系统的libpcap兼容性冲突

修改后的代码:

from scapy.all import *
from scapy.layers.dot11 import Dot11

def callBack(pkg):
    if pkg.haslayer(Dot11):
        if pkg.type == 0 and pkg.subtype == 8:
            # 增加字段存在性判断,避免部分帧缺失字段导致报错
            if hasattr(pkg, 'dBm_AntSignal'):
                print("dBm_AntSignal=", pkg.dBm_AntSignal)
            if hasattr(pkg, 'dBm_AntNoise'):
                print("dBm_AntNoise=", pkg.dBm_AntNoise)

# 必须以sudo权限运行脚本
sniff(iface='wlp1s1', monitor=True, prn=callBack)

3. 排查libpcap与权限问题

  • 更新libpcap到最新版本(Debian/Ubuntu):
    sudo apt update && sudo apt install libpcap-dev
    
  • 必须使用sudo运行脚本,普通用户无网卡嗅探权限,会直接触发pcap激活失败
  • 用tcpdump验证网卡可用性:
    sudo tcpdump -i wlp1s1 -I
    
    如果tcpdump能正常捕获帧,说明libpcap工作正常,问题出在Scapy配置

4. 适配0bda:b711芯片驱动

该网卡基于Realtek RTL8188CUS芯片,部分默认驱动对监听模式支持不完善:

  • 安装适配驱动(Ubuntu 20.04+):
    sudo apt install rtl8188fu-dkms
    
  • 若仍有问题,可编译该芯片的最新开源驱动替换默认版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:05:30