Google OnHub の root 奪取

0 件のコメント
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ケーブル(データ通信用)
  • 各種ドライバ(通常の+/-と、ミニドライバが必要)
  • ヘアピン等の細い棒
 

手順

  1. OnHubへ配置するためのファイルをダウンロードしてUSBメモリに配置 ※解凍不要
  2. 電源ケーブルを抜く
  3. ゴム足を取り外してネジにアクセスできるように
  4. 4つのネジを外して裏蓋を開ける。
  5. スピーカーを固定している3つのネジを外す。
  6. Write Protect Screw を緩める。
  7. ジャンパワイヤ ⇔ FTDI USBシリアル変換アダプタ ⇔ PC を接続
  8. USBキーボードを刺す
  9. USBの上のリセットボタンをヘアピンで押したまま、電源ケーブルを刺す。
    LEDが白→オレンジ(点滅)→赤(ゆっくり点滅) と変わるまでリセットボタンは押したままで。
  10. CTRL + D を押す。
    LEDが紫(点滅)
  11. 開発モードボタンを押す(スピーカーケーブルの横)
    OnHub が再起動し、LEDは紫(点滅)に
  12. 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
  13. デフォルトシェルのdashは使いにくいのでbashを起動。
    root@localhost $ bash
  14. 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
  15. 開発者キー生成
    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
  16. パーティション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.
  17. USBキーボードを外してUSBメモリを刺す
  18. 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
  19. ブートローダ書き換え。-i の引数は成功したほうの番号。
    localhost chronos # cgpt add -i 5 -P 5 -T 1 -S 0 /dev/mmcblk0
  20. 念のためアンマウントしてから電源ケーブルを抜き、USBメモリも一旦外す
    localhost chronos # umount usb
    localhost chronos # umount rootb
  21. 電源ケーブルを刺して起動。
  22. Poderosaでシリアル接続にrootログイン
  23. 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
  24. 電源ケーブルを抜き、USBメモリはUSBキーボードと付け替える。
  25. 電源ケーブルを刺しなおして起動
    LEDは紫(点滅)のまま。つまりまだ Developer Mode。
  26. Ctrl-Dで再起動すると通常起動
    WiFiに setupB444 のようなのが表示されればOK

結果

とりあえず telnetログインできるようになった。ID/PASS → root/onhub
dropbear(SSH) は機能してない。。が原因調査はしてない。

0 件のコメント :

コメントを投稿

ご来訪者様の判別のため、
匿名希望の方もコメントの記入者欄に「名前/URL」 を選択し、
テキトーなペンネームを入れてくださいm(_ _)m
※ URLは不要。書いていただいてもOK。