陸陸續續手頭已經有好多小米的設備了。我用的是紅米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