Flash ROM


何が入っている?

/dev/fl0 〜 fl4 までを as_flash list してみる
root@KURO-BOX:~# as_flash /dev/fl0 list
0 -> /tmp/conf_save.tar.gz
root@KURO-BOX:~# as_flash /dev/fl1 list
flash is empty
root@KURO-BOX:~# as_flash /dev/fl2 list
flash is empty
root@KURO-BOX:~# as_flash /dev/fl3 list
flash is empty
root@KURO-BOX:~# as_flash /dev/fl4 list
could not open "/dev/fl4": No such device
LinkStation と同じ。

/dev/fl0

root@KURO-BOX:~# as_flash /dev/fl0 get -n /tmp/conf_save.tar.gz --output /tmp/conf_save.tar.gz
root@KURO-BOX:~# tar ztvf /tmp/conf_save.tar.gz
-rw-r--r-- root/root      1243 2003-11-28 09:34:44 etc/network/interfaces
drw-r--r-- root/root         0 2004-01-05 13:15:39 etc/samba/
-rw-r--r-- root/root        99 2003-03-04 22:20:05 etc/samba/smbusers
-rw-r--r-- root/root      1350 2004-01-05 13:18:24 etc/samba/smb.conf
-rw-r--r-- root/root        20 2002-12-02 00:23:58 etc/samba/lmhosts
-rwxr--r-- root/root       609 2002-12-02 00:24:42 etc/samba/smbpasswd
-rw------- root/root      8192 2004-01-05 13:18:28 etc/samba/secrets.tdb
drwxr-xr-x root/root         0 2004-01-05 13:18:58 etc/atalk/
-rw-r--r-- root/root        43 2004-01-05 13:18:58 etc/atalk/atalkd.conf
-rw-r--r-- root/root        79 2004-01-05 13:18:24 etc/atalk/AppleVolumes.default
-rw-r--r-- root/root     22818 2002-11-30 18:32:59 etc/atalk/AppleVolumes.system
-rw-r--r-- root/root        64 2003-11-20 15:07:23 etc/atalk/afpd.conf
-rw-r--r-- root/root        95 2003-12-24 10:24:51 etc/atalk/config
-rw-r--r-- root/root        87 2004-01-05 13:15:31 etc/atalk/papd.conf
-rwxr-xr-x root/root     15677 2003-05-16 12:55:38 etc/atalk/lw2ntx.ppd
drw-r--r-- root/root         0 2003-05-09 14:08:35 etc/atalk/nls/
-rw-r--r-- root/root       400 2002-11-27 07:23:46 etc/atalk/nls/maccode.437
-rw-r--r-- root/root       400 2002-11-27 07:23:46 etc/atalk/nls/maccode.850
-rw-r--r-- root/root       371 2002-11-27 07:23:46 etc/atalk/nls/maccode.iso8859-1
-rw-r--r-- root/root       379 2002-11-27 07:23:46 etc/atalk/nls/maccode.iso8859-1.adapted
-rw-r--r-- root/root        12 2004-02-03 13:21:19 etc/atalk/config.papd
drw-rw-r-- root/root         0 2004-01-05 13:22:57 etc/melco/
-rw-rw-rw- root/root        16 2003-05-16 09:41:57 etc/melco/timer_sleep
-rw-rw-rw- root/root        37 2003-05-16 09:41:55 etc/melco/timer_backup
-rw-rw-rw- root/root        41 2003-05-16 09:41:55 etc/melco/timer_backup.cron
-rw-rw-rw- root/root        11 2003-05-16 09:41:57 etc/melco/timer_status
-rw-rw-rw- root/root         8 2004-01-05 13:22:57 etc/melco/pass
-rw-rw-rw- root/root        46 2004-02-03 14:16:56 etc/melco/info
-rw-rw-rw- root/root       134 2004-01-05 13:18:23 etc/melco/shareinfo
-rw-rw-rw- root/root         0 2003-05-26 10:09:20 etc/melco/userinfo
-rw-r--r-- root/root        11 2003-05-21 16:47:24 etc/melco/printer
-rw-rw-rw- root/root        45 2003-01-14 22:22:46 etc/melco/groupinfo
-rw-r--r-- root/root         5 2004-02-03 13:28:25 etc/melco/ver
-rw-r--r-- root/root        52 2004-01-22 21:42:15 etc/melco/pcast_mp2000
-rw-r--r-- root/root         6 2004-01-05 13:22:57 etc/melco/pass.bak
-rw-r--r-- root/root       342 2004-02-12 13:23:06 etc/passwd
-rw-r--r-- root/root       293 2003-05-29 17:44:30 etc/group
-rw-r--r-- root/root        65 2004-01-05 13:18:23 etc/hosts
-rw-r--r-- root/root        19 2004-01-05 13:22:57 www/.htpasswd
-rw-r--r-- root/root        19 2004-01-05 13:22:57 www/cgi-bin/.htpasswd
-rw-r--r-- root/root        19 2004-01-05 13:22:57 www/script/.htpasswd
-rw-r--r-- root/root        13 2002-12-20 20:10:19 etc/ap_servd.log
-rw-r--r-- root/root        90 2004-02-03 13:24:35 etc/printcap
-rw-r--r-- root/root       675 2004-01-27 21:25:52 etc/pcast/pcastd.conf
conf_save.tar.gz に収められているものが多少違う。
# diff -c 1.31/www/script/melsub_flash.sh kuro-1.00/www/script/melsub_flash.sh
*** 1.31/www/script/melsub_flash.sh     2003-05-29 23:25:30.000000000 +0900
--- kuro-1.00/www/script/melsub_flash.sh        2004-01-22 18:11:37.000000000 +0900
***************
*** 28,34 ****
  tar rfp "$fileMELSETTMP" "$fileHTPASSWD2" 2> /dev/null
  tar rfp "$fileMELSETTMP" "$fileAPSERVD" 2> /dev/null
  tar rfp "$fileMELSETTMP" "$filePRINTCAP" 2> /dev/null
