我正在尝试在Ubuntu上使用scapy做一个简单的wifi嗅探器,但是当我尝试运行该应用程序时遇到了以下问题:
Undefined variable 'Dot11Beacon'
Undefined variable 'Dot11Elt'
现在,我尝试在以下教程中运行代码:https://www.shellvoide.com/python/how-to-code-a-simple-wireless-sniffer-in-python/
并且由于上述错误,简单的方法不起作用。我正在使用通过pip安装的Python 3和最新版本的scapy。
即使与本教程中的相同,这也是我正在使用的部分代码:
from scapy.all import *
sniff(iface=interface, prn=process_packet)
def process_packet(pak):
if pak.haslayer(Dot11Beacon):
if pak.getlayer(Dot11).addr2 not in F_bssids:
F_bssids.append(pak.getlayer(Dot11).addr2)
ssid = pak.getlayer(Dot11Elt).info
if ssid == '' or pak.getlayer(Dot11Elt).ID != 0:
print("Hidden Network Detected")
print("Network Detected: %s" % (ssid))
如果编译器说未定义变量,请在不使用*
的情况下在库中对其进行定义。可以使用from scapy.all import (Dot11,Dot11Beacon,Dot11Elt)
代替from scapy.all import *
您遇到的问题与https://stackoverflow.com/a/53402404/5459467在PyCharm和Visual Studio中也是如此。看看我在那里的答案。
解决方法是从相关的scapy文件中导入所需的任何内容,而无需全部使用。它比较干净,但是需要更长的时间。或者,如果您不想要干净的东西,也可以在IDE中使用“添加例外”。