Scapy sniff()不接受iface字符串

时间:2018-03-02 08:42:16

标签: python scapy packet-sniffers sniffing

在新安装Python2.7.14和scapy(版本git-archive.dev254ab6d5a)后,我无法将我的LAN卡定义为接口。只要iface = None,嗅探功能就可以了。如果我将iface分配给字符串,我会得到以下错误。对于此错误,我没有在谷歌上发现任何帖子:/。

代码:

#Import all necessary scapy functionality from ethernet Api
from Lib.IHR_EthApi import *
from Lib.IHR_GeneralApi import GeneralApi as SYS
from scapy.all import *

FullTrafficList = []
#show_interfaces()
scapy.all.sniff(lfilter=None, iface="Realtek PCIe GBE Family Controller", store=True, prn = lambda x: FullTrafficList.append(x), count=10, timeout= None)
SYS.IHR_print(str(FullTrafficList))

错误描述:

> Traceback (most recent call last):   File
> "c:\Users\Evgenij\Desktop\Desktop\Eth_Test_Dev\Code\Test.py", line 8,
> in <module>
>     scapy.all.sniff(lfilter=None, iface="Realtek PCIe GBE Family Controller", store=True, prn = lambda x: FullTrafficList.append(x),
> count=10, timeout= None)   File
> "C:\Python27\Lib\site-packages\scapy\sendrecv.py", line 708, in sniff
>     *arg, **karg)] = iface   File "C:\Python27\Lib\site-packages\scapy\arch\pcapdnet.py", line 198, in
> __init__
>     self.ins = open_pcap(iface, 1600, self.promisc, 100, monitor=monitor)   File
> "C:\Python27\Lib\site-packages\scapy\arch\windows\__init__.py", line
> 856, in open_pcap
>     if iface.ismonitor(): AttributeError: 'str' object has no attribute 'ismonitor'

2 个答案:

答案 0 :(得分:1)

我有几个小时同样的问题。这就是我为解决它而做的。

请确保您拥有最新版本的scapy和最新版本的npcap。安装npcap时,单击选项以打开监视器模式。我也在scapy文档网站上找到了这个

  

Winpcap / Npcap冲突

     

随着Winpcap变老,建议使用Npcap代替。 Npcap是Nmap项目的一部分。

     

如果您收到消息'Winpcap已安装在Npcap上',则表示您已经安装了winpcap和npcap版本,这是不推荐的。   您可以从Program Files中卸载winpcap,然后您将需要删除:

C:/Windows/System32/wpcap.dll
C:/Windows/System32/Packet.dll
  

如果您使用的是x64机器:

    C:/Windows/SysWOW64/wpcap.dll
    C:/Windows/SysWOW64/Packet.dll
  

改为使用npcap。 Winpcap卸载程序不会删除这些文件。

在我这样做之后,我使用

列出了接口
    show_interfaces()
    iface = raw_input("Enter the interface to sniff on: ")

将界面复制并粘贴到输入

答案 1 :(得分:0)

通过降级Wireshark版本解决了我的问题。但我想真正的问题是npcap(v0.98)和Python(v2.7.14)之间的兼容性。 不幸的是我不明白&#34; ismonitor = True&#34;的用法。参数,但如果它应该是兼容性问题,我们将很快阅读它:)