CG-WLBARGSで遊ぶ::ファームウェア
サークルの部室で使っていた無線LANのルータを眺めていたらなんだか真っ当なOSが入っていそうな挙動(起動が遅い,設定画面の拡張子がphp,起動途中に変なIPを一時的に使う,など)が見受けられたので,中身を見てみました.
ターゲットは,coregaのCG-WLBARGSです.
今回は気軽に遊びます.逆アセンブルしたり変なツールを作るのは無しの方向で.
注意
この文書を読むことによって生じたいかなる損害も保障しません.自己の判断でご使用下さい.
後から気づいたのですが「内部の解析、変更等はご遠慮ください」と書いてありますね.中身はGPLのコードを含んでいるので解析しても大丈夫でしょうが,「ご遠慮ください」と明記されているので,そのことを考慮してください.(GPLなソフトの解析を制限するような表記はライセンス違反な気がしますが…)
ファームウェア
ファームウェアを開いた瞬間に気づくのは,/dev/mtdなんて書いてあって,きっとLinuxが動いていて,MTDデバイスとしてフラッシュメモリにアクセスしているんだなぁ,ということでしょう.
遊び始めて数秒で指針が見えて来ました.
ローダ(?)
もう少し眺めていると,32ビット固定長の命令列が見えてきます.何らかのRISCマイコンが載っていることが判明.雰囲気から言って,多分MIPSでしょう(後でMIPSと確認).文字列プールの内容から,すぐにgzipの展開用のコードだと分かります.
先頭にあるのはLinuxのローダのようです.
カーネル
次の領域には,圧縮されたLinuxカーネルらしきものがあります.圧縮されているので中身は分かりませんが,大きさや位置から言ってカーネルでしょう.
ということで,展開.
先頭のローダがgzipのものなので,gzipで展開…と思ったら,フォーマットが違う.「7z」の文字が見えます.LZMAアルゴリズムです.
LZMA対応のローダのソースをダウンロードしてきて,展開プログラムを作成.
やっぱり中身はLinuxカーネルでした.CPUもMIPSだと分かりましたし,他にも色々な情報が得られます.
ファイルシステム
後ろの2/3くらいは,きっとファイルなどのデータでしょう.Linuxが入っているなら,ファイルシステムの圧縮イメージである可能性が高い.
「--PaCkImGs--」の文字が見えますが,PackImagesで,やっぱりファイルシステムのイメージなのでしょう.
次のヒントが「sqsh」.どこかで見たことがある.何処だったかと脳内GREPを実行するが出てこない.Googleに聞いてみると,別のものが出てくる.
ここで,人間の脳の機能を使わなければ能無しです.というわけで,ファジイ検索.…Knoppixのファイルシステムだ.
squashfsですね.
http://squashfs.sourceforge.net/ からソースを入手.
3.0のunsquashfsで展開しようとしたらバージョンが違うと怒られたので,2.2で試す.2.2の展開プログラムは存在しないので,squashfs3.0のunsquashfsのソースを2.2を見ながらクイックハック.
結局,色々と変なツールを書いているな….まぁコピペしながら組み合わせてるだけだけど.
展開してみると,普通にLinuxのファイルシステムが1セット出てきました.
BusyBoxが入ってますね.
telnetdとかも入ってます.インターフェイスにphpって拡張子を使ってますが,本当にphpっぽい?色々なところで/dev/consoleにメッセージを出してるな….ばらしてみればコンソールをつなげられるかも.
最後に
ご利用は計画的に.