我正在为无线网卡编写一个相当低级的驱动程序,虽然大多数规范都相当简单,但我还没有解决一个问题:
如果我的工作站处于省电模式,并且其接收器在 DTIM 帧之间关闭了较长时间(例如 10 秒),并且接入点在此期间重新启动,因此我的关联丢失,我该如何检测?
我知道最常见的情况是同步完全丢失,以至于我会错过一些信标,然后简单地回到 AP 搜索, 但如果幸运地我看到了信标, 有没有办法找出这是同一AP的新"实例"?
我能想到的
- 一个短(er)TIM 字段 - 但是我相信如果没有流量在等待,允许 AP 缩短 TIM 信息
- AP 时间戳意外更改。
- "到下一个 DTIM 的信标数量"字段意外更改.
作为一个完美主义者,我想知道是否有一种完全可靠的方法来检测AP已被重新启动,而不仅仅是整理线索。
我建议您查看收到的信标帧中的 TSF 和如果它与您期望的 TSF 差异太大,则发送 NULL 数据帧到 AP。如果 AP 重新启动,它应该以取消帧身份验证,原因为"从以下位置接收第 2 类帧"未经身份验证的 STA"。
我对该级别的无线网卡一无所知,但我会采取一种实用的路线,分析来自AP的通信,直到断开连接,以找到与典型关闭顺序匹配的模式; 例如,"没有更多的流量,DTIM同步突然丢失,然后是AP公告"。
在我的头顶上:也许可以查看Kismet的AP检测和分析代码,以获得一两个想法。我敢打赌其他人以前遇到过这个问题。
干杯!