陆陆续续手头已经有好多小米的设备了。我用的是红米5,还买了小米手环3,还有一个小米体重秤。小米的产品做的挺不错的。手机上安装“小米运动“APP,蓝牙实时开启,就能够记录各种运动数据(体重秤需要将”小米运动APP“打开的情况下,才能实时记录)。但是我很想获取这些数据。本次文章就记录了自己获取”小米运动“数据的过程。
思路
手机备份”小米运动” -> 得到 .bak 文件 -> 解压 .bak 文件(使用 android-backup-extractor,abe ) -> 查看 db 文件
Step 1
用小米手机自带的“系统备份”功能新建一个备份,只备份“小米运动”APP。会在/MIUI/backup/AllBackup路径下得到一个bak文件,传输到电脑上。
Step 2
有些博客里写到需要用 WinHex 等工具修改一下bak文件的文件头。但是我经过测试,使用最新的 abe 其实可以不用。老版本的 abe 没有测试过。可能会存在不能解压的问题。所以把这一步写上。参考[5]获取WinHex,并修改文件头,如下图所示,删除地址0x00000035之前的内容,保存文件即可。用其他方式(Notepad++ + HexEditor ) 也可以实现。VS Code + hexdump 可以查看二进制文件,不能进行编辑。
Step3 使用abe解压
下载得到abe工具(一个名为abe.jar的java脚本),运行改环境需要电脑上安装有Java的运行环境,可参考[4]。在abe工具所在的文件夹下Shift+鼠标右键,打开Powershell窗口。
输入第一行代码,查看脚本的用法。
1 PS C:\Users\XX\Desktop\temp> java -jar abe.jar 2 android-backup-extractor v20180521 3 Cipher.getMaxAllowedKeyLength("AES") = 2147483647 4 Strong AES encryption allowed, MaxKeyLenght >= 256 5 Usage: 6 info: abe [-debug] [-useenv=yourenv] info <backup.ab> [password] 7 unpack: abe [-debug] [-useenv=yourenv] unpack <backup.ab> <backup.tar> [password] 8 pack: abe [-debug] [-useenv=yourenv] pack <backup.tar> <backup.ab> [password] 9 pack 4.4.3+: abe [-debug] [-useenv=yourenv] pack-kk <backup.tar> <backup.ab> [password] 10 If -useenv is used, yourenv is tried when password is not given 11 If -debug is used, information and passwords may be shown 12 If the filename is `-`, then data is read from standard input or written to standard output
我们使用unpack命令。
参照用法,输入源文件和目标文件。源文件后缀名可以保持.bak不变,注意文件目录设置,我把源文件和ade.jar放在了同一路径下。目标文件设置为health.tar。
1 PS C:\Users\XX\Desktop\temp> java -jar abe.jar unpack .\health.bak health.tar
在同一目录下产生文件 health.tar,并解压,得到文件夹“health”
Step4 查看db文件
打开文件夹 \health\apps\com.xiaomi.hm.health\db。对db文件的查看可以使用一些轻型数据库可视化工具。参考[7]。我使用SQLiteExpert。使用个人版足够了。运动信息、体重信息等都保存在最大的文件里。直接将其拖动到SQLite。即可打开数据库。
这个DataBase里有好多张表,保存了各种运动信息。下面这张图显示的是跑步的经纬度和速度。可以看出经纬度记录了起始经纬度,随后记录的都是偏移量。
Step5 利用数据
我从表WEIGHT_INFOS中选择WEIGHT,TIMESTAMP两个列。然后框选所有的数据,粘贴到Excel文件里。
TIMESTAMP表示的是时间戳,通过公式 =(B2/1000+8*3600)/86400+70*365+19 ,求取时间,把得到的数据格式换为日期即可。
预测下什么时候重回80Kg?
感动自己。四个月后见分晓。
参考
1. android-backup-extractor(abe)工具
https://github.com/nelenkov/android-backup-extractor
2. android-backup-extractor
https://sourceforge.net/projects/adbextractor/
3. Android逆向之旅---Android中如何获取在非Root设备中获取应用隐私数据
https://blog.csdn.net/jiangwei0910410003/article/details/51437659
4. 轻松解包MIUI备份bak文件 还原出明文数据 (给出的工具是对ade的封装,ade用的低版本)
https://www.feifeiboke.com/android/3669.html
5. WinHex中文免费版 最经典的文件操作神器
https://www.feifeiboke.com/pcjishu/3666.html
6. 小米运动手环数据导出
https://blog.csdn.net/mizartian/article/details/85414507
7. SQLite可视化管理工具汇总(更新中)
https://blog.csdn.net/qq_27248989/article/details/80279585
8. Android 如何从android手机将数据导出,查看数据库
https://blog.csdn.net/qq_31939617/article/details/80341928
9. 安卓手机微信数据导出方法 -- adb备份(无需root)
https://blog.csdn.net/mr_orange_klj/article/details/48914553