Python自动化小米手环运动数据导出

捣鼓小米手环,做了个小项目,想导出小米手环的数据显示在Web网页,这里对网上老旧教程进行一波更新换代,还利用Python实现数据导出的自动化(从用户端的角度考虑,原来的教程其交互模式不够优雅,但事实上整体做下来还是有种 tuo le 裤子放 p 的感觉,想进行小米手环数据取证,或者喜欢瞎捣鼓的同学可以看看,另外,还能从内部看看小米手环到底测量了我们身体的哪些数据) 2022年7月1日亲测可行,欢迎私信,求赞


提示:以下是本篇文章正文内容,读者可以根据需要自行选择是否尝试python自动化过程

一、工具准备

1.小米手环6

这里我测试用的是小米手环6,7也无所谓,与手环版本无关

2.Zepp Life

一台能下载《Zepp Life》原“小米运动”软件的手机,测试用小米手机K50,提前已经进行过配对,软件里面有好多天的数据

3.Termux

手机安装Termux软件(下载及使用方法见国光教程https://www.sqlsec.com/2018/05/termux.html#toc-heading-1

4.Xshell Xftp

默认大家安好了

5.android-backup-extractor

android备份文件解包的开源工具(下载及使用方法见链接,后文会对一些出现的问题进行具体讲解 https://github.com/nelenkov/android-backup-extractor

6.C32Asm

能以16进制打开文件,这个csdn很多资源,实在不想花积分就私信我吧

7.DB Browser (SQLite)

资源很多

8.Maven

官网 https://maven.apache.org/

二、具体步骤

1.提前声明

提前声明,蓝色字是同样适用于非自动化(同样能完成整个过程)的步骤,这里只不过提供一种自动化的示例,均非常容易理解,绿色字全部指向一个链接---->小米手环数据自动化导出工具

2.备份文件

在小米手机的 设置 --> 更多设置 --> 备份与恢复 ,找到“Zepp Life”进行备份,备份后的文件出现在这个路径下,之后可以直接拿数据线连接电脑把bak文件脱出来进行解包下一条蓝色字出现在第6条),但是作者发现这样的操作对于用户来说实在麻烦而且并不优雅,所以下面提出一种自动化解决方案,把这些过程交给后端来做。

/storage/emulated/0/MIUI/backup/AllBackup

3.配置好Termux

这里建议把链接中整个教程从头到尾仔细查看,配置好你的国内镜像源,下载好nmap、openssh等包,这里为了方便没有以公钥私钥进行配对,直接账号密码就行,输入termux-setup-storage获取手机权限,配置好之后我们发现这里我们需要的交互方式正好是国光大大所说较少的应用场景,电脑ssh连接手机Termux国光大大教程
启动ssh后,在Termux中用whoami查看自己的用户名,ifconfig查看hostname,passwd更改密码(一定记住),默认端口8022,可以用Xshell连接手机敲字比较方便,获取手机存储权限后,tree一下发现软连接已经建立好这里我们关心 /storage/emulated/0/MIUI/backup/AllBackup 这个目录下的东西(映射关系如下,其实在 shared/MIUI/backup/AllBackup 里面,用Xftp打开看一下就明白了)软连接映射关系

4.Paramiko库

根据需求我们找到了Python的一个库paramiko,能创建一个sftp连接从手机上下载文件,但不可以是文件夹,所以我们先将其压缩,见代码 sftp_get_bak.py,这里我找了一个demo直接改(忘了从哪里找的),把那些路径也都设置成自己的,对照打印信息debug就行,代码见链接

5.解压下载的tar.gz文件(解出bak文件)

之后就需要把这个下载下来的tar.gz解压,继续调库就行,unzip_targz.py,代码不用改,直接运行,代码见链接

6.bak文件的重构

对解压出来的bak文件进行处理,我用C32Asm工具将bak文件用16进制打开,将 ANDROID BACKUP 前面的全部删除,去除掉小米app特异性的前缀,这里的Python代码比较简陋,暂时没发现比较好的操作,见 recreate_bak.py

7.bak文件解包

接下来就需要用到 android-backup-extractor 了,首先到官网下载整个项目代码,我们这里按照官网最简单的教程,使用 maven ,生成 abe.jar 包,mvn -v 测试 maven 是否下载好,然后在整个文件夹下执行 shell 命令 mvn clean package,我们会发现新生成了一个target文件夹,我们把 abe.jar 从里面拖出来进行使用,这里我们采用 Python 的 subprocess 库来执行 shell 命令并给出输出或报错,执行shell命令 java -jar abe.jar unpack ZeppRe.bak testopenbak71.tar,见代码 open_bak.py生成abe.jar

PS C:\Users\17588\Documents\CSDN博客> python -u "c:\Users\17588\Documents\CSDN博客\open_bak.py"
0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51% 52% 53% 54% 55% 56% 57% 58% 59% 60% 61% 62% 63% 64% 65% 66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76% 77% 78% 79% 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 90% 91% 92% 93% 94% 95% 96% 97% 98% 99% 100%
149734912 bytes written to testopenbak71.tar.

成功解bak输出如上

8.数据库读取

解包之后我们解压文件得到 apps 文件夹,里面的 apps/com.xiaomi.hm.health/db 数据库文件用sqlite3工具打开即可,这里采用 DB Browser(SQLite)如图左上角路径
DB Browser
代码见 date_data_extraction.pyAllDayStress_extraction.py

总结

处理的数据可以保存为csv就能放入数据库和前端进行交互啦!!!!

参考案例

MizarTian 小米运动手环数据导出
我非码农 小米运动睡眠数据导出并分析(python)

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
导出三星手表的运动数据,您可以按照以下步骤进行操作: 1. 打开Samsung S-Health应用程序并导航到您的运动数据。 2. 在S-Health应用程序中,找到导出选项。这通常位于设置或菜单中。 3. 选择导出选项后,您可能需要选择要导出数据类型。在这种情况下,选择运动数据或步数数据。 4. 接下来,选择导出数据的格式。您可以选择CSV格式,这是一种常见的数据格式,可以在Python中轻松处理。 5. 确认导出选项后,S-Health应用程序将生成一个包含您的运动数据的CSV文件。 6. 将CSV文件从您的手机传输到您的计算机。您可以使用USB连接、云存储服务或电子邮件等方法进行传输。 7. 在计算机上使用Python编程语言打开CSV文件,并使用适当的库(如pandas)读取和处理数据。 通过这些步骤,您可以将三星手表的运动数据导出并在Python中进行进一步的分析和处理。请注意,具体的步骤可能会因您使用的三星手表型号和S-Health应用程序版本而有所不同。 #### 引用[.reference_title] - *1* *2* *3* [未越狱设备提取数据_从三星设备中提取健康数据](https://blog.csdn.net/weixin_26746401/article/details/108494653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诞总好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值