在python 3.7.2中使用scapy 2.4.3(使用"pip install --pre scapy[complete]"
安装在pip上)
在scapy中使用sniff函数,iface
参数中输入的数据类型应该是什么?我使用了scapy.all.show_interfaces()
函数列出了已知的接口,这是输出:
INDEX IFACE IP MAC
13 Realtek PCIe GBE Family Controller 169.254.142.162 HewlettP:47:07:dc
10 Microsoft Wi-Fi Direct Virtual Adapter 169.254.246.19 Azurewav:80:86:ff
7 Realtek RTL8723DE 802.11b/g/n PCIe Adapter 192.168.0.7 Azurewav:80:86:ff
-1 [Unknown] Adapter for loopback traffic capture None ff:ff:ff:ff:ff:ff
当我将"Realtek PCIe GBE Family Controller"
放入嗅探函数中时,没有"scapy.error.Scapy_Exception: Interface is invalid (no pcap match found) !"
错误,因此我知道该接口是有效的。但是,我收到此错误:AttributeError: 'str' object has no attribute 'is_invalid'
。如果将iface
属性更改为scapy.all.ifaces.dev_from_index(-1)
,则错误为OSError: exception: access violation reading 0x00000000000002A8
。 iface数据类型必须是什么才能正确解析并起作用?
答案 0 :(得分:1)
请参见https://stackoverflow.com/a/55093154/5459467和https://stackoverflow.com/a/58793945/5459467。
您将需要使用IFACES
util来访问NetworkInterface对象,而不是其名称。
如果这不能解决问题,请确保已安装最新版本的npcap,并尝试使用其他接口(可能不是-1)。
答案 1 :(得分:0)
它是一个Python str
,包含接口名称。
Linux:
在控制台中使用以下命令:ip link
作为名称
该值的示例为iface = "eth0"
或iface = "wlan0"
查看文档:{{3}}