initrd.boot のヘッダ部


以前 PC-P1LAN ファームウェア 1.00 の initrd.boot を見たとき、 単なる loop デバイスファイルではなく、 64バイトのヘッダがついていることを見つけた。
ただ、その内容は良くわかっていない。

PC-P1LAN ファームウェア 1.11 の initrd.boot のヘッダと比べれば 何か手がかりがあるかと、両方を見比べてみることにした。

ヘッダ部の比較

PC-P1LAN のブートサーバである HS-DGL! の
/usr/local/BootServer/tftpboot に置いてある 1.11 の initrd.boot と
/usr/local/BootServer/tftpboot_1.00 に置いてある 1.00 の initrd.boot と
を比較する
-bash-2.05b$ cd /usr/local/BootServer
-bash-2.05b$ ls -l tftpboot*/firm/initrd.boot
-rw-r--r--    1 root     root      7248264 Dec 17  2004 tftpboot/firm/initrd.boot
-rw-r--r--    1 root     root      7255175 Oct 17 22:05 tftpboot_1.00/firm/initrd.boot
-bash-2.05b$ od -xc tftpboot/firm/initrd.boot | head > /tmp/1.11
-bash-2.05b$ od -xc tftpboot_1.00/firm/initrd.boot | head > /tmp/1.00
-bash-2.05b$ diff -c /tmp/1.00 /tmp/1.11
*** /tmp/1.00   2006-02-02 09:21:12.000000000 +0900
--- /tmp/1.11   2006-02-02 09:20:48.000000000 +0900
***************
*** 1,10 ****
! 0000000 2705 1956 f0c0 46ae 4353 8704 006e b447
!           ' 005 031   V 360 300   F 256   C   S 207 004  \0   n 264   G
! 0000020 0000 0000 0000 0000 f59d bf89 0502 0301
!          \0  \0  \0  \0  \0  \0  \0  \0 365 235 277 211 005 002 003 001
  0000040 5241 4d20 4469 736b 0000 0000 0000 0000
            R   A   M       D   i   s   k  \0  \0  \0  \0  \0  \0  \0  \0
  0000060 0000 0000 0000 0000 0000 0000 0000 0000
           \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
! 0000100 1f8b 0800 fe86 5343 0203 ec7d 0b7c 54d5
!         037 213  \b  \0 376 206   S   C 002 003 354   }  \v   |   T 325
--- 1,10 ----
! 0000000 2705 1956 62dc 0222 43a3 c1bc 006e 9948
!           ' 005 031   V   b 334 002   "   C 243 301 274  \0   n 231   H
! 0000020 0000 0000 0000 0000 423f 0b8a 0502 0301
!          \0  \0  \0  \0  \0  \0  \0  \0   B   ?  \v 212 005 002 003 001
  0000040 5241 4d20 4469 736b 0000 0000 0000 0000
            R   A   M       D   i   s   k  \0  \0  \0  \0  \0  \0  \0  \0
  0000060 0000 0000 0000 0000 0000 0000 0000 0000
           \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
! 0000100 1f8b 0800 b5c1 a343 0203 ec7d 0f7c 54d5
!         037 213  \b  \0 265 301 243   C 002 003 354   } 017   |   T 325
-bash-2.05b$
さて、、、

サイズ

ファイルサイズがどこかにあるはずと探す

1.00 の initrd.boot のファイルサイズ 7255175(10進)は 16進で0x6EB487。
あるある。
(0オリジンの)12バイト目 006e b447
ファイルサイズの 7255175 からヘッダ部の 64 を引くと 7255111 = 0x6EB447。

1.11 の initrd.boot のファイルサイズ 7248264(10進)は 16進で0x6E9988。
(0オリジンの)12バイト目 006e 9948
ファイルサイズの 7248264 からヘッダ部の 64 を引くと 7248200 = 0x6E9948。

間違いなさそう。

あとは、、、

64バイト目からの 1f8b 以降は gzip されたイメージ。

それ以外は、、、わからんなぁ、、、

こんな調子で「ハックしよう」が成り立つんだろうか???(冷汗)




シリアルコンソール
ハックの記録
PC-P1LAN をハックしよう

U-Boot

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