我一直在努力让OpenWRT路由器将一个WiFi探测请求记录到MySQL数据库(它为每个探测请求数据包存储MAC地址和RSSI信息以及其他特定路由器数据)。解析WiFi数据包(libpcap)
在研究了libpcap之后,我已经能够凑齐一个基本的小程序,它使用过滤器表达式('wlan subtype probe-req')在监视器接口(mon0)上简单地嗅探数据包,然后打印在十六进制的原始数据包。通过libpcap上的在线信息,这部分内容非常简单。
现在这里是我卡住的地方:如何解析WiFi数据包以检索我正在查找的信息(RSSI和源MAC地址)?
要说清楚,我并没有要求代码去做(尽管如果你想提供一些:D,我不会抱怨)。我只是在寻找一些指导,以便了解哪些字节是 - 哪些是WiFi分组路线图,如果您愿意的话。
有几个很好的教程来解析通过以太网进入的数据包,但我一直没有找到任何东西来帮助解析与WiFi有关的头文件。我认为这将是一个非常简单的过程 - 只需获取RSSI和源MAC的相关字节 - 但我再次无法找到哪个字节是哪个文档。
我知道这已经做过,但我会老实说:当通过tcpdump的源代码查看时,我完全失去了。
那么,有没有人知道如何解析WiFi数据包的好资源?
干杯
编辑:更具体回答
RSSI在RadioTap头(当然,在Linux它是)找到。使用radiotap-parser.c以及它所依赖的文件(可在与链接的文件相同的目录中找到)将RSSI拉出数据包非常简单。 如果有人在使用radiotap-parser.c函数时遇到问题,请随时与我联系。
由于radiotap头结构包含可变的无线头标头(it_len
)的长度,所以通过无线功能块功能可以非常轻松地拉出源MAC地址。由于我仅解析具有固定长度的探测请求(请查看第here),因此只需将指针指向packet + it_len + 10
(源MAC地址在MAC帧开始后10个字节开始,即开始无线电广播标头在哪里结束)。在该指针处开始的6个字节是802.11帧中的addr2
(同样,请参阅第17页here)。
radiotap-parser.c链接已损坏。 – haccks