我正试图通过WiFi数据包获得RSSI或信号强度。 我还希望来自“WiFi探测请求”的RSSI(当有人正在搜索WiFi热点时)。
我设法从kismet日志中看到它,但这只是为了确保它是可能的 - 我不想一直使用kismet。
对于'全时扫描',我正在使用scapy。有谁知道我在哪里可以找到RSSI或信号强度(以dBm为单位)从scapy嗅到的数据包?我不知道整个数据包是如何构建的 - 并且有很多'十六进制'值,我不知道如何解析/解释。
我在两个接口上嗅探 - wlan0(检测到某人连接到我的热点时)和mon.wlan0(检测到有人在搜索热点时)。 我使用的硬件(WiFi卡)基于Prism芯片组(ISL3886)。然而,使用Kismet的测试是在Atheros(AR2413)和Intel iwl4965上进行的。
EDIT1:
看起来我需要以某种方式访问存储在PrismHeader中的信息: http://trac.secdev.org/scapy/browser/scapy/layers/dot11.py 第92行?
有人知道如何输入这些信息吗? packet.show()和packet.show2()不显示此Class / Layer
中的任何内容EDIT2:
在进行了更多挖掘之后,看起来界面设置不正确,这就是为什么它不会收集所有必要的标题。 如果我运行kismet,然后使用scapy从该接口嗅探数据包,则数据包中会有更多信息:
###[ RadioTap dummy ]###
version= 0
pad= 0
len= 26
present= TSFT+Flags+Rate+Channel+dBm_AntSignal+Antenna+b14
notdecoded= '8`/\x08\x00\x00\x00\x00\x10\x02\x94\t\xa0\x00\xdb\x01\x00\x00'
...
现在我只需要在不使用kismet的情况下正确设置界面。
答案 0 :(得分:3)
总结:
信号强度不可见,因为设置'监控模式'的方式有问题(并非所有标头都被嗅探器传递/解析)。此监视器界面由hostapd创建。
现在我在接口上设置监控模式,使用airmon-ng - tcpdump,scapy显示theese额外标题。
编辑:使用scapy 2.4.1+(或github dev版本)。最新版本现在正确解码«notdecoded»部分
答案 1 :(得分:3)
这是一个有价值的scapy扩展,它改进了scapy.layers.dot11.Packet
对当前未解码字段的解析。
https://github.com/ivanlei/airodump-iv/blob/master/airoiv/scapy_ex.py
只需使用:
import scapy_ex
并且:
packet.show()
它看起来像这样:
###[ 802.11 RadioTap ]###
version = 0
pad = 0
RadioTap_len= 18
present = Flags+Rate+Channel+dBm_AntSignal+Antenna+b14
Flags = 0
Rate = 2
Channel = 1
Channel_flags= 160
dBm_AntSignal= -87
Antenna = 1
RX_Flags = 0
答案 2 :(得分:2)
由于某种原因,数据包结构已发生变化。现在dBm_AntSignal是未解码的第一个元素。
我不是100%确定此解决方案,但我使用sig_str = -(256 - ord(packet.notdecoded[-2:-1]))
来获取第一个元素,并且我得到的值似乎是dBm_AntSignal
。
我正在OpenWRT
使用TP-Link MR3020
进行extroot和Edward Keeble Passive Wifi Monitoring项目并进行一些修改。
我使用scapy_ex.py,我有这个信息:
802.11 RadioTap
version = 0
pad = 0
RadioTap_len= 36
present = dBm_AntSignal+Lock_Quality+b22+b24+b25+b26+b27+b29
dBm_AntSignal= 32
Lock_Quality= 8
答案 3 :(得分:1)
如果有人仍然存在相同的问题,我想我已经找到了解决方法:
我相信这是RSSI值的正确选择:
sig_str = -(256-ord(packet.notdecoded[-3:-2]))
这是针对噪音级别的:
noise_str = -(256-ord(packet.notdecoded[-2:-1]))
答案 4 :(得分:0)
事实上它说“RadioTap”表明该设备可能提供Radiotap headers,而不是Prism标题,即使它有一个Prism芯片组。 The p54 driver似乎是“SoftMAC驱动程序”,在这种情况下,它可能会提供Radiotap标头;你使用的是p54驱动程序还是旧的prism54驱动程序?
答案 5 :(得分:0)
我有类似的问题,我使用airmon-ng设置了监控模式,我可以在tcpdump中看到dBm级别,但每当我尝试sig_str = -(256-ord(packet.notdecoded[-4:-3]))
时,我得到-256,因为返回的值来自于0的未解码。数据包结构看起来像这样。
version = 0
pad = 0
len = 36
present = TSFT+Flags+Rate+Channel+dBm_AntSignal+b14+b29+Ext
notdecoded= ' \x08\x00\x00\x00\x00\x00\x00\x1f\x02\xed\x07\x05
.......