wifi探针Android系统下的实现思路
原理
WiFi 探针技术是指基于WiFi探测技术来识别AP(无线访问接入点)附近已开启 WiFi 的智能手机或者WiFi终端(笔记本,平板电脑等),无需用户接入WiFi,WiFi探针就能够识别用户的信息。当我们走进探针信号覆盖区域内且我们的wifi设备打开,我们的设备就能被探针探测出来,无论是IOS或者安卓系统都能轻易检测到,并且获取设备的MAC地址
作者:justinjing
链接:https://www.jianshu.com/p/5d5322ca3b1c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
关于安卓系统中的Wifi探针
本文所说的Android系统,都是高通平台。
安卓系统中的wifi探针,主要可以有两种实现。
- 一种是通过热点开关来获取周围的 mac地址。
- 一种是通过wifi的p2p来实现获取周围的mac地址。
Android系统中实现,需要修改Android系统源码。
探针的实现主要是实现底层的探针上报到应用层。
首先看一下Android系统wifi相关的架构。
转自
https://blog.csdn.net/liuhaomatou/article/details/40398753
更多深入的东西建议阅读邓凡平的
《深入理解Android wifi nfc 和gps》
通过热点开关来获取周围的 mac地址思路
通过开启Android的热点,是可以搜索到周围的mac地址的。
但是Android系统并没有将这些信息进行上报。
通过高通的qpst,可以抓取到相关的log。
修改
vendor\qcom\opensource\wlan
会将底层的mac地址信息发送相关的Event.
在wpa_supplicant中就可以收到相关的mac地址信息。
由于 wpa_supplicant 是通过 wpa_ctrl.h来发送到Android的framework层。
在external\wpa_supplicant_8\hostapd\src\ap\ieee802_11.c进行处理 wpa_ctrl.h进行发送。
framework中
frameworks\base\services\core\java\com\android\server\NetworkManagementService.java
这个是管理网络相关的service 会接收netd的上报。
framework发送到App。
在NetworkManagementService添加接口,编写AIDL。
App调用这个接口,就获取到了mac信息
通过wifi的p2p来实现获取周围的mac地址思路
Wi-Fi Direct是一种点对点连接技术,它可以在两台station之间直接建立tcp/ip链接,并不需要AP的参与。
p2p探针和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地址到frameworks\opt\net\wifi\service\java\com\android\server\wifi\p2p\WifiP2pServiceImpl.java
WifiP2pServiceImpl通过广播,向App发送信息。
至此app就会收到了信息。
wifi探针Android系统下的实现思路相关推荐
- imx6的android编译,iMX6开发板 Android系统下常见问题解决思路
本文以飞凌嵌入式OKMX6Q /DL 平台为基础讲解,其它iMX6 平台可参考使用. 第一章 Android4.4屏幕竖屏 修改Android源码(Android源码需要整体编译一遍以后才可以) vi ...
- android 读build.prop,Android系统下的build.prop文件
Android系统下的build.prop文件,用adb shell进入,再进入到system目录,查看该目录下的文件,会看到build.prop文件,用exit命令退出. 1551927518(1) ...
- X86 android r7 z3735,安卓工业平板电脑android系统下各大主流CPU性能大对比分析
原标题:安卓工业平板电脑android系统下各大主流CPU性能大对比分析 针对工控领域客户在选择工业平板电脑时的困惑,南京研维组织多位业内专家,为大家连续推出10期工业平板电脑的选型要点分析,本文作为 ...
- 删除android软件,adb shell删除Android系统下的软件
一.删除Android系统下的软件,使用adb shell进入系统,然后使用命令重新挂载"/system"目录为读写权限,具体操作及命令如下: 1.打开dos窗口:win+R 输入 ...
- (原)android系统下绑定Server的时候报MainActivity has leaked ServiceConnection的错误
今天在android系统下根据官方的demo代码,我们需要启动一个服务,并绑定,但在程序启动以后,老是报错: Activity MainActivity has leaked ServiceConne ...
- android蓝牙配对 自动联接,Android系统下蓝牙自动配对连接方法
Android系统下蓝牙自动配对连接方法 [专利摘要]本发明涉及一种Android系统下蓝牙自动配对连接方法,其包括如下步骤:步骤1.在Android设备端内存储上次进行蓝牙连接蓝牙外设的蓝牙地址,并 ...
- 解析android系统下Dex2oat的实现
简介 在Android系统5.0及以上系统开始逐渐丢弃Dalvik虚拟机,由于ART虚拟机对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短,所有android系统5.0及以上都 ...
- android系统自动休眠代码流程,一种基于Android系统下的可控休眠方法及系统与流程...
本发明涉及一种手机应用,尤其涉及一种基于android系统下的可控休眠方法及系统. 背景技术: android设备的休眠指的是当长时间不用手机时手机会自动进入一个省电模式,调低或者关闭一部分电压的输出 ...
- 解决了基于Android系统下的藏文输入重叠字的问题。
我已经完美的解决了基于Android系统下的藏文输入重叠字的问题. 首先申明该软件需要付费,否则无法使用.该软件是基于Android智能手机下的应用层软件,当前没有区分手机终端类型及型号,所以会有些手 ...
最新文章
- [EXP]windows全版本SMB溢出工具加强版
- [Python]再学 socket 之非阻塞 Server
- 联想记忆计算机网络,什么是双向联想记忆神经网络
- python对字符串数组进行排序、依据字符数_Python进行数据的排序以及字符串的操作...
- eSIM技术必将取代SIM卡 一文读懂eSIM技术优势!
- Html.RadioButtonFor和Html.DropDownListFor 用法--备忘
- error: invalid new-expression of abstract class type 'Rectangle'
- 计算机论文格式要求吗,论文格式
- DNSlog平台的搭建
- Seek 策略以及在有 B 帧情况下的处理
- flash不同颗粒SLC、MLC、TLC、QLC擦写次数
- Gluster集群管理小分析
- css+js制作循环轮播图——可滑动
- 最大值最小值算法(象棋博弈)
- get the sack
- Postman高级应用(5):再也不用注释签名代码了——自动生成签名
- 操作系统习题(第六,七章)
- 光纤宽带 和 ADSL宽带有什么区别?
- 文献综述怎么写?有哪些准备工作和内容要求
- 银行排队叫号系统的模拟