2016款本田雅阁数字取证:Python脚本解析汽车数据

本文详细介绍了如何对2016款本田雅阁的汽车数据转储进行数字取证分析,包括使用Python脚本解析SQLite数据库中的通话记录、联系人、蓝牙设备和GPS位置等关键信息,揭示了汽车信息娱乐系统的数据存储结构。

猴子试驾本田雅阁:数字取证学习笔记

“红色的车跑得更快!” - 原始图片来自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转储有更多了解,我们很乐意听取您的发现。

最后,如果您能分享任何其他车辆的转储并希望我们编写一些解析脚本,请告诉我们。

也欢迎在下面的评论部分提出评论和建议。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计