猴子试驾本田雅阁:数字取证学习笔记
“红色的车跑得更快!” - 原始图片来自caranddriver.com
猴子最近"试驾"(“测试解析”?)了一份来自2016款本田雅阁(美国版)的数据转储。本文将描述这段奇妙的旅程。
特别感谢Manny Fuentes慷慨分享了他的本田数据。没有这些数据,本文和相关脚本就不会存在。脚本可在GitHub上获取。
数据转储分析
使用X-Ways Forensics解析转储显示了7个分区,其中6个包含EXT4文件系统。第一个分区未被X-Ways识别。
以下是X-Ways的分析结果:
- 分区1 = 251 MB 未知
- 分区2 = 879 MB EXT4(系统部分1,约8332个文件)
- 分区3 = 251 MB EXT4(系统部分2,约1275个文件)
- 分区4 = 1.7 GB EXT4(用户数据,约15115个文件)
- 分区5 = 251 MB EXT4(21个文件,包含带时间戳的日志)
- 分区6 = 1.1 GB EXT4(49个文件,似乎包含语音相关数据)
- 分区7 = 125 MB EXT4(966个文件,主要存储在"data_org.tar.gz"中)
注意:两个分区(分区2和分区3)包含/system目录。
系统信息
基于在分区2中找到的字符串:\system\build.prop
系统运行Android 4.2.2(ro.build.version.release=4.2.2),似乎由Clarion制造(ro.product.manufacturer=Clarion, ro.board.platform=r8a7791)。构建日期为2015年8月6日16:57:16 UTC(ro.build.date.utc=1438880236)。
分区2:\system\app还包含各种.apk和.odex文件。
分区3:\system\build.prop同样确认了之前的Android属性:
- ro.build.version.release=4.2.2
- ro.build.date=2015
- ro.product.model=MY15ADA
- ro.product.brand=Honda
- ro.product.manufacturer=Clarion
- ro.board.platform=r8a7791
各分区详细内容
分区3:\system\alps\evolution\paired_device_list.txt包含列出各种BT地址及其设备名称的ASCII文本。与在分区4的bluetoothsettings.db中找到的数据一致。
分区4包含Android/用户数据(主要在com.android、com.clarion、com.honda目录下)
在分区4上还发现:
- \property\persist.sys.timezone [包含设置为"US/Central"的ASCII文本]
- \system\usagestats\usage-history.xml [包含各种带时间戳的Android活动日志。未验证]
- \data\com.android.settings\shared_prefs\bluetooth_settings.xml [包含"last_discovering_time"的时间戳字符串值。似乎是自1970年1月1日以来的毫秒数。未验证]
分区5包含各种带时间戳的错误日志(例如ErrorLevelPower.log、ErrorLevelSoft.log、ErrorLevelHard.log)。
分区6似乎包含各种文本转语音相关文件。
分区7将其大部分文件存储在"data_org.tar.gz"中。这似乎是分区4:/data的恢复备份。
SQLite数据库分析
最有趣的用户相关信息在分区4:/data下的各种SQLite数据库中找到。
- \data\com.honda.displayaudio.navi\Garmin\sqlite\RecentStops.db
- \data\com.honda.telematics.core\databases\crm.db
- \data\com.clarion.bluetooth\databases\phonedb.db
- \data\com.clarion.bluetooth\databases\bluetoothsettings.db
因此,编写/测试了四个Python3解析脚本,在运行Python 3.9的Win10x64上运行。
Python解析脚本
这四个脚本的工作方式类似 - 它们接受相应SQLite数据库的输入参数和输出TSV文件名的输出参数。然后它们运行SQLite查询以获取相关数据,并将选定字段输出到TSV文件。
accord_2016_recentstops.py - 读取RecentStops.db的"history"表并将详细信息输出到TSV文件。
该表似乎记录了带时间戳的经纬度坐标。我们不确定是什么触发了条目。
使用的SQLite查询:"SELECT time, lat, lon, name FROM history ORDER BY time ASC;"
accord_2016_crm_eco_logs.py - 读取crm.db的"eco_logs"表并将详细信息输出到TSV文件。
该表似乎记录了各种带时间戳的行程段(带时间戳的里程表/行程范围测量)。
使用的SQLite查询:"SELECT _id, trip_date, trip_id, mileage, start_pos_time, start_pos_odo, finish_pos_time, finish_pos_odo, fuel_used, driving_range FROM eco_logs ORDER BY _id ASC;"
accord_2016_phonedb.py - 读取phonedb.db的"callhistory"、“contact”、“contactnumber"表并将详细信息输出到TSV文件。
该数据库似乎记录通话历史和联系人信息。
通话历史SQLite查询:"SELECT _id, address, phonenum, calldate, calltype FROM call_history ORDER BY calldate ASC;"
联系人SQLite查询:"SELECT contact._id, contact.address, contact.firstName, contact.lastName, contact.phonename, contactnumber.number, contactnumber.numbertype FROM contact JOIN contactnumber ON contactnumber.contact_id = contact._id ORDER BY contact._id ASC;"
accord_2016_bluetoothsettings.py - 读取bluetoothsettings.db的"bluetooth_device"表并将详细信息输出到TSV文件。
该表似乎记录蓝牙设备名称和MAC地址。
使用的SQLite查询:"SELECT device_bank, device_addr, device_name FROM bluetooth_device ORDER BY device_bank ASC;"
最后思考
如果您有类似年份的本田转储,我们将非常感谢您能运行这些脚本并告诉我们结果如何。
显然,由于脚本是使用一组数据编写的,可能存在错误/错误假设。
或者,如果您能对本田Android转储有更多了解,我们很乐意听取您的发现。
最后,如果您能分享任何其他车辆的转储并希望我们编写一些解析脚本,请告诉我们。
也欢迎在下面的评论部分提出评论和建议。