AirCardのファームウェアを改変

PQI AirCardファームウェアのアップデートファイルが公開され、
先日アップデートしてみましたが、
今度はファームウェアの改変にチャレンジしてみます。
なお、触るのはrootfsたる”initramfs3.gz”のみで、アップデート方法は標準と同じです。
また作業はすべてLinux(x64)上でroot権限で行います。

さて、”initramfs3.gz”は実のところgzではないのですが、
バイナリでみれば先頭8バイトが特殊なヘッダで、
その後は通常のgzファイルであることは勘のいい方なら気づくでしょう。
その後付のヘッダも、先頭4バイトは”KAGZ”({0x4b,0x41,0x47,0x5a})の固定くさいですし、
続く4バイトもペイロードサイズ(ヘッダを加える前の元のファイルサイズ)を
ビッグエンディアンで並べたものっぽいこともわかります。
ということで”initramfs3.gz”の先頭8バイトをバイナリエディタで削除して

# gunzip initramfs3.gz

を実行し”initramfs3″を得ます。これはramfsのイメージファイルなので

# mkdir aircard
# cd aircard
# cpio -i < ../initramfs3

で展開でき好きにいじれます。
“program.bin”を見ると

fatload mmc 1 500000 initramfs3.gz; sf erase 500000 300000; sf write 4ffc00 500000 300000

のような記述が見られるので、rootfsは3MBまでは大きくできそうです。
つまりあと500KBくらいは突っ込めると。
とりあえず動作に影響なさそうなところをちょこっと変更し、

# find . | cpio --create --format='newc' | gzip > ../initramfs3.gz

で新しい”initramfs3.gz”を作成して、先に述べた8バイトのヘッダをつけてAirCardに書き込むと…
見事起動し、telnetでログインして先に施した変更が反映されていることを確認できました。
便利な機能でも追加したあかつきにはここで公開しようと考えています。
でもいつになるかわかりませんのであまり期待しないように。

広告