我的程序正在发送自定义 802.11 帧以进行 WPA 握手,例如或authentication
。然而,操作系统会重新发送相同的数据包,并修改其 radiotapheader 并删除 FCS。来自 wireshark 的屏幕截图:association
acknowledgement
ack 和 auth 数据包的长度分别为 40 和 60 字节。然而,它们会被 Linux 操作系统自动重新发送。操作系统会修改数据包头,如下所示。这是原始的 radiotap 头标志:
这是修改后的标题,也是操作系统发送的标题。
它设置data retries
并TX
标记...因此,生成的报头大小缩小了 13...此外,它还删除了帧末尾的 4 字节帧校验序列,因此总共删除了 17 个字节,如 wireshark 图片中所示。现在,为什么我的操作系统通过修改其 radiotap 报头并可能将 TX 设置为失败(如下所示)来发送相同的数据包?我该如何防止这种情况?
这也是 wireshark 上重新发送的数据包之一。这是一个确认数据包,显示如下。我从发送数据包的同一适配器捕获这些数据包。
Frame 552: 23 bytes on wire (184 bits), 23 bytes captured (184 bits) on interface wlan1, id 0
Radiotap Header v0, Length 13
Header revision: 0
Header pad: 0
Header length: 13
Present flags
Present flags word: 0x00028004
Data Rate: 1.0 Mb/s
TX flags: 0x0001, Fail
data retries: 0
802.11 radio information
PHY type: 802.11b (HR/DSSS) (4)
Data rate: 1.0 Mb/s
[Duration: 176µs]
[Expert Info (Warning/Assumption): No preamble length information was available, assuming short preamble.]
[Preamble: 96µs]
IEEE 802.11 Acknowledgement, Flags: ........