小米運動App數據提取


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM