解法
Daan Tech 的 Bob 是一款时尚的台面洗碗机,无需管道连接,其主打便利性是 Bob 墨盒:一个可放入的墨盒,内含 30 次洗涤的洗涤剂和漂洗剂。Daan 以 90 次洗涤 43 英镑(60 美元)的价格出售补充装,加上运费和增值税后,每次洗涤 48 便士(67 美分),若每天使用,每年约 174 英镑。明显的替代方案是支付订阅费或手动倒入洗涤剂,但制造商警告不要这样做,因为剂量和多阶段漂洗难以复制。
dekuNukem 将墨盒视为一个需要审计的系统,而不是一张需要支付的账单。连接到插座的四根线表明存在 I2C EEPROM,因此他用烙铁熔开外壳,发现了一个 24C02 芯片——256 字节内存,带有上拉电阻和二极管。他用一块废弃的板子通过 USB-A 插座转储了内容,运行一次洗涤,再次转储,发现地址 0xa1 处恰好有一个字节改变。解码序列显示它是剩余洗涤次数 XOR 0x50;写入 0x4e 将墨盒重置为 30 次。设置一个无意义的值会产生“111 次洗涤”,证明没有其他东西验证计数。
重置计数器只完成了一半——墨盒仍然需要液体。称量机器的废水给出了实际剂量:每次洗涤 4.33 毫升洗涤剂和 1.17 毫升漂洗剂。这将 Daan 模糊的“秘方”转化为两个可测量的浓度,而法规完成了其余工作:在英国销售的每种化学品都附有安全数据表,匹配 UFI 编号后来识别出 Daan 的确切洗涤剂。从餐饮供应商处购买的两个 5 升桶花费约 17 英镑,将运行成本降至每次洗涤 0.80 便士——大约便宜 60 倍,节省 98%——且盘子同样干净。
然后他将修复方案产品化:一块手工焊接的小板子,名为 Bob Rewinder,插入墨盒,按下按钮即可重置 EEPROM,通过 Tindie 销售,整个调查、用户手册和洗涤剂都记录在 GitHub 上。该文章在 2021 年 5 月发布后几周内在 Hacker News 上获得了 1260 分和 404 条评论。作者也注意到了讽刺之处:Daan 以环保的“积极循环”为卖点,却以内部散装化学品 60 倍的价格销售一次性塑料电子墨盒。
What it achieved
攻击锁本身:读取墨盒的 256 字节芯片,解码一字节洗涤计数器,并通过监管安全数据表匹配化学成分。
为什么有效
锁存在于一个普通的 24C02 芯片中,只有一个 XOR 混淆的字节且没有边界检查,因此廉价工具加上一次洗涤差异就揭示了整个计数器方案。
测量机器的实际用水量将“专有洗涤剂”转化为两种精确稀释度,使任何等效化学品都可以比较。
公开的安全数据表和 UFI 标识符让他能够根据成分验证替代品,而不是猜测,因此重新灌装是基于证据的,而非盲目乐观。
该修复保留了设置后无需再管的便利性——用注射器补充,按一下按钮续期——这就是为什么之后他使用机器的频率更高,而不是更低。
开源该方法使得修复能扩展到一个厨房之外:1.5k GitHub 星标、74 次提交、用户手册,以及任何人都可以购买的 Tindie 板。
可以借鉴什么
将通用消耗品锁定在一字节计数器后面只会引来重新灌装:如果化学成分并非真正专有,就在配方、服务或便利性上建立护城河——而不是 DRM。
后续
dekuNukem 开始在 Tindie 上销售 Bob Rewinder 板,并附带安全补充的用户手册。到 2021 年 5 月,该文章在 Hacker News 上获得 1260 分;5 月下旬的更新通过 UFI 编号识别出看似确切的洗涤剂,2022 年 3 月的更新添加了更多成分发现。一旦 DRM 成本消失,作者不再吝啬洗涤次数,每天多次运行机器;订阅经济学和琐碎的计数器芯片仍公开记录在案,供任何拥有者复制。
从这里,追溯依据
参考来源
- Bob Cassette Rewinder: Hacking Detergent DRM for 98% Cost Saving github.com
- Bob Cassette Rewinder: Hacking Detergent DRM news.ycombinator.com