【问题标题】:Scapy 2.7.3 in Monitor Mode监控模式下的 Scapy 2.7.3
【发布时间】: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 和Tcpdump tcpdump -ni en0,您能否“看到”带有Tcpdump 的数据包,而Scapy 不会显示这些数据包?
  • 是的,这正在发生。我无法弄清楚这一点并放弃了,只是切换到 ubuntu 并且一切正常。我认为这可能是 Mac El Capitan 的问题。

标签: python wifi monitor scapy sniffer


【解决方案1】:

这是特定于 Mac 的问题。你确实是对的,你想为这种类型的数据捕获信标帧。这里的问题是,一旦 airport 命令完成运行,您的界面就会返回到其标准托管模式,因此当您运行 scapy 脚本时,您的 wifi 接口不会处于监控模式。据我所知,Mac 没有可以打开并让卡处于监控模式的本机命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2014-04-29
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多