Android设备位置历史深度解析
背景介绍
2023年12月,Google宣布对Android的位置历史功能进行重大更改。此前用户可通过Google Maps应用和任何已登录的网页浏览器查看位置历史,这意味着数据由Google存储且可能被其访问。新的变化包括:
- 位置历史在Google Maps UI中更名为"Timeline"
- 数据将本地存储在设备上而非服务器
- 位置数据默认保留时间从18个月缩短至3个月
技术实现分析
配置检测
位置数据存储在/data/data/com.google.android.gms/目录中。关键配置文件ULR_USER_PREFS.xml位于~/shared_prefs文件夹,包含两个重要条目:
- Odlh迁移状态:标识账户是否已迁移到设备端存储位置历史
- historyEnabled_Account:基于用户是否为其Google账户开启Timeline
数据存储位置
虽然用户通过Google Maps访问Timeline,但实际数据位于Google移动服务沙箱中:
/data/data/com.google.android.gms/app_semanticlocation_rawsignal/
LevelDB数据库
原始位置数据存储在app_semanticlocation_rawsignal_db目录的LevelDB中。关键数据字段包括:
- 经纬度坐标:分别存储的纬度和经度值
- 水平精度:需要除以1000后以米为单位读取
- 时间戳:采用唯一的时间标识符
数据解析工具
使用Mushy工具解析LevelDB和Android二进制XML数据。位置条目示例显示:
- 红色高亮:纬度和经度值(从上到下)
- 绿色高亮:水平精度值
- 蓝色高亮:时间戳
Protobuf缓存数据
app_semanticlocation_odlh_cache目录包含扩展名为.is的Protobuf文件。数据解析特点:
- Protobuf载荷可能由1-2个字节分隔
- 载荷长度通过读取第一个字节确定
- 解码后包含相同的经纬度、精度和时间戳信息
测试验证
测试设备
- Galaxy S22、Galaxy S23
- Pixel 5a、Pixel 6a、Pixel 8a
数据准确性
在实际测试中,位置数据表现出良好的准确性:
- 水平精度值最小约为36英尺(11米)
- 精度受设备硬件能力、地形和环境条件影响
- 时间戳准确反映实际位置时间
数据收集特性
- 被动收集:无需用户干预,设备锁定时仍收集数据
- 采样频率:设备移动时采样更频繁,静止时减少
- 保留时间:因设备而异,S22保留超过一个月,Pixel 8a约两周
多设备管理
- Timeline设置是账户级别的,在一台设备上关闭会影响所有关联设备
- 关闭Timeline并选择删除数据仅影响执行操作的设备
- 其他设备上的历史数据(如果存在)保持不变
取证意义
作为取证调查人员,评估位置数据的可靠性至关重要:
- 需要验证数据在特定上下文中的合理性
- 应该测试数据的准确性
- 不能盲目接受位置数据作为准确证据
Android在可用位置数据方面正逐步追赶iOS,但碎片化和默认设置仍会影响在Android设备上找到可靠位置数据的可能性。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码

