我正在用scapy写一个简单的WiFi嗅探器:
from scapy.all import *
ap_list = []
def ssid(pkt):
print(pkt.show())
if pkt.haslayer(Dot11):
if pkt.type == 0 and pkt.subtype == 8:
if pkt.addr2 not in ap_list:
ap_list.append(pkt.addr2)
print("AP: %s SSID: %s" % (pkt.addr2, pkt.info))
sniff(iface='en0', prn=ssid)
其中en0是wi-fi接口。
我的目标是查看无线接入点的RSSI,噪声和SSID。当我运行这个脚本(从sudo或不是sudo),当我连接到一些Wi-Fi时 - 捕获了许多数据包(没有人是Beacon)。 WireShark在我的Mac(El Capitan)上以监控模式(机场en0嗅探1)显示RadioTap Headers,但是这个脚本在监控模式下不会产生输出。
有人可以帮我理解这里出了什么问题吗? TIA:)
答案 0 :(得分:1)
这是Mac特定的问题。您确实是对的,您想捕获此类数据的信标帧。这里的问题是,一旦airport命令完成运行,您的界面就会返回到其标准托管模式,因此,当您运行scapy脚本时,您的wifi界面就不会处于监控模式。据我所知,Mac没有本机命令可以打开并使卡处于监视模式。