Python自动化小米手环运动数据导出 |
您所在的位置:网站首页 › 小米手环上保存的运动数据怎么传到手机上面 › Python自动化小米手环运动数据导出 |
捣鼓小米手环,做了个小项目,想导出小米手环的数据显示在Web网页,这里对网上老旧教程进行一波更新换代,还利用Python实现数据导出的自动化(从用户端的角度考虑,原来的教程其交互模式不够优雅,但事实上整体做下来还是有种 tuo le 裤子放 p 的感觉,想进行小米手环数据取证,或者喜欢瞎捣鼓的同学可以看看,另外,还能从内部看看小米手环到底测量了我们身体的哪些数据) 2022年7月1日亲测可行,欢迎私信,求赞 文章目录 一、工具准备1.小米手环62.Zepp Life3.Termux4.Xshell Xftp5.android-backup-extractor6.C32Asm7.DB Browser (SQLite)8.Maven 二、具体步骤1.提前声明2.备份文件3.配置好Termux4.Paramiko库5.解压下载的tar.gz文件(解出bak文件)6.bak文件的重构7.bak文件解包8.数据库读取 总结参考案例提示:以下是本篇文章正文内容,读者可以根据需要自行选择是否尝试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-extractorandroid备份文件解包的开源工具(下载及使用方法见链接,后文会对一些出现的问题进行具体讲解 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 根据需求我们找到了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。 成功解bak输出如上 8.数据库读取解包之后我们解压文件得到 apps 文件夹,里面的 apps/com.xiaomi.hm.health/db 数据库文件用sqlite3工具打开即可,这里采用 DB Browser(SQLite)如图左上角路径 处理的数据可以保存为csv就能放入数据库和前端进行交互啦!!!! 参考案例MizarTian 小米运动手环数据导出 我非码农 小米运动睡眠数据导出并分析(python) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |