ludwig-v/wireless-carplay-dongle-reverse-engineering

GitHub: ludwig-v/wireless-carplay-dongle-reverse-engineering

针对 Carlinkit/CPlay2Air 无线 CarPlay 转换器的硬件逆向与固件破解项目,涵盖芯片级分析、Root 获取及跨版本固件移植方法。

Stars: 851 | Forks: 113

![Carlinkit V2](https://i.imgur.com/ZL3dq41.png) ## Carlinkit / Carplay2Air 逆向工程 ## 硬件 | 硬件 | 部件 | |--|--| | Flash | Macronix 25L12835F (16MB) | | SoC | Freescale i.MX6 UltraLite | | CPU | ARM Cortex-A7 (ARMv7) *- **伪造的** ATMEL AT91SAM9260 标记 -* | | RAM | Micron/SK Hynix 1Gb (64x16) | | Wi-Fi/BT | RTL8822BS 或 RTL8822CS 或 RTL8733BS (Realtek) 或 Fn-Link L287B-SR (Marvell) 或 LGX4358 (Broadcom) 或 LGX8354S (Broadcom) 或 IW416 (NXP) | ## 硬件差异 从一开始,硬件基础几乎保持完全一致,只是设备外壳/设计发生了变化(V4 上的导热垫 / V5 上的散热孔) Wifi 芯片似乎仅根据制造商的库存进行更换。无论使用哪种 Wifi 芯片,都是通过 SDIO 协议(高速 4 位 SD)连接,频率为 50Mhz,最大速度为 25MB/s (200 Mbps) Carlinkit 主要出于营销目的,通过不同的软件创建了自己的产品细分: - 1.0 / 2.0 / 3.0 = U2W :仅支持有线 Carplay OEM 转无线 Carplay - 4.0 = U2AW :支持有线 Carplay OEM 转无线 Carplay + 无线 Android Auto - 5.0 = U2AC :支持有线 Carplay OEM 或有线 Android Auto OEM 转无线 Carplay 和无线 Android Auto ![Box Types](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3b02e5b60b182318.png) ## 软件 这个仓库始于我在 2020 年通过刷入自定义镜像获得 root 权限之时。 当时的固件镜像只是经过混淆处理的 tarball 压缩包,建立一个字典就足以解包和重新打包固件镜像。 不幸的是,这种情况没持续多久。Carlinkit 注意到了这个仓库,他们在 2021.03.06 版本的固件中使用一个新的二进制文件(现在已在 2025 年被攻破)更改了固件镜像的打包方式,他们还在随后的固件中加强了内核安全性,以阻止任何使用 "strace" 对二进制文件进行逆向工程的行为。 ### 通过软件对设备进行 Root 通过刷入任何可用的自定义固件,可以在不使用任何硬件方法的情况下获得 Carlinkit 设备的 root 权限。 ### 通过硬件切换设备固件 可以使用编程器(ASProgrammer, XGEcu 设备, Raspberry Pi)重写 Flash 芯片,从而从一种固件切换到另一种。 目前测试过的: - 1.0 到 U2AW ☑️ - *适用于 Realtek RTL8822BS Wifi 芯片的版本最高至 2022.07.29.1635* - 2.0 到 U2AW ☑️ - *适用于 Realtek RTL8822BS Wifi 芯片的版本最高至 2022.07.29.1635* - *适用于 Broadcom LGX8354S Wifi 芯片的版本最高至 2022.06.17.1439* - *适用于 Fn-Link L287B-SR (Marvell) Wifi 芯片的任何固件* - 3.0 到 U2AW ☑️ - *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.16.0952 开始* - *适用于 Fn-Link L287B-SR (Marvell) Wifi 芯片的任何固件* - 2.0 到 U2AC ❌ *(无法启动)* - 3.0 到 U2AC ❓ *(可能适用于 2023.10.14.1711 版本)* - 4.0 到 U2W ☑️ - *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.31.1425 开始* - *适用于 Broadcom LGX4358 Wifi 芯片的版本从 2022.07.29.1625 开始* - *适用于 Realtek RTL8822BS Wifi 芯片的任何固件* * - 4.0 到 U2AW ❌ *(无法启动)* - 5.0 到 U2W ☑️ - *适用于 Realtek RTL8822CS Wifi 芯片的版本从 2023.10.31.1425 开始* - *适用于 Broadcom LGX4358 Wifi 芯片的版本从 2022.07.29.1625 开始* - *❌ Realtek RTL8733BS Wifi 芯片无法实现* - 5.0 到 U2AW ❌ *(无法启动)* 请注意,**Carlinkit 控制设备激活**(通过 /etc/uuid_sign),你的设备虽然可以运行,但会被阻止在激活模式,新的激活现在需要没有人拥有的登录名/密码,在尝试此操作之前,**请将你的原始 Flash 保存在安全的地方**。 ### 通过硬件对设备进行 Root 查看 https://github.com/ludwig-v/wireless-carplay-dongle-reverse-engineering/tree/master/Flash_Dump 以使用 Raspberry Pi 读取 Flash(你也可以使用任何其他带有夹子的编程器) 查看 https://github.com/ludwig-v/wireless-carplay-dongle-reverse-engineering/tree/master/Flash_Dump/Tools 以提取 rootFS 一旦恢复了自定义固件的行为,你就可以安装 Dropbear (SSH) 并获得 Carlinkit 设备的 root 访问权限 ## 文件系统 ``` $ cat /proc/cmdline console=ttyLogFile0 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=21e0000.qspi:256k(uboot),3328K(kernel),12800K(rootfs) rootwait quiet rw $ cat /proc/mtd dev: size erasesize name mtd0: 00040000 00010000 "uboot" mtd1: 00340000 00010000 "kernel" mtd2: 00c80000 00010000 "rootfs" $ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/root jffs2 12800 10940 1860 85% / devtmpfs devtmpfs 61632 0 61632 0% /dev tmpfs tmpfs 61732 6324 55408 10% /tmp /dev/sda1 vfat 62498880 42304 62456576 0% /mnt/UPAN ``` ## u-boot 编译 ``` apt-get install device-tree-compiler gcc-arm-linux-gnueabihf export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- git clone https://github.com/ARM-software/u-boot.git make mx6ull_14x14_evk_defconfig make all ``` 当通过 USB-OTG 供电时,设备可以被视为 "SP Blank 6ULL",但无法使用 imx_usb 刷入自定义 u-boot,因为它是经过签名的 ## 有趣的仓库链接 https://github.com/segfly/carlinkit-modding https://github.com/Henkru/cplay2air-wifi-passphrase-patch https://github.com/Quikeramos1/Unbrik-Carlinkit-V3 https://github.com/lvalen91/CPC200-CCPA-Firmware-Dump
标签:Android Auto, Carlinkit, CarPlay, CSV导出, i.MX6, IoT安全, Root, SDIO, Wi-Fi芯片, 云资产清单, 固件破解, 固件解包, 嵌入式系统, 无线适配器, 汽车电子, 流量嗅探, 硬件分析, 网络安全审计, 越狱, 车联网, 逆向工程