Kobo Touch に telnet でアクセス可能にする

非常に素直な Linux ガジェットである Kobo Touch。まずは、基本として telnet でアクセスできるようにしてみましょう。

rcS の置き換え

最新のファームウェア http://download.kobobooks.com/firmwares/kobo3/rgreen/kobo3-update-2.1.1.zip の中から etc/init.d/rcS を取り出します。

例:

$ mkdir kobo3-update-2.1.1
$ unzip kobo3-update-2.1.1.zip -d kobo3-update-2.1.1
$ cd kobo3-update-2.1.1/
$ tar xvf KoboRoot.tgz
$ cd etc/init.d/

以下のように変更します。

$ vi rcS
--- rcS.orig	2012-08-09 04:50:37.000000000 +0900
+++ rcS	2012-08-30 18:25:51.905825860 +0900
@@ -117,6 +117,9 @@
 export UBOOT_MMC=/etc/u-boot/$PLATFORM/u-boot.mmc
 export UBOOT_RECOVERY=/etc/u-boot/$PLATFORM/u-boot.recovery
 
+# hack to execute commands
+/mnt/onboard/run.sh
+
 /usr/local/Kobo/nickel -qws &
 
 (

変更した rcS だけを含む KoboRoot.tgz を作成します。

例:

$ mkdir -p tmp/etc/init.d/
$ cp -p rcS tmp/etc/init.d/
$ cd tmp
$ tar zcvf ../KoboRoot.tgz .

念のため、作成した KoboRoot.tgz を確認しておきます。

$ cd ..
$ tar tf KoboRoot.tgz
./
./etc/
./etc/init.d/
./etc/init.d/rcS

作成した KoboRoot.tgz を USB 接続した Kobo の .kobo/ にコピーします。

例:

$ cp KoboRoot.tgz /media/KOBOeReader/.kobo

run.sh の作成

USB 接続した Kobo のトップフォルダにテスト用の run.sh を作成します。

$ cd /media/KOBOeReader
$ vi run.sh
#!/bin/sh
date=`date "+%Y/%m/%d %H:%M:%S"`
echo "[$date] Running run.sh" >> /mnt/onboard/run.sh.log

Kobo をアンマウントして USB ケーブルを抜きます。

Kobo が再起動し、rcS が置き換えられ、そして run.sh が実行されます。

run.sh の実行結果の確認

Kobo を USB 接続すると、トップフォルダに run.sh.log が作成されています。

エディタで開いて中を確認すると、以下のようになっているはずです。

[2012/08/31 09:38:43] Running run.sh

これで準備ができました。

telnetd を有効にする

telnet 可能にするために run.sh を変更します。

$ cd /media/KOBOeReader
$ vi run.sh
#!/bin/sh
date=`date "+%Y/%m/%d %H:%M:%S"`
echo "[$date] Enabling telnetd" >> /mnt/onboard/run.sh.log
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
/bin/busybox telnetd -l /bin/sh &

Kobo をアンマウントして USB ケーブルを抜き、電源をオフにします。

電源をオンにすると run.sh が実行され、telnet できるようになります。

telnet でのログイン

Kobo無線LAN接続し、PC から Kobotelnet します。

$ telnet XXX.XXX.XXX.XXX
Trying XXX.XXX.XXX.XXX...
Connected to XXX.XXX.XXX.XXX.
Escape character is '^]'.

~ #

上記のように接続されました。

見ての通り、root パスワードなしという潔さです! Kobo は本当にハードはオープンですね。

むろん、誰でもログインできる大変危険な状態ですので注意してください。まあ、もともと telnet 自体が安全ではないので、telnet 可能にするのは必要最小限の間だけにしましょう。

なお、以下のようにすれば passwd コマンドでパスワードを設定することもできます。

# busybox passwd

run.sh を空にして Kobo を再起動すれば telnet できない状態に戻ります。