Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
carminat-tomtom-live-re — 对雷诺嵌入式 NavCore 9.884(代号 beaumont)进行逆向工程 | Kitploit
工具/GitHubGitHub/andronedev/carminat-tomtom-live-re
嵌入式系统安全静态分析动态分析 (沙盒)逆向工程硬件与物联网安全二进制分析论文与研究固件分析
GitHubandronedev/carminat-tomtom-live-re

carminat-tomtom-live-re

对雷诺嵌入式 NavCore 9.884(代号 beaumont)进行逆向工程

查看仓库
116个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Carminat TomTom LIVE:逆向工程

对雷诺嵌入式 NavCore 9.884 的逆向工程(代号 beaumont)
测试于:Renault Laguna 3 GT Monaco GP 2012(顺便说一句,一辆很棒的车)

flowchart TD
    A[Carminat TomTom LIVE] --> B[Samsung S5P6440<br/>Linux 2.6.28 verrouillé]
    
    B --> C[NAND interne]
    B --> D[Carte SD externe]
    
    C --> E[Verrouillé]
    D --> F[Modifiable]
    
    E -.->|UART| G[shell root théorique ?]
    F -.->|fichiers SD| H[Personnalisations<br/>splash · menus · POI]
    
    style A fill:#5B4FBE,color:#fff
    style E fill:#A32D2D,color:#fff
    style F fill:#3B6D11,color:#fff
    style G fill:#EF9F27,color:#000
    style H fill:#1D9E75,color:#fff

目录

  1. 背景与目标
  2. 系统识别
  3. 硬件
  4. 固件提取
  5. 文件系统架构
  6. 启动链
  7. 进程与服务
  8. ttn 二进制分析
  9. GPRS 调制解调器与连接性
  10. 来自 SD 卡的攻击面
  11. UART root 访问
  12. 无 UART 的个性化定制
  13. 工具与资源
  14. 本项目中对 AI 的使用
  15. 法律免责声明

1. 背景与目标

Carminat TomTom LIVE 是雷诺为 2009-2014 年款车型(Laguna 3、Mégane 3、Scénic 3、Espace 4、Fluence、Latitude、Koleos……)配备的车载导航系统。它与非 Live 版 Carminat TomTom 的区别在于:

  • 固件存储在内部 NAND上(而非 SD 卡)
  • 集成 GPRS 调制解调器,用于实时服务(交通、天气、测速摄像头)
  • RSA 签名且锁定的引导加载程序
  • 根据社区反馈,一个内核模块 signedloop 会通过 Merkle 树验证 rootfs 的完整性(本分析未确认,参见 §3)

本仓库记录了对 NavCore 9.884 beaumont 固件的分析,包括文件系统测绘、NavCore 二进制静态分析,以及通过 QEMU/strace 进行的运行时分析。

所采用的方法:

  • 通过从车辆中取出的 SD 卡识别系统(读取 ttgo.bif、loopdir/ext3_loopback 文件)
  • 通过 TomTom 官方 CDN 获取固件(参见 固件提取 章节)
  • 对从 CAB 中提取的 rootfs 进行静态分析
  • 搭建 QEMU 模拟器,复现设备的 ARM/Linux 环境,以便对 ttn 二进制进行动态分析(系统调用 strace、观察打开的文件、运行时行为)

未对车辆物理设备进行任何修改。所有分析均在 SD 卡文件副本和下载的固件副本上进行。

此处记录的所有工作均基于个人 SD 卡(从车辆中取出用于分析)以及从 TomTom CDN 下载的官方固件完成。

📌 持续更新的文档:本报告代表本次分析当前的知识状态。随着未来的发现、社区贡献以及在真实硬件上的实证验证,它可能会被改进、修正或补充。欢迎贡献、修正和反馈。


2. 系统识别

字段值
DeviceNameTomTom Carminat LIVE
硬件代号beaumont(rev 11)
NavCore 版本9.884,构建 9.884.1609031
官方发布版NFA2.8-RC06,于 2014 年 6 月 27 日在迪耶普编译
Linux 内核2.6.28.10-tt1574740
工具链gcc 4.3.3 TomTom CipherWizardry 2009q1_203-474426
LibcuClibc
Init 系统Upstart(通过 shell 脚本 /sbin/init → exec /sbin/upstart)

这些信息来自从 SD 卡 loopdir/ext3_loopback 镜像中提取的 ttgo.bif,以及 TomTom-Cfg/release.nfo 文件。

# Extrait ttgo.bif
[TomTomGo]
DeviceName=TomTom Carminat LIVE
DeviceVersionHW=beaumont
ApplicationVersionVersionNumber=9884
ApplicationVersion=1609031.550
RamDiskVersion=20140626
BootLoaderVersion=839378
LinuxVersion=1574740

3. 硬件

组件识别信息
SoCSamsung S5P6440(通过 /etc/udev/rules.d/20_local-s5p6440.rules 确认)
CPUARM1176JZF-S · ARMv6 · 小端序 · EABI
RAM静态分析未能确定
内部存储NAND flash · eMMC(/dev/mmcblk0)
用户 SD 卡/dev/mmcblk1(可访问插槽)
屏幕Samsung LCD LTA058B3L0F(依据 DTB) · 480×272
帧缓冲/dev/fb0 · RGB16/24
GPSSiRF3 PRIMA · /dev/ttySAC2
GSM/GPRS 调制解调器Wavecom WISMO218 · /dev/ttyS0
RDS-TMC 调谐器BCM4750 · bcm4750_spi
蓝牙集成 · hci_uart · 仅 HFP + PBAP(不支持 A2DP)
触摸屏libts · /dev/input/event0

已加载的内核模块(摘自 /etc/modules)

