【发布时间】: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”过滤了??
【问题讨论】:
-
那些“位”是“字节”
-
啊。对,我只是打错了,但没有任何改变。