wifi抓包分析.pcapng

wifi抓包分析过滤条件.txt

Radiotap Header v0, Length 18

wifi抓包-radiotap-header

0000   00 00 12 00 2e 48 00 00 00 02 6c 09 a0 00 d4 00
0010   00 00
Radiotap Header v0, Length 18
    Header revision: 0
    Header pad: 0
    Header length: 18
    Present flags
    Flags: 0x00
    Data Rate: 1.0 Mb/s
    Channel frequency: 2412 [BG 1]
....

radiotap.h

struct ieee80211_radiotap_header {
	uint8_t it_version;
	uint8_t it_pad;
	uint16_t it_len;
	uint32_t it_present;
};

其中第一个字段it_version表示版本号,当前为0。
第二个字段it_pad没有使用,仅仅是为了结构体对齐。(但是协议里也有这个字段呀?)
第三个字段it_present表示长度,包括了radiotap头部和数据两部分。此设计的好处在于,如果不需要了解radiotap,则可以跳过直接到ieee802.11头部。——半个月前写抓包程序时,还不了解radio,就是直接跳过的。
第四个字段it_present表示radiotap数据的位掩码。radiotap的数据紧跟其头部。当其中的位掩码为true时,表示有对应的数据,可以认为每一比特表示一种类型。比如bit5为1表示有通道数据,则可以获取到信号强度。反之就是没有对应的数据。因此radiotap的长度其实是不固定的。bit31为1表示还有多个it_present。不过目前笔者还没有碰到此情况,没有深入了解。

802.11 数据帧

802.11基本的数据帧

IEEE 802.11 Probe Request, Flags: ……..

wireshark-wifi抓包

0000   40 00 00 00 ff ff ff ff ff ff f0 79 60 c4 33 e3
0010   ff ff ff ff ff ff 40 58
/*
 802.11 data frame from AP
      ,-------------------------------------------------------------------.
Bytes |  2   |  2   |    6    |    6    |    6    |  2   | 0..2312 |   4  |
      |------|------|---------|---------|---------|------|---------|------|
Desc. | ctrl | dura |  DA/RA  |   TA    |    SA   | Sequ |  frame  |  fcs |
      |      | tion | (BSSID) |	 		|	 	  | ence |  data   |      |
      `-------------------------------------------------------------------'
Total: 28-2340 bytes
*/

struct ieee80211_header_data {
	u16 frame_ctl;
	u16 duration_id;
	u8 addr1[6];
	u8 addr2[6];
	u8 addr3[6];
	u16 seq_ctrl;
};

帧控制 2_bytes+ 持续时间 2_bytes + BSSID 2_bytes + TA(发送端地址) 2_bytes + SA(该帧的来源地址) 2_bytes + ……

IEEE 802.11 Probe Request, Flags: ........
    Type/Subtype: Probe Request (0x0004)
    Frame Control Field: 0x4000

    .000 0000 0000 0000 = Duration: 0 microseconds
    Receiver address: Broadcast (ff:ff:ff:ff:ff:ff)
    Destination address: Broadcast (ff:ff:ff:ff:ff:ff)
    Transmitter address: Apple_c4:33:e3 (f0:79:60:c4:33:e3)
    Source address: Apple_c4:33:e3 (f0:79:60:c4:33:e3)
    BSS Id: Broadcast (ff:ff:ff:ff:ff:ff)
    
    .... .... .... 0000 = Fragment number: 0
    0101 1000 0100 .... = Sequence number: 1412(0x4058)