Kindle 3のshellにroot権限でアクセスしてみた


Kindle 3のシリアルコンソールに接続する方法は、さきほど書いたとおりです。

USB-TTLシリアルを使ってパソコンと接続すれば、あとはrootでログインするだけなのですが、rootのパスワードが分かりません。が、海の向こうには凄い人がいるものです。ubootのloadyでシリアルからkernelなど一式をYMODEMを使って転送して、シングルユーザーモードでKindle 3を起動する方法を公開している方がいらっしゃいました。

まず、僕は、minicomをインストールする方法を書いたとおり、MacOS Xでminicomをメインで使っています。minicomはYMODEMを外部プログラムと連携することで喋れるようになるので、まずはじめにYMODEMをインストールします。
といってもカンタンで、

$ sudo port install lrzsz

とするだけです。MacPortsって本当に便利ですね。これでYMODEMが /opt/local/bin/sb にインストールされるので、minicomの設定をしてやります。

あと、さきほどの書き込みにあったファイルをダウンロードしておきます。

で、Kindle 3にシリアルコンソールを接続した状態で、Kindle 3を再起動してやります。普通にKindleを操作してrebootしてやるだけです。すると、

Hit any key to stop autoboot:

というメッセージがKindleの起動直後に表示されるので、素早くEnterキーなどを押してやります。起動が中断できると、

uboot>

というプロンプトが出ますので、

loady 0x84000000

とタイプして、YMODEMでファイルを転送できる状態にします。受け入れ可能になると、”CCC”といった具合に”C”という文字が出るので、ここでminicomを操作して(Ctrl-A, z, sだったはず)でYMODEMを使ってさきほどのファイル、uImage-Kindle3-single-shellを転送します。115200bpsなので、2.1MBのファイルを転送するには少々時間がかかります。

転送中はこんな画面が出るはずです。

転送が終わったら、次に、

bootm 0x84000000

とタイプして、転送したバイナリを使ってKindle 3を起動します。ちなみに、起動してもプロンプトは表示されないので注意してください。Uncompressing Linuxと表示されたあと、数秒で起動するはずです。

この状態で、

mkdir /root
mount -t ext3 /dev/mmcblk0p1 /root
chroot /root /bin/sh

といったコマンドを次々とタイプしてやります。最後のchrootをすると、コマンドプロンプトが出てくるはずです。

あとは、

/bin/vi /etc/shadow

とコマンドを打って、viエディタでパスワードファイルを編集してやります。

root:4tqE8dgorG49A:10933:0:99999:7:::

という行をの”:”の間を削って、

root::10933:0:99999:7:::

としてやればrootのパスワードが削除できます。
できたら、”:wq”でviエディタを終了して、

sync

を数回しましょう。(1回でいいはずなのに、僕は3回くらいやっちゃいますw)
で、

exit

とコマンドを2回打ち込むと、2回目でKindleがpanicするはずです。電源スイッチを長く引いていると強制的に電源を切れるので、20〜30秒くらい引いたあと、もっかい引いて再起動してください。再起動すると、”kindle login: “とログインプロンプトでrootと打ち込むことで、パスワードなしでログインできるはずです。

一応、パスワードないマシンってのも気持ち悪いので、

mount -n -o remount,rw /
passwd root

として、私はパスワードを付けておきました。