【问题标题】:beacon frame captured by libpcap is something strangelibpcap 捕获的信标帧有些奇怪
【发布时间】:2013-11-29 16:54:35
【问题描述】:

我使用库 libpcap(Ubuntu, c) 捕获了信标帧

我将 wlan 模式更改为通过以下函数调用进行监控和捕获

// 3000 is large enough number for test
pcd = pcap_open_live(dev,3000,PROMISCUOUS,-1,errbuf)  
// filter with "wlan type mgt subtype beacon"    
pcap_compile(pcd,&bpg,"wlan type mgt subtype beacon",1,PCAP_NETMASK_UNKNOWN)
pcap_setfilter(pcd, &bpg)

接下来是packet_view

void packet_view(
    unsigned char *user,
    const struct pcap_pkthdr *h,
    const unsigned char *p
){
    int len;
    len = 0;

    printf("PACKET\n");
    while(len < h->len) {
        printf("%02x ", *(p++));
        if(!(++len % 16))
            printf("\n");
    }
    printf("\n");
    return ;
}

我得到了以下结果(只是最重要的 32 位)

00 00 12 00 2e 48 00 00 00 02 6c 09 a0 00 bb 01 
00 00 80 00 00 00 ff ff ff ff ff ff 00 08 9f bf 

但是...实际上信标帧必须以“08”位开始 因为信标帧的协议版本 = 00 type = 00 and subtype = 1000 => 00001000(08)

我得到数据包以 00 开头的原因是什么?虽然我用“wlan type mgt subtype beacon”过滤了??

【问题讨论】:

  • 那些“位”是“字节”
  • 啊。对,我只是打错了,但没有任何改变。

标签: c linux libpcap wifi


【解决方案1】:

您错过了一个 pcap 调用 - 对 pcap_datalink() 的调用。

除非pcap_datalink() 返回DLT_IEEE802_11,否则数据包以 802.11 标头开头。例如,如果它返回DLT_IEEE802_11_RADIO,则数据包以radiotap header 开头,后面有一个802.11 标头;这看起来像你的数据包有什么。

有关pcap_datalink() 可以返回的值以及出现在 pcap 和 pcap-ng 文件中的值的信息,请参阅 the tcpdump.org link-layer header types page

【讨论】:

  • 非常感谢,pcap_datalink() 返回 IEEE802_11_RADIO,从开始 18 字节后我终于找到了我的信标帧!
  • 不要将 18 硬连接到您的程序中;相反,如果链路层类型是DLT_IEEE802_11_RADIO,则从radiotap 头中获取长度(注意它是小端,而不是大端!)并跳过那么多字节。不保证 Radiotap 标头具有任何特定的固定长度。
  • 我在 C 中使用我自己的 pcap 代码使用两个不同的适配器来嗅探信标帧。其中一个适配器 D-LINK 无法“真正”监控模式,但通过一些努力它可以使用自定义 linux 驱动程序听到信标帧:)。现在另一个,TP-LINK WN722N,可以进入监控模式,但我没有设法使用我自己的代码嗅探信标帧(我只能通过wireshark看到信标)。但是您对“little-endian...big endian”的小评论挽救了一天!谢谢!!!
【解决方案2】:

将您的过滤器设置为 “链接 [0] == 0x80” 为我工作!

因为显然 https://wiki.wireshark.org/CaptureFilters

在没有信标的情况下捕获 WLAN 流量: 链接[0] != 0x80

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2018-01-17
    相关资源
    最近更新 更多