社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
WiFi 探针技术是指基于WiFi探测技术来识别AP(无线访问接入点)附近已开启 WiFi 的智能手机或者WiFi终端(笔记本,平板电脑等),无需用户接入WiFi,WiFi探针就能够识别用户的信息。当我们走进探针信号覆盖区域内且我们的wifi设备打开,我们的设备就能被探针探测出来,无论是IOS或者安卓系统都能轻易检测到,并且获取设备的MAC地址
作者:justinjing
链接:https://www.jianshu.com/p/5d5322ca3b1c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
本文所说的Android系统,都是高通平台。
安卓系统中的wifi探针,主要可以有两种实现。
Android系统中实现,需要修改Android系统源码。
探针的实现主要是实现底层的探针上报到应用层。
首先看一下Android系统wifi相关的架构。
转自
https://blog.csdn.net/liuhaomatou/article/details/40398753
更多深入的东西建议阅读邓凡平的
《深入理解Android wifi nfc 和gps》
通过开启Android的热点,是可以搜索到周围的mac地址的。
但是Android系统并没有将这些信息进行上报。
通过高通的qpst,可以抓取到相关的log。
修改
vendorqcomopensourcewlan
会将底层的mac地址信息发送相关的Event.
在wpa_supplicant中就可以收到相关的mac地址信息。
由于 wpa_supplicant 是通过 wpa_ctrl.h来发送到Android的framework层。
在externalwpa_supplicant_8hostapdsrcapieee802_11.c进行处理 wpa_ctrl.h进行发送。
framework中
frameworksbaseservicescorejavacomandroidserverNetworkManagementService.java
这个是管理网络相关的service 会接收netd的上报。
framework发送到App。
在NetworkManagementService添加接口,编写AIDL。
App调用这个接口,就获取到了mac信息
Wi-Fi Direct是一种点对点连接技术,它可以在两台station之间直接建立tcp/ip链接,并不需要AP的参与。
p2p探针相对于热点Ap获取,对于Android来说,不需要用户开启热点。只需要开启wifi就可以进行获取周围的mac地址。
最关键的是,wifi p2p虽然不是wifi ap模式。wlan dirver会触发相关的探针逻辑发送信息到wpa_supplicant.
到了wpa_supplicant中,进行协议相关的处理。
由于不是热点模式,会相关逻辑的判断,将p2p搜索到的mac地址舍弃。
如果实现p2p探针,也就是将相关的mac地址舍弃的地方进行逻辑修改。向framework发送相关的信息,进而传递到上层APP中。
qpst抓取wlan相关log。 会有mac信息发送相关的event。
此时,并没有走p2p相关的协议代码。此时的mac地址就是正常的mac地址。而不是p2p的mac地址。
要做的是,将此mac地址绕过协议,发送到framework中。
同样的可以通过wpa_cli接口 发送到frmework中。
可以直接添加一个event,发送mac地址到frameworksoptnetwifiservicejavacomandroidserverwifip2pWifiP2pServiceImpl.java
WifiP2pServiceImpl通过广播,向App发送信息。
至此app就会收到了信息。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!