python的scapy库 通过 conf 获取的信息无内容
问题
如题,python代码scapy库 无法通过 conf 获取网卡等信息,也捕获不到数据包
出错代码为:
list_of_route = repr(conf.route).split('\n')[1:]
主要的问题出在conf.route没有任何具体信息
展现情况为:
- 运行代码时出现WARNING: No libpcap provider available ! pcap won’t be used
- 如果用print(conf.route)打印,只有 Network Netmask Gateway Iface Output IP Metric 这一些列表头而已,而没有列表内容
- 如果用print(conf.iface)打印,出现的是 Microsoft KM-TEST Loopback Adapter 这个回环适配器网卡,不会展示其他网卡
在 WARNING 里注意到了 libcap,Libpcap是Packet Capture Libray的英文缩写,即数据包捕获开源的C函数库,用于捕获网卡数据或分析pcap格式的抓包报文。于是定位问题出在这个库
正常的conf是什么样的
查找资料,有人介绍:“Lib/site-packages/scapy/config.py下有一个Conf类,主要存储了scapy最主要的一些配置,比如scapy版本、主题颜色、网卡、路由、是否使用npcap、可以在scapy交互环境中使用哪些命令等。在scapy交互环境中可以直接输入conf来查看相应的内容。”
参考:https://blog.csdn.net/austin1000/article/details/100042405
conf本质是Conf类的实例:
命令 | 作用 |
---|---|
conf | 显示conf所有配置 |
conf.iface | 主网卡 |
conf.route | 获取主路由 |
conf.commands | 可在交互环境中使用的命令集合 |
lsc() | 同conf.commands |
print(conf.route)正常情况下应该输出如下内容 |
Network Netmask Gateway Iface Output IP Metric
0.0.0.0 0.0.0.0 25.255.255.254 ZeroTier One Virtual Port 172.28.33.102 10034
0.0.0.0 0.0.0.0 10.11.91.254 Intel(R) Ethernet Connection (5) I219-V #2 10.11.91.161 25
10.11.91.0 255.255.255.0 0.0.0.0 Intel(R) Ethernet Connection (5) I219-V #2 10.11.91.161 281
10.11.91.161 255.255.255.255 0.0.0.0 Intel(R) Ethernet Connection (5) I219-V #2 10.11.91.161 281
10.11.91.255 255.255.255.255 0.0.0.0 Intel(R) Ethernet Connection (5) I219-V #2 10.11.91.161 281
127.0.0.0 255.0.0.0 0.0.0.0 Npcap Loopback Adapter 127.0.0.1 281
127.0.0.1 255.255.255.255 0.0.0.0 Npcap Loopback Adapter 127.0.0.1 281
很明显,找不到这些信息。
解决办法
解决办法很简单,安装一个wireshark软件,或者安装一个winpcap(在windows环境下),因为Windows平台需要安装 Winpcap 才能进行嗅探sniff
如果 wireshark 提示找不到网卡,使用管理员权限打开,它会自动初始化,这时就可以进行嗅探了。