你骑过那种带屏幕的电动滑板车吗?仪表盘上跳着速度、电量、里程,看起来挺正常。但有人发现,这块屏幕背后藏着一个让人不太舒服的漏洞:你可以不小心进入固件更新模式,然后从那里绕过安全PIN,直接进入操作模式。
换句话说,一道本该拦住你的门,其实没锁。
![]()
一位叫 [Ben] 的开发者没有选择忍。他做了一件很"硬核"的事——把整台车的通信协议逆向工程了一遍,然后用 Rust 重写了固件。他自己的说法是:"……因为我必须拆掉……我拥有的每一件东西……"
这句话听起来像玩笑,但懂的人会笑完之后沉默一下。因为这种"看不过去就自己动手"的冲动,其实很多人都懂。
先说说他是怎么发现问题的
这台 Egret GT 电动滑板车,官方配了一个手机App,用来查看一些基础信息。对懂技术的人来说,嗅探蓝牙并不难,分析手机端的代码也基本是直来直去的活。
但分析结果让他发现了更多东西。
屏幕上没显示的数据,App里能看到。而且,有几项数据会被回传到厂商的服务器,还带着这台车唯一的ID标签。也就是说,你骑车的某些信息,并不只属于你。
这成了他决定换掉原厂固件的另一个理由。
拆开之后,事情比想象中更有意思
这台车内部用的是 CAN Bus(控制器局域网总线)。为了读懂它,他搬出了示波器,还自己动手做了一个CAN解码器。
最让人意外的一点是:CAN总线居然可以从 USB-C接口的数据引脚 上访问到。
官方说这个接口只是用来给手机充电的。那就有个问题了——当你把手机插上去充电的时候,手机面对数据引脚上那些"外星信号",会怎么想?
这个问题素材里没有答案,但光是提出来,就足够让人对"充电口"这三个字重新审视一遍。
固件更新,其实不止一个版本
他还发现,固件更新至少分三种:显示屏、输入面板、主控制器。
这意味着,想要把新固件装进去,必须先搞清楚整个固件更新流程是怎么运作的。逆向这个流程,是安装新固件的关键一步。
如果你也有一台类似的滑板车,这些内容几乎就是一份现成的路线图。如果你没有,它依然是一份非常详细的逆向工程流程拆解——里面的工具和方法,可以用在你下一个项目上。
不想折腾固件,还有另一条路
当然,还有一个更直接的选择:留着这台车,把它的"大脑"换掉。
如果你对逆向工程本身产生了兴趣,网上有大量现成的入门内容可以看,足够你从零开始摸索。
回到最开始那个问题:一辆电动滑板车被重写固件,为什么值得普通人关心?
因为这件事的核心不是滑板车,也不是Rust,而是一个很朴素的判断——你买的东西,到底听谁的。
当一台车可以绕过PIN进入操作模式,当骑行数据带着唯一ID回传,当充电口的数据引脚上跑着官方没打算让你看见的信号,这些问题就不再只是技术爱好者的玩具。
有人选择接受,有人选择拆开看看。两种都没错。但至少,知道门后面有什么,比以为门是锁着的,要好一点。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.