最近整了个小米手环玩玩, 想着让自己重视一下时间管理…于是我又开始往奇怪的方向探索了
配对
咱的想法是在笔记本上直接和小米手环进行配对, 以便于更方便的探究其中的奥秘
获取 Auth Key
在与手环设备进行通讯之前, 得先通过正确的 Auth Key
才能正确验证
验证的步骤大致如下:
1 | 1. 向小米手环请求一个随机数。 |
在获取之前你需要先在手机软件上和手环进行配对, 以下我例举几种获取 Auth Key
方法
该 Auth Key 在设备恢复出产设置后才会改变, 因此一般来说我们拿到过一次记下来即可
未root的安卓设备
可以通过安装 freemyband 魔改过的各类手环app配对后, 再根据页面引导获取
已root的安卓设备(以小米健康为例)
1 | $ sqlite3 /data/data/com.xiaomi.hm.health/databases/origin_db_[YOURDBNAMEHERE] "select AUTHKEY from DEVICE" |
已越狱的IOS设备(以小米健康为例)
1 | $ cd /var/mobile/Containers/Data/Application/<MiFit_App_UUID>/Documents/ |
扫描BLE设备
在安装了 Linux 下的主流蓝牙协议栈的实现Bluez后, 咱还需要装上AUR里的bluez-utils-compat
因为它提供了一些咱需要用到的蓝牙工具
1 | hciconfig 配置hci连接 |
再通过
1 | $ hcitool lescan |
断开一下手机的连接, 扫描一下可见的低功耗蓝牙设备, 就可以见到俺的蓝牙手环了
1 | # 内容已做处理 |
再将设备添加到白名单内(可选)
1 | $ hcitool lewladd C1:0C:0A:02:XX:XX |
接下来连接
1 | $ hcitool lecc C1:0C:0A:02:XX:XX |
如果连不上可以直接使用 bluetoothctl
尝试一下
连接上以后发现 upower
又成功向系统上报了手环电量!
协议探究
有空再继续研究吧~