【问题标题】:Libpcap sniffing prolem for 802.11802.11 的 Libpcap 嗅探问题
【发布时间】:2013-07-22 09:51:32
【问题描述】:

我正在尝试在监控模式下嗅探 Wi-Fi 设备上的 802.11 数据包。 我得到错误的输出。 确认我必须使用链路层类型作为 DLT_IEEE_802_11_RADIO (127)。 我没有得到以太网的确切数据包格式。 我想从这些数据包中获取 MAC 地址和 RSSI 值。我正在用 C++ 编写代码。 我可以知道如何访问这些值吗?

【问题讨论】:

    标签: libpcap wifi


    【解决方案1】:

    DLT_IEEE_802_11_RADIO

    tcpdump.org link-layer header types page 表示LINKTYPE_IEEE802_11_RADIOTAP/DLT_IEEE802_11_RADIO

    LINKTYPE_IEEE802_11_RADIOTAP 127 DLT_IEEE802_11_RADIO Radiotap link-layer information 后跟 802.11 标头。

    链接到的页面描述了 radiotap 标头的外观。它有点复杂,所以你处理它的代码会有点复杂,尽管如果你想要的只是一个信号强度指示器,那会更容易做到。

    信号强度要么是strength in dBm,即decibels from 1 milliwatt,要么是strength in dB from some unspecified arbitrary reference point。这些都不是 802.11 规范中提到的“RSSI”,因为它们可能是负数,但它们可能比 802.11 规范中提到的“RSSI”更有用,因为所有 802.11“RSSI”让你做的就是比较无论一个信号比另一个信号强还是弱,您无法确定多少它强或弱或信号的功率有多大。

    radiotap 标头之后是 802.11 标头。要查找 MAC 地址,请参阅the 802.11 standard 的第 8 节。请注意,许多帧中有两个以上的 MAC 地址,因为主机不一定将数据包直接发送到其他主机,它们可能会将它们发送到将数据包转发到目标主机的接入点。

    【讨论】:

    • 谢谢你,哈里斯。这对我帮助很大。我已经完成了代码。似乎只出现了一个问题,MAC 的一些位被改变了。例如。 MAC 80:AA:FC:89:03:BA 显示为 80:A8:FC:89:03:BA。是否有可能从 WiFi 数据包中获取错误位?
    • "是否有可能从 WiFi 数据包中获取错误位?"是的,如果您在监控模式下拍摄;在监控模式下,适配器可能会在收到之前向主机提供已损坏的数据包(可能是您的微波炉:-)),即使由于损坏,CRC 显示它们已损坏. radiotap 标头可能表明数据包的 CRC 无效,Wireshark 也可能这样做。
    • 我没有使用 Wireshark。我正在开发自己的 API。我该如何做CRC?是否有任何 libpcap 的 API 将只为我提供正确的数据包
    • "我该如何做 CRC?"对于 radiotap 标头,请参见 the radiotap Web sitethe radiotap Flags field,以及它的“帧失败 FCS 检查”标志。如需自行检查,请参阅 Wireshark 源代码,其中包括检查以太网、Wi-Fi 等中使用的 CRC-32 的功能。
    • "是否有任何 libpcap 的 API 可以只为我提供正确的数据包?"不,没有。
    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多