【发布时间】:2016-07-20 18:05:52
【问题描述】:
我正在用 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)时,当我连接到一些 wi-fi 时 - 捕获了很多数据包(没有一个是 Beacon)。 WireShark 在我的 Mac (El Capitan) 上以 Monitor 模式 (airport en0 sniff 1) 显示 RadioTap Headers,但是此脚本在 Monitor 模式下不产生任何输出。
有人可以帮我理解这里出了什么问题吗? TIA :)
【问题讨论】:
-
当你中断
sniff()调用时,你应该得到一个PacketList对象返回。是空的吗? -
@皮埃尔:谢谢你的回复。是的,脚本在监控模式下继续运行,没有错误或数据包列表。
-
如果您同时运行带有
sniff(iface='en0', prn=lambda p: p.summary())的Scapy 和Tcpdumptcpdump -ni en0,您能否“看到”带有Tcpdump 的数据包,而Scapy 不会显示这些数据包? -
是的,这正在发生。我无法弄清楚这一点并放弃了,只是切换到 ubuntu 并且一切正常。我认为这可能是 Mac El Capitan 的问题。
标签: python wifi monitor scapy sniffer