mnaberez/vwradio

GitHub: mnaberez/vwradio

对大众汽车旧款收音机进行逆向工程,发现 KWP1281 诊断协议中的隐藏后门,可通过车载诊断接口无需拆机读取安全码。

Stars: 118 | Forks: 13

# 大众汽车收音机 ![照片](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/52910df963190341.jpg) 这个仓库主要关于对旧款大众汽车收音机的逆向工程,例如上图所示的 Premium 5 收音机。这里研究的收音机均有十五年以上的历史,采用单 DIN 尺寸。尽管年代久远,但它们非常智能,并且支持车载诊断(在 K 线上使用大众的 KWP1281 协议)。您可以在这里找到有关协议和硬件的笔记,以及固件的部分反汇编代码,但不包含原始的固件或 EEPROM 二进制文件。 那个时代的大众收音机需要一个四位数字的安全代码,通常被称为“SAFE 码”。这些收音机通常将 SAFE 码存储在串行 EEPROM 中,例如 93C46 或 24C04。要获取 SAFE 码,可以通过打开收音机,拆焊 EEPROM,读取其中的内容,然后再将 EEPROM 重新焊回。我想知道是否有更简单的方法。 我反汇编了以下收音机的固件:Premium 4 (Clarion)、Premium 5 (Delco)、Gamma 5 (TechniSat) 和 Rhapsody (TechniSat)。我发现它们都有后门,可以通过车载诊断读取 SAFE 码。通过这种方式读取代码意味着不需要打开收音机,甚至可能不需要将其从车上拆下。由于这些信息并未在任何地方发布,而且我也找不到任何能够实现此功能的工具,因此我自己构建了一个工具。 ## 项目 - [`kwp1281_tool`](./kwp1281_tool/):诊断协议工具(大众 [KWP1281](https://translate.google.com/translate?hl=en&sl=de&tl=en&u=https%3A%2F%2Fde.wikipedia.org%2Fwiki%2FKWP1281))。它可以使用 KWP1281 协议向收音机或任何其他模块发送任意命令。它还可以使用在 TechniSat 收音机中发现的专有协议发送命令。最后,它可以自动检索上述任何收音机的 SAFE 码。 - [`faceplate_emulator`](./faceplate_emulator/):面板模拟器(NEC [µPD16432B](http://6502.org/documents/datasheets/nec/nec_upd16432b_2000_dec.pdf))。它插入 Premium 4 收音机以代替原装面板,允许通过串口控制收音机。它还可以同时控制真实的面板。 - [`tape_emulator`](./tape_emulator/):盒式磁带模拟器(飞利浦 TDA3612)。它插入 Premium 4 收音机以代替 SCA4.4/TDA3612 盒式磁带组件,欺骗收音机使其认为正在播放磁带。 - [`volume-monitor`](./volume_monitor/):音量监视器(三菱 [M62419FP](https://web.archive.org/web/20180328173343/http://pdf.datasheetcatalog.com/datasheet/MitsubishiElectricCorporation/mXrwwyx.pdf))。 它与 Premium 4 收音机中使用的 M62419FP 声音控制器并联连接,并在声音寄存器发生改变时通过串口发送更新。 - [`reverse_engineering`](./reverse_engineering/):通过逆向工程获取的关于收音机的笔记,包括带有注释的收音机固件反汇编列表。此仓库不包含任何原始固件或 EEPROM 二进制文件。 ## 发现 以下是我在这些收音机上发现的一些更有趣的结果: - 所有被研究的收音机在常规收音机地址 0x56 上都支持一组通用的 KWP1281 诊断功能。某些收音机(并非全部)在同一地址上还具有受保护的 KWP1281 命令。可用的受保护命令因型号而异,但可能包括读取微控制器的 ROM 或 RAM,以及读/写串行 EEPROM 的能力。访问受保护的命令需要发送基于 SAFE 码的登录块,并执行隐藏组的分组读取。 - 大众 Premium 4 (Clarion) 有一个不受保护的 KWP1281 命令 0xF0,可以返回 SAFE 码。它还包含一个隐藏模式,可以通过面板更改 SAFE 码。进入此模式需要按下面板上不存在的按键。我推测工厂使用了专用的制造面板。 - 大众 Premium 5 (Delco) 和 Seat Liceo (Delco) 响应地址 0x7C 上的另一组 KWP1281 命令。这些命令需要使用硬编码的登录块进行身份验证。通过身份验证后,可以使用命令读取和写入 EEPROM,从而检索 SAFE 码。 - 大众 Gamma 5 (TechniSat) 和 Rhapsody (TechniSat) 在地址 0x7C 上有一个专有的非 KWP 协议。这与我见过的任何文档中记录的协议都不一样,可能是 TechniSat 专门为收音机制造而开发的。它包含读取和写入 EEPROM 的命令,可用于检索 SAFE 码。EEPROM 的 SAFE 码区域通常会被这些命令过滤掉,但另一个命令可以禁用此过滤。 ## 衍生项目 作为这项工作的副产物,我还开发了其他几个项目: - [premium5](https://github.com/mnaberez/premium5):带有 Web 界面的大众 Premium 5 汽车收音机模拟器和调试器 - [k0emu](https://github.com/mnaberez/k0emu):支持周期计数和外围设备的 NEC 78K0 指令集模拟器 - [k0dasm](https://github.com/mnaberez/k0dasm):NEC 78K0 反汇编器,生成与 [as78k0](http://shop-pdp.net/ashtml/as78k0.htm) 汇编器兼容的输出 - [f2mc8dump](https://github.com/mnaberez/f2mc8dump):用于转储带有外部总线的富士通 F2MC-8L 微控制器内部 ROM 的漏洞利用程序 - [f2mc8dasm](https://github.com/mnaberez/f2mc8dasm):富士通 F2MC-8 反汇编器,生成与 [asf2mc8](http://shop-pdp.net/ashtml/asf2mc.htm) 汇编器兼容的输出 - [m740dasm](https://github.com/mnaberez/m740dasm):三菱 740 反汇编器,生成与 [as740](http://shop-pdp.net/ashtml/as740.htm) 汇编器兼容的输出 ## 作者 [Mike Naberezny](https://github.com/mnaberez)
标签:24C04, 93C46, Clarion, Delco, EEPROM读写, K-line总线, KWP1281协议, OBD, SAFE码破解, TechniSat, VW, 云资产清单, 单DIN, 后门分析, 固件反汇编, 大众汽车, 安全报告生成, 安全码提取, 嵌入式系统, 汽车电子, 汽车网络安全, 汽车防盗, 硬件改装, 硬件黑客, 自动回退, 诊断工具, 车载主机, 车载收音机, 车载诊断, 逆向工具, 逆向工程