逆向Egret GT电动滑板车并重构Rust固件

Reverse engineering my e-scooter and rewriting the firmware in Rust

逆向Egret GT电动滑板车并重构Rust固件

我入手了一台Egret GT电动滑板车,出于对安全漏洞的担忧,决定对其硬件和固件进行逆向工程。通过拆解移动App的蓝牙协议,我发现了设备会上传未公开的驾驶数据。随后,我利用示波器和ESP32-C6搭建工具,意外发现其USB-C接口竟被用作CAN总线。在成功解析CAN消息并控制电机后,我购买了替换件提取了固件,最终计划用Rust重写显示单元的固件,以彻底掌控这台设备。

因为我有种习惯,要把自己拥有的所有东西都拆解研究一番,所以我最终决定弄清楚这台滑板车的工作原理。
  1. abound

    这是一个令人难以置信的出色项目,文章写得也非常精彩,读起来很过瘾。我好奇作者有没有考虑过用 Slint [1] 来做 UI,毕竟他们在用 buoyant 时遇到了代码生成膨胀的问题(虽然 buoyant 看起来也很酷)。我两个都没用过,但做过几个 Embassy 的项目,总是在找机会试试嵌入式 GUI 工具。

    [1] https://slint.rs/

  2. trevithick

    这种逆向工程对我来说简直就是黑魔法。文章写得很好,细节详实,尽管我太笨了,这辈子都不敢尝试这种事,但我还是能跟上作者的思路。作者干得漂亮。

    我特别喜欢引言里的第 2 点。

  3. zoobab

    我们需要把 Bosch 的系统解放出来。他们虽然用了很多开源库,但把整个链条都封闭了(比如备用电池),导致你没法接入其他供应商的外部电池。

  4. asimovDev

    谢谢分享!今年春天我买了一辆电动滑板车,在逆向了官方 App 和 BLE 日志后,自己写了一个 App 来控制它。不过我还不够勇敢,不敢去动固件。至少目前是这样。

  5. quietraster

    用 Rust 重写滑板车固件,正是我来这里寻找的那种“不必要的卓越”。你是怎么调试的?不会把板子变砖吗?是用 SWD 探针还是全靠信仰?

同日更多故事

2026-09-13