最近调试测试了通过成功抓取周边手机wifi广播的Probe request帧来收集手机的MAC地址。在此记录下学习过程。
一开始的思路就是将ESP8266设置为AP模式,让手机连接上ESP8266,来获取手机wifi的MAC地址。调试完后可以读出连接上ESP8266的手机的WIFI MAC地址。相关的调试过程会在之后记录下来。但是这里的话,需要手机主动连接上ESP8266的动作。在查阅了相关的资料,手机之所以能搜索到周围的wifi热点,是因为热点会向周围广播Beacon帧,手机wifi收到后就知道了有它们的存在。当手机wifi打开后,手机wifi也会向周围主动广播Probe request帧。这就是主动搜索与被动搜索的结果。那能否通过抓取手机wifi广播的Probe request帧来抓取得到手机WiFi的MAC地址呢?
在esp8266_sd_api_guide文档说明中果然有Sniffer相关接口可以帮助实现。什么是sniffer模式?一般我们在讲的Sniffer程序是把NIC(网络适配卡,一般如以太网卡)置为一种叫promiscuous杂乱模式的状态,一旦网卡设置为这种模式,它就能是Sniffer程序能接受传输在网络上的每一个信息包。
1.void wifi_promiscuous_enable(uint8 promiscuous);
功能:开启混杂模式(sniffer)
uint8 promiscuous :
0:关闭混杂模式
1:开启混杂模式
注意:
(1)仅支持在ESP8266单station模式下,开启混杂模式
(2)混杂模式下,ESP8266 station和 soft-AP接口均失效。
(3)若开启了混杂模式,请先调用wifi_station_disconnect确保没有连接
(4)混杂模式中请勿调用其他API,请先调用wifi_promiscuous_enable(0)退出snfiier。
2.void wifi_set_promiscuous_rx_cb(wifi_promiscuous_cb_t cb);
功能:注册混杂模式下的接收数据回调函数,每收到一包数据,都会进入注册的回调函数
3.bool w

本文介绍了一种使用ESP8266模块的Sniffer模式抓取手机WiFi广播的Proberequest帧,从而收集手机MAC地址的方法。通过开启ESP8266的混杂模式并设置回调函数,可以监听并解析管理包中的Proberequest帧,获取手机的MAC地址。

3483

被折叠的 条评论
为什么被折叠?



