gpt4 book ai didi

c - libpcap 捕获的信标帧有些奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:53 25 4
gpt4 key购买 nike

我用库 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”开头因为信标帧的协议(protocol)版本 = 00 类型 = 00 和子类型 = 1000 => 00001000(08)

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

最佳答案

您缺少一个 pcap 调用 - 对 pcap_datalink() 的调用。

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

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

关于c - libpcap 捕获的信标帧有些奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com