自制WiFi6抓包工具(sniffer)
时间:06月11日 人气:...

最近两年一直在做WiFi6芯片,主要用于IoT领域,用于IoT的芯片的话可想而知,使用上会有很多的局限性。而目前世面上能对WiFi6抓包的工具少之又少,目前我仅知道intel的ax2xx系列的网卡可以抓到,而且还得在linux系统下才能办到,那么能不能用我现在手头这个芯片制作一个支持WiFi6的WiFi抓包工具呢?


答案是肯定的,我可以用芯片的sniffer功能完成这个目的,但是这里面有俩问题:

  1. 如何启动抓包?并设置抓包条件?

    这是一款WiFi/BLE二合一芯片,所以可以考虑用ble做控制,在手机上写一款APP,然后用APP发送抓包条件和控制启动/定制抓包。当然这种方式实现起来比较麻烦,所以这里我考虑使用另一种比较简单的办法,那就是用uart cmd来控制,通过shell界面来控制和设置条件。

  2. 抓到的包如何呈现出来?

    芯片是没有显示屏这些东西的,所以只能考虑输出,外设有uart、spi、sdio等接口,相比之之下sdio速率最高,所以这里就选择把抓到的报文利用sdio保存到sd卡中,保存时以pcap格式输出,那么抓包完毕之后将sd卡插到电脑上就直接可以用omnipeek或wireshark等工具进行分析了。


经过思考之后,我就使用杜邦线将sd卡模块和开发板连接起来,

然后编写代码实现,大概需要干这些事:

我是固定在sd卡根目录下写入wifi_capture.pcap文件,先给这个文件写入一个“pcap文件头”,然后将每一个抓到的空中包以 “pcap报文头+radiotap+报文”写入到文件。


编写完成之后,经过验证果然可以满足抓取WiFi6空口包的目的。 

我以一个sta联网并进行ping百度进行测试,已经可以抓到完整过程了:

挑一个HE的包点开看看:

当然用wireshark也是可以打开分析的:

当然不仅仅可以抓WiFi6,WiFi4这些也是可以抓到的,具体得看芯片的能力。这个代码可以套在其他芯片上,比如说esp32、w600/w800等上也是可以运行的,这里就不在探讨了,有兴趣的可以参考我下面提供的代码。

点此下载 ---> wifi_capture.7z


热门评论