返回

文章详情

解锁被锁定/停用的电子废物Cricut Maker

Hacker News2026年8月19日 19:06

在清理垃圾时,我发现了一个Cricut Maker的电子废物。快速查看发现它的外观状况相当不错,除了滚轮有些老化。我猜想滚轮可能是导致设备被丢弃的原因,因此决定把它带回家调查。我知道Cricut对禁用/锁定机器非常严格,但我觉得仍然值得尝试一下,玩得开心。结果证明这台机器是被锁定的,这也是意料之中的。然而,通过一些黑客技术,我能够使其恢复全面功能。很可能最后用户要么得到了保修更换,要么在新型号上获得了折扣。Alex快速搜索一下,发现替换滚轮非常便宜,随便几美元就能买到。即使把机器的电源设置为12v,而不是明显需要的18v,它仍然显示出生命迹象,通过了自检并与软件进行通信——但当连接时显示出讨厌的“机器已停用”信息。我考虑的第一个方法是查看主板上是否有EEPROM,以便我可以重写序列号。拆解机身并不适合胆小者——这涉及很多,但无论如何我都需要这样做以更换滚轮。我没有找到任何EEPROM,并且使用的MCU是我没有调试器的。我的第二个想法是拦截网络连接,替换序列号或返回成功信息。然而,各种应用程序安全措施使得禁用证书固定比我想要的要麻烦得多。这并不是说不可以——只是我没有找到一种简单的方式来做到这一点。我将重点转向在切割机和计算机之间的通信上进行拦截。我启动Wireshark,捕获Cricut和我的机器之间的USB消息。它使用USB CDC进行通信,我很快找到了负责发送序列号的数据包。似乎没有任何校验和或加密。因此,我借用了Droppy的一个RPi RP2040,它能够同时充当USB主机和USB客户端。使用TinyUSB Arduino的USB主机和CDC简单回显示例,我能够拼凑出一个简单的代理/重写设备。虽然没有什么特别之处,但我花了一些时间才弄明白USB主机在超过240MHz时才能正常工作。我还配置了所有USB元数据,如厂商/产品ID和描述,以与设备匹配。当它检测到来自切割机的有效包,并且具有正确的长度以及命令/序列号时,它将其替换为不同的序列号。序列号似乎是按顺序发放的,您可以在Cricut自己的网页上看到所有设备的状态。通过硬件级别的序列号重写,软件对此毫无所知。设备出现在我的账户中。我甚至可以注册那些在Cricut机器状态页面上并不存在的序列号。显然,这引发了一个问题,随机陌生人能够锁定其他用户的Cricut序列号或将其添加到他们的账户中……在清理设备、更换滚轮(提示:用热水软化新的滚轮方便安装)、重新组装Cricut并为RP2040打印一个小外壳后,我能够像全新的一样使用这台设备。我使这台Cricut恢复功能的方法可能是最不友好的方式,但我相信仅软件解决方案也是存在的。一些让我想到的替代方案是:拦截网络流量或补丁应用程序以报告不同的序列号;编写一个驱动程序,假装是Cricut USB CDC连接并代理序列号;编写一个驱动程序,假装是Cricut USB CDC连接,但通过蓝牙连接到Cricut;找出固件更新过程,并利用它作为更新的一部分来修补序列号;一个作为蓝牙代理的设备;在蓝牙芯片和Cricut MCU之间添加另一个MCU,以在数据发送到蓝牙芯片之前重写序列号。我不会调查其中任何一个,因为我有一个可以使用的方案,但这些都是值得探索的可行选项。此外,我不会分享执行序列号更改所需的代码,因为这在澳大利亚版权法中可能不被豁免(我不是律师等……),但它与TinyUSB Arduino库中包含的示例非常接近。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