最近参照网上的 scapy 库的使用方法写了一个用于抓取所有数据包的脚本,一开始一切正常,但是后来为了测试没有安装驱动的情况下可以输出需要安装驱动,而不是直接报错,于是把 npcap 驱动反复安装卸载多次,就遇到了这个问题:
电脑在连着无线网的时候脚本就抓不到数据包,但是连着有线网就可以抓到。与此同时,wireshark 却一切正常,无论是无线还是有线都可以抓到包。
之后尝试了
- 用 ccleaner 清理注册表;
- 安装 winpcap 驱动替换 npcap ;
- 自己去注册表搜索 npcap 字样的项,并通通删除;
- 去 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)