LinkStation の /dev/fl1


昨日、玄箱の /dev/fl1 から、 vmlinux だけではなく RAMDISK IMAGE も取り出すことに成功した。

LinkStation でも検証する。

LinkStation では、ファームアップデータとして FIRMIMG.BIN が 配布されているので、1.3x, 1.40 の FIRMIMG.BIN を使って検証する。 1.30, 1.31, 1.32 は(ファイル名の大文字、小文字の差はあるにしろ) 同じなので、1.30 の firmimg.bin を使用する。

ヘッダ部

1.3x
0000000 0000 0001 0000 0003 4844 2d48 4c41 4e28
         \0  \0  \0 001  \0  \0  \0 003   H   D   -   H   L   A   N   (
0000020 504c 5553 2900 0000 0000 0000 0000 0000
          P   L   U   S   )  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000040 0000 0000 0000 0000 464c 4153 4820 322e
         \0  \0  \0  \0  \0  \0  \0  \0   F   L   A   S   H       2   .
0000060 3200 0000 0000 0000 0000 0000 0000 0000
          2  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100 0000 0000 0000 0000 0001 0002 0000 6709
         \0  \0  \0  \0  \0  \0  \0  \0  \0 001  \0 002  \0  \0   g  \t
0000120 0911 1b1c 002d e1f7 190e c22b 0000 006c
         \t 021 033 034  \0   - 341 367 031 016 302   +  \0  \0  \0   l
0000140 000b c9f4 000b ca60 0022 1797 1f8b 0808
         \0  \v 311 364  \0  \v 312   `  \0   " 027 227 037 213  \b  \b
1.40
0000000 0000 0001 0000 0003 4844 2d48 4c41 4e28
         \0  \0  \0 001  \0  \0  \0 003   H   D   -   H   L   A   N   (
0000020 4849 4445 5441 4441 2900 0000 0000 0000
          H   I   D   E   T   A   D   A   )  \0  \0  \0  \0  \0  \0  \0
0000040 0000 0000 0000 0000 464c 4153 4820 312e
         \0  \0  \0  \0  \0  \0  \0  \0   F   L   A   S   H       1   .
0000060 3200 0000 0000 0000 0000 0000 0000 0000
          2  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000100 0000 0000 0000 0000 0001 0003 0000 6803
         \0  \0  \0  \0  \0  \0  \0  \0  \0 001  \0 003  \0  \0   h 003
0000120 050e 2522 002d eda2 1010 9b52 0000 006c
        005 016   %   "  \0   - 355 242 020 020 233   R  \0  \0  \0   l
0000140 000c cb05 000c cb71 0021 2231 1f8b 0808
         \0  \f 313 005  \0  \f 313   q  \0   !   "   1 037 213  \b  \b
以下、L.S.=LinkStation HD-HLAN, K.B.=玄箱

バージョン

offset
(0 orig.)
size 内容
0 4 何かのバージョン。
firmimg.bin 作成時にfirminfo.txt の Ver フィールドからセットされる

L.S.1.3x:0000 0001
L.S.1.40:0000 0001
K.B.1.00:0000 0001

ID

offset
(0 orig.)
size 内容
4 4 何かの ID。
firmimg.bin 作成時にfirminfo.txt の ID フィールドからセットされる

L.S.1.3x:0000 0003
L.S.1.40:0000 0003
K.B.1.00:0000 1001

NAME

offset
(0 orig.)
size 内容
8 32? 何かの NAME。シリーズ名と開発コード?
firmimg.bin 作成時にfirminfo.txt の NAME フィールドからセットされる

L.S.1.3x:
4844 2d48 4c41 4e28 504c 5553 2900 0000 0000 0000 0000 0000 0000 0000 0000 0000
HD-HLAN(PLUS)

L.S.1.40:
4844 2d48 4c41 4e28 4849 4445 5441 4441 2900 0000 0000 0000 0000 0000 0000 0000
HD-HLAN(HIDETADA)

K.B.1.00:
4b55 524f 2d42 4f58 2849 4554 5355 4e41 2900 0000 0000 0000 0000 0000 0000 0000
KURO-BOX(IETSUNA)

FLASH のバージョン?

offset
(0 orig.)
size 内容
40? 32? FLASH のバージョン?
なんで、1.3x から 1.40 で、バージョン(?)が下がっているのだろう?

L.S.1.3x:
464c 4153 4820 322e 3200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
FLASH 2.2

L.S.1.40:
464c 4153 4820 312e 3200 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
FLASH 1.2

K.B.1.00:
464c 4153 4820 312e 3100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
FLASH 1.1

不明

offset
(0 orig.)
size 内容
72? 20? 不明。setsum というプログラム名からして、sum 値か? 先頭 4 バイトは何らかのバージョンにも見えるが、、、

L.S.1.3x:
0001 0002 0000 6709 0911 1b1c 002d e1f7 190e c22b

L.S.1.40:
0001 0003 0000 6803 050e 2522 002d eda2 1010 9b52

K.B.1.00:
0001 0000 0000 6802 0910 1e2a 002d a21b 320d 8c9f

vmlinux.gz のオフセット

offset
(0 orig.)
size 内容
92 4 vmlinux.gz のオフセット

L.S.1.3x:0000 006c (108)
L.S.1.40:0000 006c (108)
K.B.1.00:0000 006c (108)

vmlinux.gz のサイズ

offset
(0 orig.)
size 内容
96 4 vmlinux.gz のサイズ

L.S.1.3x:000b c9f4 (772596)
L.S.1.40:000c cb05 (838405)
K.B.1.00:000a f8b5 (719029)

ramdisk.image.gz のオフセット

offset
(0 orig.)
size 内容
100 4 ramdisk.image.gz のオフセット

L.S.1.3x:000b ca60 (772704)
L.S.1.40:000c cb71 (838513)
K.B.1.00:000a f921 (719137)

ramdisk.image.gz のサイズ

offset
(0 orig.)
size 内容
104 4 ramdisk.image.gz のサイズ

L.S.1.3x:0022 1797 (2234263)
L.S.1.40:0021 2231 (2171441)
K.B.1.00:0022 a8fa (2271482)


vmlinux.gz

vmlinux.gz を抜く

1.3x

vmlinux.gz のオフセットは 108、firmimg.bin のサイズは 3006967 なので、
[yasunari@ls 1.3x]$ tail -c 3006859 firmimg.bin > vmlinux.gz
[yasunari@ls 1.3x]$ od -xc vmlinux.gz |head
0000000 1f8b 0808 ef8e 5d3f 0203 766d 6c69 6e75
        037 213  \b  \b 357 216   ]   ? 002 003   v   m   l   i   n   u
0000020 7800 ec5c 7d70 13e7 997f 5692 41c6 4e22
          x  \0 354   \   }   p 023 347 231 177   V 222   A 306   N   "
0000040 8200 115c 2c61 93d8 4161 7cc4 a46b 2c40
        202  \0 021   \   ,   a 223 330   A   a   | 304 244   k   ,   @
0000060 fe20 5d3e 9a71 aff6 25bd c055 4276 8263
        376       ]   > 232   q 257 366   % 275 300   U   B   v 202   c
0000100 2e88 c46e 96e4 95bc b244 87ce 90ce da86
          . 210 304   n 226 344 225 274 262   D 207 316 220 316 332 206
[yasunari@ls 1.3x]$ gunzip vmlinux.gz

1.40

vmlinux.gz のオフセットは 108、FIRMIMG.BIN のサイズは 3009954 なので、
[yasunari@ls 1.40]$ tail -c 3009846 FIRMIMG.BIN > vmlinux.gz
[yasunari@ls 1.40]$ od -xc vmlinux.gz |head
0000000 1f8b 0808 1d12 4840 0203 766d 6c69 6e75
        037 213  \b  \b 035 022   H   @ 002 003   v   m   l   i   n   u
0000020 7800 ec5c 0b70 5455 9afe 6f77 073a 2403
          x  \0 354   \  \v   p   T   U 232 376   o   w  \a   :   $ 003
0000040 0d74 b463 22e9 40d0 445a 2a83 c1b9 210d
         \r   t 264   c   " 351   @ 320   D   Z   * 203 301 271   !  \r
0000060 dc3c 602e 0f2d 6627 59d9 1577 bae9 4489
        334   <   `   . 017   -   f   '   Y 331 025   w 272 351   D 211
0000100 61b4 d1a0 173d ddb9 9d6e a698 2a9c ea24
          a 264 321 240 027   = 335 271 235   n 246 230   * 234 352
	  $
[yasunari@ls 1.40]$ gunzip vmlinux.gz

ramdisk.image.gz

ramdisk.image.gz も抜いてみる

1.3x

ramdisk.image.gz のサイズは 2234263 なので、
[yasunari@ls 1.3x]$ tail -c 2234263 firmimg.bin >ramdisk.image.gz
[yasunari@ls 1.3x]$ od -xc ramdisk.image.gz |head
0000000 1f8b 0808 d28e 5d3f 0203 6c6f 6f70 6669
        037 213  \b  \b 322 216   ]   ? 002 003   l   o   o   p   f   i
0000020 6c65 00ec 9d09 7c53 55be c7ef 4dd2 2d94
          l   e  \0 354 235  \t   |   S   U 276 307 357   M 322   - 224
0000040 5216 1d2a 5bda a208 14ba 431a ca0e 0a22
          R 026 035   *   [ 332 242  \b 024 272   C 032 312 016  \n   "
0000060 a014 5046 1142 9ada 0c6d 529b 9416 2db6
        240 024   P   F 021   B 232 332  \f   m   R 233 224 026   - 266
0000100 a520 30a2 94e9 f333 e313 5414 7470 0306
        245       0 242 224 351 363   3 343 023   T 024   t   p 003 006
[yasunari@ls 1.3x]$ gunzip ramdisk.image.gz
[yasunari@ls 1.3x]$ file ramdisk.image
ramdisk.image: Linux rev 1.0 ext2 filesystem data

1.40

ramdisk.image.gz のサイズは 2171441 なので、
[yasunari@ls 1.40]$ tail -c 2171441 FIRMIMG.BIN > ramdisk.image.gz
[yasunari@ls 1.40]$ od -xc ramdisk.image.gz |head
0000000 1f8b 0808 5e6e 4540 0203 6c6f 6f70 6669
        037 213  \b  \b   ^   n   E   @ 002 003   l   o   o   p   f   i
0000020 6c65 00ec 9d09 5c54 f5da c7cf 0cab eca2
          l   e  \0 354 235  \t   \   T 365 332 307 317  \f 253 354 242
0000040 2d9a 95a9 696e 288b 8aa4 282a 8a7b 6a8a
          - 232 225 251   i   n   ( 213 212 244   (   * 212   {   j 212
0000060 a649 3080 a030 430c 884b de5c c17d cd2d
        246   I   0 200 240   0   C  \f 210   K 336   \ 301   } 315   -
0000100 72c1 ddd4 5c70 374d ae5b 6ea9 a969 96dd
          r 301 335 324   \   p   7   M 256   [   n 251 251   i 226 335
[yasunari@ls 1.40]$ gunzip ramdisk.image.gz
[yasunari@ls 1.40]$ file ramdisk.image
ramdisk.image: Linux rev 1.0 ext2 filesystem data

 LinkStation/玄箱 をハックしよう  → gz ファイルを展開しているのは誰?
Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
山下康成京都府向日市