小米运动App数据提取 - 多吃骨头儿

时间:2024-03-02 13:25:17

陆陆续续手头已经有好多小米的设备了。我用的是红米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工具地获取参考[1]或者[2]。这是一个开源软件。

下载得到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

 

posted on 2019-03-16 16:41  多吃骨头儿  阅读(2320)  评论(0编辑  收藏  举报