Loading... # 引言 最近在做心率统计,数据源由小米运动健康提供,但是设备没有root,读取不到数据库文件,所以用这种投机的方法进行获取,并且同步到外部系统中。 # 备份 打开设置-我的设备-备份与恢复-手机备份恢复  选择小米运动健康,并且执行备份。 # 数据解析 最外层是zip格式,可以直接用zip格式进行解析。  打开之后会发现一个应用名称(包名称).bak文件,这里再用格式识别就不太准确了  看内容,他应该是自己的一种格式。  通过winrar强制打开的话,确实能看到一些数据,但是经过分析,它貌似是打开了其中apk文件,并不能找到数据备份,并且提示格式损坏。  如果使用7zFM打开,能够看到正确的归档数据,其中我们发现他是tar类型.  这时候如果使用tar进行解压是失败的,所以要移除它自定义的数据,简单描述一下,先解压开,然后通过tar进行压缩,对比一下就知道tar和bak差了哪些东西了,比较顺利,因为没有压缩,是仅归档的形式存储,不用重构文件偏移量哪些数据。 只需要移除前面的备份文件特征头信息就好了。  这时候就可以用tar进行解压了。 # 自动化 1. 解压zip 2. 移除备份标识 3. tar解压 4. 找到db文件 5. 解析db并且同步 可以使用termux进行自动化同步,其中移除标头可以用python这个代码 ```python def remove_prefix(input_file, output_file): with open(input_file, 'rb') as infile: data = infile.read() with open(output_file, 'wb') as outfile: outfile.write(data[77:]) print(f"文件已提取并保存为 {output_file}") ``` # 结语 因为bak文件归档模式,很容易解析,并不需要计算偏移和解密,这也提供了一些便利。 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