我试图在监控模式下嗅探 Wi-Fi 设备上的 802.11 数据包。我得到错误的输出。确认我必须使用链路层类型作为 DLT_IEEE_802_11_RADIO (127)。我没有得到以太网的确切数据包格式。我想从这些数据包中获取 MAC 地址和 RSSI 值。我正在用 C++ 编写代码。我可以知道如何访问这些值吗?
问问题
1726 次
1 回答
0
DLT_IEEE_802_11_RADIO
tcpdump.org链接层标头类型页面说LINKTYPE_IEEE802_11_RADIOTAP
/ DLT_IEEE802_11_RADIO
:
LINKTYPE_IEEE802_11_RADIOTAP 127 DLT_IEEE802_11_RADIO Radiotap 链路层信息,后跟 802.11 标头。
链接到的页面描述了 radiotap 标头的外观。它有点复杂,所以你处理它的代码会有点复杂,尽管如果你想要的只是一个信号强度指示器,那会更容易做到。
信号强度可以是dBm为单位的强度,即1 毫瓦的分贝,或者是某个未指定的任意参考点的 dB 强度。这些都不是 802.11 规范中提到的“RSSI”,因为它们可能是负数,但它们可能比 802.11 规范中提到的“RSSI”更有用,因为所有 802.11“RSSI”让你做的就是比较无论一个信号比另一个信号强还是弱,您都无法确定它强或弱或信号的功率有多大。
在 radiotap 标头之后是 802.11 标头。要查找 MAC 地址,请参阅802.11 标准的第 8 节。请注意,许多帧中有两个以上的 MAC 地址,因为主机不一定将数据包直接发送到其他主机,它们可能会将它们发送到将数据包转发到目标主机的接入点。
于 2013-07-23T21:42:05.027 回答