HD-120LAN ファームウェア


ハックの手の付け所を探して、ファームウェアアップデータ 1.23aβを解析する。

firmimg.bin?

HD-LAN FWUpdate.exe の中身を strings で覗いていると、
[yasunari@giga hdlan123a]$ strings HD-LAN\ FWUpdate.exe | less
	:
HD-LAN
FLASH 1.0(SJIS)
vmlinux
	:
という、なんとなく見覚えのある並びを見つけた。
これは、HD-H*LAN の firmimg.bin に相当する部分ではないだろうか。
[yasunari@giga hdlan123a]$ od -xc HD-LAN\ FWUpdate.exe | less
	:
0215320 0000 0100 0000 0000 0000 0001 0000 0001
         \0  \0 001  \0  \0  \0  \0  \0  \0  \0  \0 001  \0  \0  \0 001
0215340 4844 2d4c 414e 0000 0000 0000 0000 0000
          H   D   -   L   A   N  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0215360 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0215400 464c 4153 4820 312e 3028 534a 4953 2900
          F   L   A   S   H       1   .   0   (   S   J   I   S   )  \0
0215420 0000 0000 0000 0000 0000 0000 0000 0000
         \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0215440 0001 0017 0000 6805 0a0b 1801 0070 8c64
         \0 001  \0 027  \0  \0   h 005  \n  \v 030 001  \0   p 214   d
0215460 9769 78dd 0000 006c 000b c0a7 000b c113
        227   i   x 335  \0  \0  \0   l  \0  \v 300 247  \0  \v 301 023
0215500 0064 cb51 1f8b 0808 c0e7 9e40 0203 766d
         \0   d 313   Q 037 213  \b  \b 300 347 236   @ 002 003   v   m
	:
まさに、firmimg.bin のように見える。
まあ、HD-120LAN では これが /dev/fl1 に書かれているのかどうかは分らないが。

firmimg.bin 相当の取り出し

firmimg.bin らしきところの先頭オフセットは、8進数で 0215330。
8進数で 0215330 は、10進数で 72408。
HD-LAN FWUpdate.exe のサイズが 7450624 なので、 後ろ 7378216 を取り出せばよいことになる。
7MB とは、ちょっと大きすぎるが、後ろに別データが付いているのであろう。
[yasunari@giga hdlan123a]$ tail -c 7378216 HD-LAN\ FWUpdate.exe > firmimg.bin
出来上がった firmimg.bin を 先日作ったファームウェア取り出しツールにかけてみる。
[yasunari@giga hdlan123a]$ getfirm firmimg.bin
info_ver 00000001
firmid 00000001
firmname HD-LAN
subver FLASH 1.0(SJIS)
ver_major 0001
ver_minor 0017
build 0000
date 6805 0a0b 1801
size 00708c64
chksum 976978dd
kernel_offset 0000006c(108)
kernel_size 000bc0a7(770215)
initrd_offset 000bc113(770323)
initrd_size 0064cb51(6605649)
取り出せたみたい。
vmlinux は
[yasunari@giga hdlan123a]$ file vmlinux.gz
vmlinux.gz: gzip compressed data, was "vmlinux", from Unix, max compression
[yasunari@giga hdlan123a]$ gunzip vmlinux.gz
[yasunari@giga hdlan123a]$ file vmlinux
vmlinux: data
あれ?data ?
ramdisk.image.gz は、
[yasunari@giga hdlan123a]$ file ramdisk.image.gz
ramdisk.image.gz: gzip compressed data, was "loopfile", from Unix, max compression
[yasunari@giga hdlan123a]$ gunzip ramdisk.image.gz
[yasunari@giga hdlan123a]$ su
Password:
[root@giga hdlan123a]# mkdir /tmp/root
[root@giga hdlan123a]# mount -o loop ramdisk.image /tmp/root
[root@giga hdlan123a]# ls /tmp/root
bin  dev  etc  home  lib  lost+found  mnt  proc  root  sbin  tmp  usr  var  www
[root@giga hdlan123a]#
よーし。
LinkStation/玄箱 をハックしよう → HD-120LAN ファームウェア(2)

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