iOS14地图历史BLOB脚本
又一个BLOBBY SQL(续集)!
这篇快速发布的文章介绍了一个新的iOS 14苹果地图历史辅助脚本…
感谢Heather Mahalik分享她的研究,以及她和她的同事Sahil进行的测试。
您可以在Heather的博客上阅读关于iOS14研究的内容。
该脚本(ios14_maps_history.py)专注于苹果地图应用的MapsSync_0.0.1 SQLite数据库,该数据库可以包含最近3-5次路线/搜索记录。
数据库中有32个表,但正如我们在Heather的以下查询中看到的 - 大部分历史信息存储在名为ZHISTORYITEM的表和ZMIXINMAPITEM表中。这两个表都包含协议缓冲区BLOB,脚本会提取这些BLOB以供用户进一步处理,同时生成HTML摘要报告。
|
|
从查询中我们可以看到有3种类型的条目:
- “位置搜索”
- “搜索坐标”(通常在ZMAPITEMSTORAGE列中有"地图项目存储"BLOB)
- “导航旅程”(通常在ZROUTEREQUESTSTORAGE列中有"旅程"BLOB)
请注意,根据Heather的博客 - “创建时间”(以及 presumably “修改时间”)并不是搜索执行时间的准确记录。“位置搜索"条目(即搜索位置文本)似乎后面跟着"搜索坐标"条目(包含搜索位置的纬度/经度)。
当请求路线时,会创建一个"导航旅程"条目,其中包含一个"旅程BLOB”,该BLOB包含起点/终点位置。
然而,即使用户没有明确要求计算旅程,似乎也会生成"导航旅程"条目。在Sahil的数据中有2个这样的条目,尽管他没有使用设备进行导航。
这些BLOB需要进一步研究 - 因此有了这个脚本:)
ios14_maps_history.py运行Heather的查询并创建一个HTML报告(名为iOS14-MapsReport.html),其中包含指向提取的BLOB文件的链接。
每个BLOB都从数据库中提取并存储在用户指定的输出目录中。
该脚本已在Ubuntu 20和Win10x64上使用Python3进行测试。
Ubuntu 20.04 LTS with Python 3.8.2的使用示例:
|
|
这将把Heather的查询输出到一个HTML表格中,并带有指向每个提取的BLOB文件的超链接。
所有文件将在用户指定的"optest"目录中创建。
相应的命令行输出如下:
|
|
Win10 with Python 3.6的使用示例:
|
|
以下是输出HTML表格的样子:
![HTML表格示例]
注意:经纬度已被编辑以保护并非完全无辜的人;)
输出的BLOB可以使用protobuf_inspector等工具进行进一步研究。
这是一个非常时髦的工具,可以漂亮地打印协议缓冲区,并以多种方式解释64位字段(对于查找潜在的经纬度很有用)。它也很容易安装…
|
|
Monkey已使用protobuf_inspector在提取的苹果地图协议缓冲区上找到了一些目的地Yelp评论,以及似乎是纪元毫秒时间戳的内容(参考1970年1月1日),这些时间戳出现在GUID之后。然而,由于这不是我的测试数据且样本量较小,我无法确认这是否是搜索时间…
无论如何,这就是这篇文章的结尾…祝那些即将深入探索协议缓冲区沼泽的人们好运!
如果您碰巧使用此脚本发现了一些有趣的内容,请留言并分享知识!