详见
https://www.jianshu.com/p/16d4ff4c4cbe
https://stackoverflow.com/questions/33159224/getting-mac-address-in-android-6-0
我不知道 google 在 6.0 7.0 的时候封 mac 获取是在搞什么笑话,留了这么大一个窟窿,直到 Pie,应用依然可以通过 native 层获取(并且因为是 native 层,xposed 的 hook 完全无法阻止) < uses-permission android:name="android.permission.INTERNET" />权限几乎是必须权限,并且完全没有任何办法管理。
可以用这个测试: https://play.google.com/store/apps/details?id=com.ddm.ethwork
在我的 LineageOS16,android P 上,它工作的非常好,双 wifi 网卡全部都可以取得地址。
不知道 Q 能否有所改善,但目前来看,Q 只是把 P 中需要手动开启的“Connected MAC Randomization”变成了默认开启,并且会为每一个 ssid 使用一个固定的 mac 地址,对于对抗追踪几乎没有任何帮助。
目前只能写开机脚本 root 执行手动修改成随机的 mac 地址,但无法对每一个应用提供不同的随机化的 mac 导致依旧会被追踪,帮助微乎其微。
android,windows 这些年来到是把外部的 wifi 探针问题解决了差不多,但内部的却依然不设防一般。
1
Jirajine OP 估计 Google 也不打算修了,只能去给 lineageOS 提 issue 看看能不能解决这个问题。
|
2
Baymaxbowen 2019-10-21 18:17:08 +08:00
今天看到一个新闻说 10 会把这些结构屏蔽掉
|
3
Jirajine OP @Baymaxbowen #2 如果你指的是这个:
In Android P, Google rolled out a developer option to enable MAC address randomization, but it was turned off by default. With the first beta of Android Q, the option became the default. 那么没有效果,这个开启之后会为每个 ssid 使用一个随机的 mac,不换 wifi 不会变,并且所有应用读取到的值也一致。 Q 确实额外提供了仅有 device onwer 可访问的 api 来获取 mac 地址,但 native 层的这个漏洞确是一点都没提。 |
4
billlee 2019-10-21 22:03:07 +08:00
native 层这些历史遗留太多了吧,linux 获取 mac 地址,我知道的至少有 procfs, sysfs, netlink 三套接口
|