その他
ロック/無効化された電子廃棄物Cricut Makerのロック解除
Unlocking a locked/deactivated e-waste Cricut Maker (sprocketfox.io)
要約
筆者は電子廃棄物の中からCricut Makerを発見し、修理・再利用を試みた。このマシンは「Machine deactivated」と表示されロックされていたが、筆者はRPi RP2040を使用してUSB通信を傍受し、ハードウェアレベルでシリアル番号を書き換えることでロックを解除することに成功した。この方法は、ソフトウェアのみのソリューションやファームウェアの改変など、他の代替手段も存在する可能性を示唆している。
全文翻訳
ゴミを捨てに行くと、電子廃棄物の中にCricut Makerを見つけました。それを少し見てみると、ローラーが劣化している以外は、外観はかなり良好な状態でした。ローラーが処分された理由だと推測し、調査のために家に持ち帰ることにしました。Cricutが機械を無効化/ロックすることにかなり積極的であることは知っていましたが、遊びでいじってみる価値はあるだろうと思いました。結果として、この機械はロックされていましたが、それは予想通りでした。しかし、いくつかのハッキングにより、完全な機能を取り戻すことができました。最後のユーザーは、保証交換品を受け取ったか、新しいモデルの割引を受けた可能性が非常に高いです。Alexは簡単な検索を行い、交換用ローラーがわずかなドルで容易に入手できることを見つけました。機械の電源を、要求されている18Vではなく12Vで入れた場合でも、自己診断テストをパスし、ソフトウェアと通信する兆候を示しましたが、接続時に「Machine deactivated」という忌まわしいメッセージが表示されました。最初に調査しようと思ったアプローチは、マザーボードにシリアル番号を書き換えられるEEPROMがあるかどうかでした。分解は容易ではありませんが、ローラーを交換するためにはいずれにせよ必要でした。EEPROMは見つからず、使用されているMCUはデバッガーを持っていないものでした。次に考えたのは、ネットワーク接続を傍受して、シリアル番号を置き換えるか、成功メッセージを返すことでした。しかし、さまざまなアプリケーションセキュリティ対策により、証明書ピン留めを無効化するのが、私が望むよりも面倒になりました。これは不可能だということではありません。ただ、それを簡単に実行する方法を見つけられなかっただけです。私の焦点は、カッターとコンピューター間の通信を傍受することに移りました。Wiresharkを起動して、Cricutと私のマシン間のUSBメッセージをキャプチャしました。通信にはUSB CDCが使用されており、シリアル番号を送信するパケットをすぐに発見しました。チェックサムや暗号化は存在しないようでした。そこで、DroppyからRPi RP2040を借りました。これはUSBホストとUSBクライアントの両方として機能できます。USBホストとCDCシンプルなエコーのためのTinyUSB Arduinoの例を使用して、簡単なプロキシ/書き換えデバイスを組み立てることができました。これに特別なことは何もありませんでしたが、USBホストが240MHzにオーバークロックされないと正しく動作しないことを理解するのに少し時間がかかりました。また、ベンダー/製品IDや説明などのすべてのUSBメタデータをユニットに合わせて設定しました。カッターからのパケットが正しい長さと一致し、コマンド/シリアル番号が含まれている場合、それを別のシリアル番号に置き換えます。シリアル番号は順番に発行されているようで、Cricutのウェブページで全ユニットの状態を確認できます。書き換えデバイスがハードウェアレベルでシリアル番号を置き換えるため、ソフトウェアは何も気づきません。ユニットは私のアカウントに表示されます。Cricutのマシンステータスページに存在しないシリアル番号さえ登録できました。明らかに、これは見知らぬ人が他のユーザーのCricutシリアル番号をロックアウトしたり、自分のアカウントに追加したりできるのかという疑問を提起します...ユニットを清掃し、ローラーを交換し(ヒント、新しいローラーを取り付けるには温水で柔らかくしてください)、Cricutを再組み立てし、RP2040用のケースを印刷した後、新品同様に使用できるようになりました。このCricutを機能させるために私が取ったアプローチは、おそらく最もユーザーフレンドリーではない方法ですが、ソフトウェアのみのソリューションが存在すると信じています。考えられる代替手段としては、ネットワークトラフィックを傍受するか、アプリケーションをパッチして異なるシリアルを報告する、Cricut USB CDC接続を装うドライバーを書き、シリアルをプロキシする、Cricut USB CDC接続を装うドライバーを書き、Bluetooth経由でCricutに接続する、ファームウェアアップデートプロセスを理解し、アップデートの一部としてシリアル番号をパッチするためにそれを利用する、Bluetoothプロキシとして機能するデバイス、BluetoothチップとCricut MCUの間に別のMCUを追加して、Bluetoothチップに送信する前にシリアル番号を書き換える、などがあります。私には機能するものがあるので、これらのいずれも調査するつもりはありませんが、これらはすべて探求する価値のある選択肢です。さらに、このシリアル番号の変更を実行するために必要なコードを共有するつもりはありません。これはオーストラリアの著作権法で免除されない可能性があるためです(弁護士ではありませんなど)。しかし、TinyUSB Arduinoライブラリに含まれる例に非常に近いです。cricutリバースエンジニアリング unbrickカッター