Lobsters | 原文链接 | 2026-09-10 收录

逆向我的电动滑板车并用 Rust 重写固件:从藏在 USB-C 引脚里的 CAN 总线到无鉴权刷机

来源: bensimms.moe — 2026-08-09

概述

作者给自己那辆 Egret GT 电动滑板车做了一次彻底的硬件与固件逆向,并全程用 Rust 写了显示器固件。起因是一个小疙瘩:按住下键上电会进固件更新模式,退出后能绕过 PIN 直接骑行。他从手机 App 的蓝牙处理器入手,发现厂方会把总骑行时长、里程与充电历史回传并关联到车辆 ID,这些行为在 App 里并没讲清楚。接着他把目光投向标称「仅供充电」的 USB-C 口,用示波器一探才发现其中两个引脚竟被当成 CAN 总线在用;于是拿 ESP32-C6 + MCP2515 搭了个 CAN 嗅探器,逐个标出油门、档位、电机转速等报文。随后他买回控制器与显示器拆解:控制器的 APM32E103 主控四根焊盘正是 SWD,OpenOCD 直读 flash/RAM 后用 Ghidra 逆出三套程序——引导、更新器与主应用,还在固件长度字段那里见到用 ASCII 十进制的奇葩存法。显示器里有 AT32F415、蓝牙 CH573、NFC 读卡器等多颗芯片,整个刷机流程毫无加密,引导器校验一段 CRC 后直接把 64 字节块写进 flash——意味着理论上可以无鉴权改任何一台滑板车。

核心要点

金句

Yes, this also means that it's possible to modify the firmware of any scooter without authentication :))))
返回 Lobsters 首页