【问题标题】:obtain signal strength from packets on Mac OSX with Scapy使用 Scapy 从 Mac OSX 上的数据包中获取信号强度
【发布时间】:2019-01-06 19:51:03
【问题描述】:

背景

我正在尝试从收到的数据包中获取 RSSI。我知道它们在 Radiotap 标头中可用,但不幸的是,我无法嗅探其中包含 Radiotap 标头的任何数据包。

我确实从scapy-rssi 中找到了parsePacket 方法,它似乎只过滤掉包含带有RSSI 的Radiotap 标头的数据包(如果我没记错的话)。

我在以下代码中使用了该方法:

def parsePacket(pkt):
  if pkt.haslayer(scapy.all.Dot11):
    if pkt.addr2 is not None:
      # check available Radiotap fields
      field, val = pkt.getfield_and_val("present")
      names = [field.names[i][0] for i in range(len(field.names)) if (1 << i) & val != 0]
      # check if we measured signal strength
      if "dBm_AntSignal" in names:
        # decode radiotap header
        fmt = "<"
        rssipos = 0
        for name in names:
          # some fields consist of more than one value
          if name == "dBm_AntSignal":
            # correct for little endian format sign
            rssipos = len(fmt)-1
          fmt = fmt + self.radiotap_formats[name]
        # unfortunately not all platforms work equally well and on my arm
        # platform notdecoded was padded with a ton of zeros without
        # indicating more fields in pkt.len and/or padding in pkt.pad
        decoded = struct.unpack(fmt, pkt.notdecoded[:struct.calcsize(fmt)])
        return pkt.addr2, decoded[rssipos]

def packetCallback(pkt):
  parsed = parsePacket(pkt)
  if parsed:
    print(parsed)

sniff("en1", prn=packetCallback)  #en1 is a wlan interface on my OSX

不幸的是,函数没有输出任何东西 - 因此没有数据包包含 Radiotap 标头。我尝试使用sniff("en1mon", prn=packetCallback) 激活监控模式,但没有任何进展。


主要问题:

我还发现,Mac OSX 的 en1 接口无法访问 Dot11 标头的某个地方,这是真的吗?如果是这种情况,那么如何从 OSX 上的数据包中获取 RSSI 值?

谢谢!

【问题讨论】:

    标签: macos wifi scapy rssi


    【解决方案1】:

    几件事:

    然后您可能想直接使用packet[Radiotap].dBm_AntSignal,如果不是None,它将是一个负值,而不是整个parsePacket。

    最后,在 OSX 上,您可能需要使用 sniff([...], monitor=True) 以确保正确接收原始数据包

    【讨论】:

    • 哇,我没想到它会起作用,因为据我所知 en1 接口不会读取 Radiotap 标头。但现在它完美地工作了!是因为 Scapy 启用了对 en1 接口的支持吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-03-18
    • 2020-06-04
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2016-10-15
    • 2018-12-22
    • 2019-12-23
    相关资源
    最近更新 更多