unionfs · ppp_async · ppp_generic · slhc · hidp · hid · rfcomm
sco · hci_uart · l2cap · bluetooth · bcm4750_spi · vfat · msdos
fat · evdev

⚠️ 社区(gpspower.net)报告称,signedloop 模块会校验 rootfs.img 的完整性。在提取出的 rootfs 中未观察到该模块(既不在 /etc/modules 中,也不在 /lib/modules/2.6.28.10-tt1574740/ 中)。有待确认。


4. 固件提取

4.1 下载官方 CAB

固件可从 TomTom 的 Akamai CDN 无需身份验证下载:

curl -A "TomTom HOME/2.24.11.8" -O \
  "http://download.tomtom.com/sweet/navcore/9.884.1609031_RC06.CAB-Dieppe.cab"

# SHA256 de référence
a4d32daae2cdd6bc23a0660285c4e32e3a098034731eb257172ed7aaef9052d5

其他可用版本(已测试 HTTP 200):

版本URL
9.844http://download.tomtom.com/sweet/navcore/9844.634510.Carminat_TomTom.cab
9.845 RC10http://download.tomtom.com/sweet/navcore/9.845_1115399_RC10.CAB-Camiron-RC10.cab
9.846 RC12http://download.tomtom.com/sweet/navcore/9.846_1165624_RC12.CAB-Camiron-RC12.cab
9.847 RC14http://download.tomtom.com/sweet/navcore/9.847.1302316_RC14.CAB-Camiron-RC14.cab
9.884 RC06http://download.tomtom.com/sweet/navcore/9.884.1609031_RC06.CAB-Dieppe.cab

4.2 CAB 提取

brew install cabextract  # macOS
mkdir extracted && cabextract 9.884.1609031_RC06.CAB-Dieppe.cab -d extracted/
ls extracted/
# → splashw.bmp  ttsystem  TomTom-Cfg/release.nfo

ttsystem 是一个 ext2 镜像(不是 TTBL),与非 Live 版本不同。

4.3 提取完整的 rootfs

cd extracted/
mkdir rootfs && 7z x ttsystem -o rootfs/

# Le rootfs réel est dans userfs_partition.tar.gz
cd rootfs/
tar xzf userfs_partition.tar.gz

# Contenu :
# _zImage       → Linux kernel ARM zImage
# rootfs.img    → filesystem Linux complet (ext2, 67 MB)
# WISMO218_*.cla → firmwares modem

mkdir rootfs_mnt
# Sur Linux :
sudo mount -o loop rootfs.img rootfs_mnt/
# Sur macOS (lecture seule) :
7z x rootfs.img -o rootfs_mnt/

4.4 提取的固件结构

rootfs_mnt/
├── bin/
│   ├── ttn          ← NavCore principal (11.7 MB, ELF ARM dynamique)
│   ├── telttn       ← wrapper IPC vers ttn
│   ├── fakettn      ← fallback si ttn absent
│   └── gprscomd     ← daemon GPRS
├── etc/
│   ├── inittab
│   ├── fstab
│   ├── passwd       ← root:Twu6z6F/voF0Q (DES crypt)
│   ├── init/jobs.d/ ← 20+ jobs Upstart
│   └── udev/
├── lib/
│   ├── libosal.so.0 ← TomTom OS Abstraction Layer
│   ├── libhal.so.0  ← Hardware Abstraction (pilote fb0)
│   ├── libttmp.so.0 ← TomTom Multimedia
│   └── LoquendoTTS/ ← moteur TTS Loquendo
├── sbin/
│   ├── init         ← script shell → exec /sbin/upstart
│   ├── mount_sd_loopback
│   ├── mount_sd
│   ├── run_gprscomd
│   └── ttsystem_present
└── (sur partition userfs au runtime)
    └── /mnt/sdcard/script/
        ├── TTTaskList.lua  ← liste complète des TASK_* (300+)
        └── liblua.so       ← VM Lua chargée par ttn via dlopen

5. 文件系统架构

5.1 eMMC 分区表(mmcblk0)

分区挂载点类型选项
mmcblk0p3/mnt/flashext3defaults,sync,noauto
mmcblk0p5/contentext3defaults,sync,noauto
(不在 fstab 中)/mnt/sdcardext3确切机制未经验证

/mnt/sdcard 是内部 NAND,而非外部 SD 卡。这是 TomTom 命名习惯的遗留,其中“sdcard”指的是嵌入式存储。确切的挂载机制(可能是在 /sbin/init shell 之前的 bootloader/initramfs 阶段)尚未经本分析验证;这一推测源于 mount_internal 对 /content 执行的 remount,rw,这意味着此前已存在挂载。

5.2 外部 SD 卡(mmcblk1)

SD 卡通过 unionfs 挂载到 /mnt/movi,配置如下:

# Script /sbin/mount_sd_loopback (simplifié)
sd_mount="/media/sdcard"        # FAT32, RO
loop_mount="/media/loopback"    # ext3_loopback, RW upper
union_mount="/mnt/movi"         # unionfs des deux

mount -t vfat /dev/mmcblk1p1 $sd_mount \
  -o rw,noatime,nodiratime,nosuid,nodev,noexec,sync

mount -o loop $sd_mount/loopdir/ext3_loopback $loop_mount \
  -o rw,noexec,data=journal,commit=3600,async

mount -t unionfs unionfs $union_mount \
  -o rw,async,noexec,dirs=$loop_mount:$sd_mount=ro

⚠️ 双重 noexec 保护:在 FAT32 上通过 mount 显式指定该选项,并通过 unionfs 传播。社区还报告了一个内核钩子 post_mount(),强制对所有非 loop 文件系统启用 noexec(gpspower.net):本分析中未验证。

5.3 SD 卡内容(FAT32)

下载工具