V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
EtherShark
V2EX  ›  Python

请教一下关于使用 Python 的 scapy 库通过 npcap 驱动抓包时遇到的无法抓取无线网卡流量的问题

  •  
  •   EtherShark · 2021-01-27 10:10:23 +08:00 · 1302 次点击
    这是一个创建于 1421 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近参照网上的 scapy 库的使用方法写了一个用于抓取所有数据包的脚本,一开始一切正常,但是后来为了测试没有安装驱动的情况下可以输出需要安装驱动,而不是直接报错,于是把 npcap 驱动反复安装卸载多次,就遇到了这个问题: 电脑在连着无线网的时候脚本就抓不到数据包,但是连着有线网就可以抓到。与此同时,wireshark 却一切正常,无论是无线还是有线都可以抓到包。
    之后尝试了

    1. 用 ccleaner 清理注册表;
    2. 安装 winpcap 驱动替换 npcap ;
    3. 自己去注册表搜索 npcap 字样的项,并通通删除;
    4. 去 system32 与 syswow64 目录下删除 Npcap 目录,与 wpcap.dll 和 packet.dll 文件,以及 drivers 目录下的 npcap.sys 和 npfs.sys 和 npf.sys 文件
      但是反复卸载重装后问题依然无法解决,只能抓取有线网卡的数据包,无法抓取无线网卡的数据包。 以下是代码:
    from scapy.all import *
    import time
    
    def countfun(packet):
        global n 
        n += 1
        print(n)
        
    if not IFACES.data:
        print("Need install npcap driver")
    else:
        print("Capturing...")
        n = 0
        dpkt = sniff(prn=countfun, count=0)
        capfile = time.strftime("%Y%m%d%H%M", time.localtime()) + ".pcap"
        print(n,"packets captured")
        if n != 0:
            wrpcap(capfile, dpkt)
            print("Saved in " + capfile)
    
    disk
        1
    disk  
       2021-01-27 16:08:27 +08:00
    。。。你有指定哪个网络接口吗
    EtherShark
        2
    EtherShark  
    OP
       2021-01-27 17:30:16 +08:00
    @disk 没有指定网络接口,我看 scapy 的 sniff()函数的介绍,如果不指定 iface 的话,默认是抓取所有网卡的数据包,而且在我反复卸载之前,也是可以抓到数据包的。并且相同的代码,放到另一台只有有线网卡的设备上,是可以正常捕获数据包的。

    另外,我下午找到的一个“解决方法”,通过迭代 IFACES.data.items() 获取到所有网卡名字,并放到 list 里,传给 sniff 的 iface 。

    目前的情况是,可以抓到数据包了,但是相比 wireshark 抓包的结果看,漏抓了数量巨大的数据包,基本上单位时间,能差出去 4-6 倍的数据包,导致抓到的结果完全不具备参考价值。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3014 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:22 · PVG 22:22 · LAX 06:22 · JFK 09:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.