破解一台被锁定/禁用的电子垃圾 Cricut Maker

破解一台被锁定/禁用的电子垃圾 Cricut Maker

Hacker News 摘要

原标题:Unlocking a locked/deactivated e-waste Cricut Maker

作者在处理垃圾时发现了一台被遗弃在电子垃圾堆里的 Cricut Maker 切割机。这台机器外观品相良好,只是滚轮已经老化。作者推测这可能是机器被遗弃的原因,于是将其带回家研究。虽然作者知道 Cricut 公司在禁用或锁定机器方面非常激进,但仍觉得值得一试。

设备状况与初步尝试

经过检查,这台机器确实处于锁定状态,这在预期之内。前任用户很可能通过保修更换了新机,或者在购买新型号时获得了折扣,导致旧机器被远程停用。

作者发现更换滚轮的零件非常便宜且容易购买。在测试阶段,作者即便使用 12V 电源(而非要求的 18V)供电,机器也能通过自检并与软件通信,但在连接时会弹出极其讨厌的 Machine deactivated(设备已停用)提示。

作者最初考虑了两种破解思路:

• 硬件层面: 尝试寻找主板上的 EEPROM 芯片以重写序列号。但在拆解后,作者没有发现 EEPROM,且主控 MCU 的调试工具他手头也没有。

• 网络层面: 拦截网络连接,修改序列号或伪造成功的返回消息。然而,由于应用程序存在安全措施(如证书绑定),绕过这些限制非常繁琐。

最终破解方案:USB 代理拦截

作者将目标转向拦截切割机与计算机之间的通信。通过 Wireshark 抓取 USB 数据包,作者发现该设备使用 USB CDC 协议进行通信。

在分析过程中,作者很快定位到了发送序列号的数据包。令人惊讶的是,这些数据包既没有校验和,也没有加密。于是,作者利用一块 Raspberry Pi RP2040 开发板作为中转设备,使其同时充当 USB 主机(Host)和 USB 客户端(Client)。

技术细节与实现

作者使用了 TinyUSB Arduino 库中的示例代码,拼凑出了一个简单的代理和重写设备。实现过程中的关键点包括:

• 性能优化: 为了让 USB 主机模式正常工作,必须将 RP2040 超频至 240MHz。

• 身份伪造: 配置了与原厂机器一致的厂商 ID、产品 ID 和描述信息。

• 实时拦截: 当开发板检测到来自切割机且包含命令序列号的特定长度数据包时,会将其替换为另一个有效的序列号。

序列号似乎是按顺序生成的,用户甚至可以在 Cricut 官网上查看所有单元的状态。由于重写发生在硬件底层,官方软件完全无法察觉。作者甚至成功注册了一些在官方状态页面上查不到的序列号。这也引发了安全担忧:陌生人可能轻易锁定其他用户的序列号或将其关联到自己的账户。

最后的修复与思考

在清理机器并更换滚轮后(窍门是使用热水烫软新滚轮以便安装),作者重新组装了设备,并为 RP2040 打印了一个小外壳。现在,这台被遗弃的机器可以像新机器一样正常工作。

除了硬件拦截,作者还提出了一些其他潜在的破解方案:

• 拦截网络流量或对应用程序进行补丁处理,使其报告错误的序列号。

• 编写一个模拟 Cricut USB CDC 连接的驱动程序。

• 编写一个通过蓝牙连接机器但模拟 USB 通信的驱动程序。

• 研究固件更新流程,并在更新过程中修改序列号。

• 制作一个蓝牙代理设备或在蓝牙芯片与主控 MCU 之间增加拦截芯片。

作者表示他不会分享具体的代码,因为这可能涉及法律合规性问题。但他提到,其实现方式与 TinyUSB Arduino 库中的示例非常接近。


原文:https://sprocketfox.io/xssfox/2026/07/01/cricut-unlock/

评论:https://news.ycombinator.com/item?id=49365841

Report Page