fryefryefrye 发表于 2019-11-29 10:52

iPhone蓝牙广播随机地址的识别


默认的IOS开启了连续服务功能,会用蓝牙4.0的低功耗不断的发送“广告”包。 本来想利用这个来制作一个接近开关,比如带着手机到门口,能自动解锁门。自动解锁电动车之类的。

但是这个广告包用的是一个随机蓝牙地址。而且其附带的厂商数据,是苹果自定义的,至今网上未有人能解析出来。

后来研究蓝牙规范,发现这个随机地址是可解析的,前提是你要有相应的Key。 这个key就是 IRK。

于是我复制粘贴,终于组装出了一个函数,来判断空中的“广告”包的蓝牙地址是否属于自己的手机。
项目开源,上传到了GitHub。

https://github.com/fryefryefrye/Decoding-Random-Bluetooth-Address

里面包含两个小项目:

No.1   获得你的iPhone 的 IRK
用Arduino环境,把get_irk项目烧进一块ESP32板子,这块板子就会打开一个蓝牙服务。 然后在iPhone上安装LightBlue软件,找到“ESP_BLE_SECURITY”服务,点击连接,就会有提示是否配对。确定后手机端连接成功,ESP32端就会打印出IRK。

No.2   低成本监听蓝牙广播包
用Arduino环境,把nrf_ble_add项目烧进一块nano板子,连接上一块nRF24L01,即可监听广播包,提取其中的随机MAC地址,然后与之前获得的IRK进行比较,就能判断是不是自己的手机。

zs126zs 发表于 2019-11-29 13:12

不明觉厉

MO 发表于 2019-11-29 20:31

牛,膜拜

user_sdlt 发表于 2019-11-29 21:44

论坛风气不错哦
页: [1]
查看完整版本: iPhone蓝牙广播随机地址的识别