Osegi
ハードウェア·2 分で読めます

Xiaomi Mi Smart Speakerでroot取得、再起動後も残るSSH

Marusya搭載のXiaomi Mi Smart Speakerで、ブートローダーのUSB窓を使いroot権限と再起動後も残るSSHを実現。NAND全体のバックアップも取った。

Xiaomi Mi Smart Speaker with its board exposed and thin wires soldered to USB test pads, connected to a laptop.
画像: Хабр

2021年にスマートフォンの販促で手に入れたXiaomi Mi Smart Speakerを、自分だけのLinux機にしたい。そう考えたロシアの開発者が、Xiaomi Mi Smart Speakerのroot権限と、通常の再起動後も残るSSHの導入に成功した。GUI、コマンドライン、ソースコード、テストを備えたツール「SpeakerLab 1.0」も公開している。

Xiaomi Mi Smart Speakerでrootを取る仕組み

対象の基板ではSecure Bootが有効だ。ただし標準のブートローダーは、bootイメージの検証に成功したあとRAM上のデータを書き換えられる。この隙間で一時的なインストーラーを動かす。純正のカーネルとDTBはそのままで、initramfsだけを所有者の公開SSH鍵入りのものに差し替える。署名の偽造やOTP/eFuse鍵の変更は行わない。

SSH関連のファイルは/data/speakerlab に置かれ、既存のwritable overlayから起動する。ブートローダーとカーネルは書き換えない。ただし/dataへの書き込みはNAND上の恒久的な変更なので、メモリが一切変わらないとは言えない。

対応するスピーカーと接続方法

確認されたのはMarusya版のAS09A VER0201基板のみ。SoCはAmlogic A113X、RAMは512MiB、ファームウェアは32.23.1、U-Boot 2015.01、Linux 4.9.113(Buildroot)だ。Google Assistant搭載のグローバル版は、パーティション構成やシステムが異なるため対象外となる。

コールド起動の直後、ブートローダーは短時間だけUSBで見え、PCには1b8e:c003として認識される。ツールが待機した状態で電源を完全に切って入れ直す必要があり、ソフトウェアの再起動ではこの窓が開かなかった。接続は基板上のUSBパッド(GND、D+、D-)を使い、VBUSは接続しない。

先にフルバックアップを取る理由

ツールはOOB領域と不良ブロックを含め、全131,072ページを物理読み出しする。1回で272MiBだ。ダンプにはネットワーク設定や鍵などの個人情報が入るため、公開アーカイブに作者のダンプは含まれない。またBL33のSHA256がprofile.jsonと一致しなければ処理を止める。

注目のアプリ

SUMO:数字パズル

正しいマスを選んで足し算、目標の数に。覚えるのは簡単、極めるのは難しい。無料、全年齢向け。

Dialo:話して学ぶ語学アプリ

AIの会話パートナーと話すだけ。一文ごとに添削され、あなたの言語で解説が返ってきます。9言語、A1からC2まで。

タグ:xiaomimi smart speakermaruskarootsshspeakerlab

同じ日のニュース

すべて見る →

関連カテゴリ: ハードウェア

すべて見る →