IMAGE.DAT から必要なファイルを抜き出す


ハックキットをインストールする際、 従来は必要なファイル(ppc_uartd 関連、カーネルモジュール)を ファームウェアがインストールされた HDD から抜き出す方法を取っていた。
ファームウェアがインストールされた HDD は細工がしてあり、 そのままはマウントできず
# mkfs -S /dev/hdc1
# fsck -y /dev/hdc1
という手順を取っていたが、 この方法ではファイルが破損する可能性があることがわかった。

必要なファイルは、 ファームウェアアップデータの IMAGE.DAT に含まれているので、 IMAGE.DAT から抜き出す方法を試行することにした。
IMAGE.DAT から抜き出せば、 ファームウェアがインストールされた HDD には 一切手を加える必要がなくなり、 安全にハックキットをインストールすることができる。

方針

IMAGE.DAT は、パスワードつきの zip ファイルであり、 このパスワードは、一応内緒である ^_^; 。
必要なファイルを抜き出すのはシェルスクリプトで十分なのであるが、 パスワードを隠蔽するために C で抜き出しプログラムを書くことにする。

基本仕様

  • コマンドラインで与えられたファイル(デフォルトは ./IMAGE.DAT)を unzip で展開する
  • 展開して作成された tmpimage.tgz から、必要なファイルを抜き出す
  • ppc_uartd のシンボリックリンク(chkconfig 相当を実行する)
  • tmpimage.tgz の削除
  • 全体にエラー処理はいいかげん ^_^;
    玄箱の image.zip であっても同様に抜き出せるはず。

    玄箱単体での確認

    まず、玄箱 の EM モードで、単体でのインストールを試す。
    パーティションを切り、ハックキットを展開。
    今回作成した抜き出しプログラム(fromimage)、image.zip を /tmp/root/tmp に転送して、実行してみた。
    なんと、KURO-BOX-EM では unzip が /bin/unzip だった。
    /usr/bin/unzip 固定で execv() していたので実行に失敗した。

    /usr/bin/unzip でも、/bin/unzip でも良いように修正して再度試す。
    今度は OK。

    手順として書いている
    (7) image.zip の展開
    (8) ファイルの吸出し
    (13) 吸い出したファイルの展開
    (14) ppc_uartd が起動するように設定
    が自動化できたので、かなり手順を減らせそう。

    HGLAN での確認

    HGLAN でも確認する。
    fromimage は PPC 用のバイナリなので、 Linux PC(x86) ではファイルを置くところまでのみを実行し、 抜き出しプログラムは HGLAN に HDD を接続、起動してから実行することにする。

    こちらも、手順として書いている
    (3) マウント
    (5) ファイルの吸出し
    (6) アンマウント
    (12) 吸い出したファイルの展開
    が自動化できたので、かなり手順が減らせそう。

    特に問題はなかったが、 HGLAN 起動時にはまだ ppc_uartd が起動していないので、 数分以内に抜き出しプログラムの実行と、 ppc_uartd とを起動しなければならない。


    LinkStation/玄箱 をハックしよう → また、セキュリティホール

    Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
    yasunari @ yamasita.jp
    山下康成京都府向日市