Google OnHub の root 奪取
1年ほど前に購入したものの、フレッツ用のMTUに調整できなかったため、メルカリで売り出したASUSのOnHub。買い手がつかなかったけど結果オーライ。以前調べたときはTP-LinkのOnHubしかroot化情報が無かったけど、ASUSのOnHubもrootが取れる情報を見つけた。
OnHub
Google謹製の ChromeOS搭載ルータでTP-LinkとASUS製がある。後継の Google WiFi と組み合わせてメッシュWiFiを構築することも可能。
準備物
ドローンとか、3Dプリンターとかで買い揃えてたので工具含めて追加購入は無し。- WindowsPC
- USBキーボード
- USBメモリ
- USBシリアル変換
- ブレッドワイヤー オス-メス3本
- MicroUSBケーブル(データ通信用)
- 各種ドライバ(通常の+/-と、ミニドライバが必要)
- ヘアピン等の細い棒
手順
- OnHubへ配置するためのファイルをダウンロードしてUSBメモリに配置 ※解凍不要
- 電源ケーブルを抜く
- ゴム足を取り外してネジにアクセスできるように
- 4つのネジを外して裏蓋を開ける。
- スピーカーを固定している3つのネジを外す。
- Write Protect Screw を緩める。
- ジャンパワイヤ ⇔ FTDI USBシリアル変換アダプタ ⇔ PC を接続
- USBキーボードを刺す
- USBの上のリセットボタンをヘアピンで押したまま、電源ケーブルを刺す。
LEDが白→オレンジ(点滅)→赤(ゆっくり点滅) と変わるまでリセットボタンは押したままで。 - CTRL + D を押す。
LEDが紫(点滅) - 開発モードボタンを押す(スピーカーケーブルの横)
OnHub が再起動し、LEDは紫(点滅)に - Poderosaでシリアルアクセス(baudrate 115200)してroot(PASS無し)でログイン
Uncompressing Linux... done, booting the kernel. Developer Console To return to the browser, press: [ Ctrl ] and [ Alt ] and [ <- ] (F1) To use this console, the developer mode switch must be engaged. Doing so will destroy any saved data on the system. In developer mode, it is possible to - login and sudo as user 'chronos' - require a password for sudo and login(*) - disable power management behavior (screen dimming): sudo initctl stop powerd - install your own operating system image! * To set a password for 'chronos', run the following as root: chromeos-setdevpasswd If you are having trouble booting a self-signed kernel, you may need to enable USB booting. To do so, run the following as root: enable_dev_usb_boot Have fun and send patches! localhost login: root root@localhost $ ^[[?1;2c -dash: ot found -dash: 2c: not found
- デフォルトシェルのdashは使いにくいのでbashを起動。
root@localhost $ bash
- Write Protectを無効に。
localhost ~ # flashrom --wp-disable flashrom v0.9.4 : 5cdb7e5 : Jun 25 2016 00:24:46 UTC on Linux 3.14.0 (armv7l), built with libpci 3.1.10, GCC 4.9.x 20150123 (prerelease), little endian SUCCESS
- 開発者キー生成
localhost ~ # /usr/share/vboot/bin/make_dev_firmware.sh Disabling system software write protection status... Reading system live firmware... Using keyblocks (normal, normal)... Preparing new firmware image... Backup of current firmware image is stored in: /mnt/stateful_partition/backups/firmware_ARKHAM_C2Y-Q2I-Q4Z_20160930_180004.fd Please copy the backup file to a safe place ASAP. To stop using devkeys and restore original firmware, execute command: flashrom -w [PATH_TO_BACKUP_IMAGE] Ex: flashrom -w /mnt/stateful_partition/backups/firmware_ARKHAM_C2Y-Q2I-Q4Z_20160930_180004.fd Writing system live firmware... Successfully changed firmware to Developer Keys. New HWID: ARKHAM C2Y-Q2I-Q4Z DEV
- パーティション2と4の書込制限を解除
localhost ~ # /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --image /dev/mmcblk0 --partition 2 INFO: Making change to 2 on /dev/mmcblk0. Kernel A: Disabled rootfs verification. Backup of Kernel A is stored in: /mnt/stateful_partition/backups/kernel_A_20160930_180953.bin Kernel A: Re-signed with developer keys successfully. Successfully re-signed 1 of 1 kernel(s) on device /dev/mmcblk0. localhost ~ # /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --image /dev/mmcblk0 --partition 4 INFO: Making change to 4 on /dev/mmcblk0. Kernel B: Disabled rootfs verification. Backup of Kernel B is stored in: /mnt/stateful_partition/backups/kernel_B_20160930_181021.bin Kernel B: Re-signed with developer keys successfully. Successfully re-signed 1 of 1 kernel(s) on device /dev/mmcblk0.
- USBキーボードを外してUSBメモリを刺す
- USBメモリのデータを展開して、busybox(telnetd 含む) と、dropbear(軽量sshd)を配置する。
mmcblk0p3 か mmcblk0p5 のどちらかのマウントは失敗するので、成功したほうにデータを展開。
下の例では mmcblk0p5 - rootb が対象。localhost ~ # cd /home/chronos localhost chronos # mkdir usb roota rootb localhost chronos # mount /dev/sda1 usb/ localhost chronos # mount /dev/mmcblk0p3 roota/ mount: /dev/mmcblk0p3 is already mounted or /home/chronos/roota busy localhost chronos # mount /dev/mmcblk0p5 rootb/ localhost chronos # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 755920 131308 624612 18% / devtmpfs 496792 0 496792 0% /dev tmp 496972 100 496872 1% /tmp run 496972 204 496768 1% /run shmfs 496972 12 496960 1% /dev/shm /dev/mmcblk0p1 1916496 48700 1752392 3% /var /dev/mmcblk0p8 11760 24 11412 1% /usr/share/oem media 496972 0 496972 0% /media none 496972 0 496972 0% /sys/fs/cgroup /dev/sda1 7520256 2244 7518012 1% /home/chronos/usb /dev/mmcblk0p5 755920 101816 654104 14% /home/chronos/rootb localhost chronos # tar zxvf usb/files.tar.gz -C rootb/ ./ ./bin/ ./bin/busybox ./usr/ ./usr/bin/ ./usr/bin/dropbear ./usr/bin/dropbearmulti ./usr/bin/dropbearkey ./etc/ ./etc/init/ ./etc/init/dropbear.conf ./etc/init/telnetd.conf ./etc/shadow
- ブートローダ書き換え。-i の引数は成功したほうの番号。
localhost chronos # cgpt add -i 5 -P 5 -T 1 -S 0 /dev/mmcblk0
- 念のためアンマウントしてから電源ケーブルを抜き、USBメモリも一旦外す
localhost chronos # umount usb localhost chronos # umount rootb
- 電源ケーブルを刺して起動。
- Poderosaでシリアル接続にrootログイン
- USBメモリを刺し直し、先ほど失敗したパーティションにも同様にデータを展開。
root@localhost $ bash localhost ~ # cd /home/chronos localhost chronos # mount /dev/sda1 usb/ localhost chronos # mount /dev/mmcblk0p3 roota/ localhost chronos # tar zxvf usb/files.tar.gz -C roota/ localhost chronos # umount usb localhost chronos # umount roota
- 電源ケーブルを抜き、USBメモリはUSBキーボードと付け替える。
- 電源ケーブルを刺しなおして起動
LEDは紫(点滅)のまま。つまりまだ Developer Mode。 - Ctrl-Dで再起動すると通常起動
WiFiに setupB444 のようなのが表示されればOK
結果
とりあえず telnetログインできるようになった。ID/PASS → root/onhubdropbear(SSH) は機能してない。。が原因調査はしてない。
以下あたりを参照して後日直す。
登録:
コメントの投稿
(
Atom
)
0 件のコメント :
コメントを投稿
ご来訪者様の判別のため、
匿名希望の方もコメントの記入者欄に「名前/URL」 を選択し、
テキトーなペンネームを入れてくださいm(_ _)m
※ URLは不要。書いていただいてもOK。