! tar rfp "$fileMELSETTMP" "$fileCRONTAB" 2> /dev/null

  sleep 1

--- 28,39 ----
  tar rfp "$fileMELSETTMP" "$fileHTPASSWD2" 2> /dev/null
  tar rfp "$fileMELSETTMP" "$fileAPSERVD" 2> /dev/null
  tar rfp "$fileMELSETTMP" "$filePRINTCAP" 2> /dev/null
! if [ -f "$fileCRONTAB" ] ; then
!     tar rfp "$fileMELSETTMP" "$fileCRONTAB" 2> /dev/null
! fi
! if [ -f "$filePCASTD" ] ; then
!     tar rfp "$fileMELSETTMP" "$filePCASTD" 2> /dev/null
! fi

  sleep 1
と保存するスクリプトも少しだけ変わっている。

/dev/fl1

ここには、カーネルが入っているはず。
root@KURO-BOX:~# cat /dev/fl1 > /tmp/fl1
root@KURO-BOX:~# od -xc /tmp/fl1
bash: od: command not found
仕方がないので、Vine の HDD からブートして中身を見る
kuro-boxVine# cat /dev/fl1 > /tmp/fl1
kuro-boxVine# strings /tmp/fl1 |head
KURO-BOX(IETSUNA)
FLASH 1.1
 7'@
vmlinux
3CKw
:CV^)
?q=A
hv+?
T[Iw o
w$X~

/dev/fl2

ここには、ファームウェアインストーラが入っているはず。 strings で見る限りは、
***************
*** 169,176 ****
--- 161,174 ----
  Flash Erase fail?!
  verify fail! %p = %02X
  Flash Write fail?!
+ Flash Write verify fail %p = %02X
+ Flash Write verify fail %08x:%02p %02x
+ Flash Write retry fail?! %08x:%02p
+ Flash Write retry success %08x:%02p
  %8X:%8X, %d/%d, Flash Write fail?!
  %8X:%8X:%d, Flash Write fail?!
+ Flash Write retry fail?! %p
+ Flash Write retry success %p
  NOFLASH
  checksum fail:%08X %08X
  mmb [%08X]<%02X
***************
*** 198,204 ****
  invalid stored block lengths
  too many length or distance symbols
  invalid bit length repeat
! oversubscribed dynamic bit lengths tree
  incomplete dynamic bit lengths tree
  oversubscribed literal/length tree
  incomplete literal/length tree
--- 196,202 ----
  invalid stored block lengths
  too many length or distance symbols
  invalid bit length repeat
! (oversubscribed dynamic bit lengths tree
  incomplete dynamic bit lengths tree
  oversubscribed literal/length tree
  incomplete literal/length tree
と多少変わっているみたいだが、入っているもの自体はそう変わらないみたい。

/dev/fl3

ここは、OKOKOK... のはず。
kuro-boxVine# od -xc /dev/fl3
0000000 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b
          O   K   O   K   O   K   O   K   O   K   O   K   O   K   O   K
*
0000400 ffff ffff ffff ffff ffff ffff ffff ffff
        377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
*
0200000
同じ。

Flash ROM に書いてみる!

LinkStation のハックの記録で、
ただし、書き込み方の詳細は、相変わらず不明。
書き込み試して起動不能になっても困るし、 Flash ROM だから書くにもそれなりに手順が必要だろうし。
おそらく ap_servd がやってるように TTTT / UUUU を AVR に送る事によって Flash ROM 書き込めるようになるんだろうけど。

と書いたが、、、
Flash ROM を読み書きするコマンド、 as_flash を strings しても TTTT / UUUU が出てこないことに気がついた。 ヒョッとして、何も手続きを踏まなくても書けるのでは?と思い始めた。

fl3 なら、壊しても大丈夫かな?再起不能だと、困るが。
壊すこと覚悟で書いてみる。生後7日目でお亡くなりになるかも。

kuro-boxVine# cat /dev/fl3 > /tmp/fl3
kuro-boxVine# ls / > /dev/fl3
一瞬 LED が輝いたような気がする。
kuro-boxVine# cat /dev/fl3
bin
boot
dev
etc
home
initrd
lib
lost+found
mnt
opt
proc
root
sbin
tmp
usr
var
www
KOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKO
KOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOK
かけるやん。
元に戻す。今度は LED を見ておく
kuro-boxVine# cat fl3 > /dev/fl3
DISK FULL LED と、DIAG LED とが真っ赤に3回点滅する。
念のため、確認
kuro-boxVine# od -xc /dev/fl3
0000000 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b 4f4b
          O   K   O   K   O   K   O   K   O   K   O   K   O   K   O   K
*
0000400 ffff ffff ffff ffff ffff ffff ffff ffff
        377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
*
0200000
OK。リブートして問題ないことを確認する。
あーこわ。

とりあえず、Flash ROM へは簡単に書き込めることがわかった。

カーネル(/dev/fl1) も同じように書き込めるのだろうが、
・カーネルをどうやって作るのか
・どのような形式で書き込むのか
が、不明。
失敗すると、死亡は確実だし。

fj で教えてもらった User Mode Linux の上にサーバを構築してもいいかなと一瞬思ったが、 host のカーネルは、2.4.17 のままで DOS 攻撃には UML も無力だし。
ん?サーバを提供している 192.168.1.2 を UML にすればいいのかも。


 玄人志向 玄箱をハックしよう  → Filesystem features
Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
山下康成京都府向日市