BBルータ解剖
 
IO-DATA WN-AG/C

個人的な雑感

実はルータではなく「イーサネットコンバーター」です。解析が終わったときに 気がつきました。デザインは個人的に好きなほうです。法人向けを 意識しているのか、セキュリティ周りの設定が多いようです。2004.9.4

CPU と OS

ファームウェアを見ると、

Linux version 2.4.18-mips (root@Delis) (gcc version 2.95.4 20010319 (prerelease))

なので、 MIPS の CPU が搭載されているようです。それも、解凍すると現れるファイルは ramdisk.mipsel とあるので、リトルエンディアンだと思われます。


アップデートファームの取り出し
ファームウェア : Ver.2.20

このページから Ver.1.01e05b の ファームウェアをダウンロードします。wnagc_f101e05b.exe ファイルを解凍すると AGC-101e05b.bin というファイルになります。このファイルからイメージファイルを 取り出します。dd コマンドにすると

dd if=AGC-101e05b.bin of=image1 bs=1 skip=12420 count=3691637

です。このファイルサイズ 3691637 は 12420 バイト目の直前にバイナリで 28 54 75 と書かれています(16進です)。切り出したこのファイルは gzip 形式ですので、 解凍します。解凍したファイルを image2 とします。
image2 ファイル、形式は不明ですが Linux の kernel を含んでいたりします。 strings コマンドなどで見ると、色々とわかると思います。
さらに、このファイルからイメージファイルを取り出します。取り出します。 dd コマンドにすると

dd if=image2 of=image3 bs=1 skip=1323008 count=3233069

です。この image3 も gzip 形式のファイルですので、解凍します。解凍しますと、 ramdisk.mipsel というファイルが取り出せます。このファイルは ext2 ファイルの 形式のようです。

[toyota@geonosis]% file ramdisk.mipsel
ramdisk.mipsel: Linux rev 1.0 ext2 filesystem data

そこで、 linux マシンでマウントをしてみました。以下、マウントをしたときの tree コマンドの結果です。
[toyota@kashyyyk]% tree
.
|-- bin
|   |-- ash -> busybox
|   |-- busybox
|   |-- cat -> busybox
|   |-- chmod -> busybox
|   |-- cp -> busybox
|   |-- df -> busybox
|   |-- dmesg -> busybox
|   |-- echo -> busybox
|   |-- grep -> busybox
|   |-- hostname -> busybox
|   |-- kill -> busybox
|   |-- ln -> busybox
|   |-- ls -> busybox
|   |-- mount -> busybox
|   |-- pidof -> busybox
|   |-- ping -> busybox
|   |-- ps -> busybox
|   |-- pwd -> busybox
|   |-- rm -> busybox
|   |-- sed -> busybox
|   |-- sh -> busybox
|   |-- sleep -> busybox
|   `-- usleep -> busybox
|-- dev
|   |-- console
|   |-- i2c-0
|   |-- i2c-1
|   |-- mtd0
|   |-- mtd1
|   |-- mtd2
|   |-- mtd3
|   |-- mtdblock0
|   |-- mtdblock1
|   |-- mtdblock2
|   |-- mtdblock3
|   |-- mtdr0
|   |-- mtdr1
|   |-- mtdr2
|   |-- mtdr3
|   |-- null
|   |-- nvram
|   |-- ptyp0
|   |-- ptyp1
|   |-- ram -> ram1
|   |-- ram0
|   |-- ram1
|   |-- ram2
|   |-- ram3
|   |-- stderr -> ../proc/self/fd/2
|   |-- stdin -> ../proc/self/fd/0
|   |-- stdout -> ../proc/self/fd/1
|   |-- tty0
|   |-- tty1
|   |-- ttyS0
|   |-- ttyS1
|   |-- ttyp0
|   |-- ttyp1
|   `-- urandom
|-- etc
|   |-- 1x
|   |-- cfg_dft.conf
|   |-- cgi_reboot.sh
|   |-- fstab
|   |-- host.conf
|   |-- init.d
|   |-- inittab
|   |-- localtime
|   |-- mime.types
|   |-- rc.d
|   |   |-- init.d
|   |   |   |-- dhcpd
|   |   |   `-- runsyslog-noklogd.sh
|   |   `-- rcS
|   |-- resolv.conf
|   |-- services
|   |-- snmp
|   |-- sysconfig
|   |   `-- network-scripts
|   |       |-- ifdown
|   |       |-- ifup
|   |       `-- network-functions
|   |-- syslog.conf
|   `-- timezone
|       |-- AFT.tz
|       |-- AKST.tz
|       |-- ALMT.tz
|       |-- AST+.tz
|       |-- AST.tz
|       |-- AZOT.tz
|       |-- BRT.tz
|       |-- CET.tz
|       |-- CSAT.tz
|       |-- CST+.tz
|       |-- CST.tz
|       |-- EET.tz
|       |-- EST+.tz
|       |-- EST.tz
|       |-- FNT.tz
|       |-- GMT.tz
|       |-- GST.tz
|       |-- HST.tz
|       |-- ICT.tz
|       |-- IRT.tz
|       |-- IST.tz
|       |-- JST.tz
|       |-- MAGT.tz
|       |-- MHT.tz
|       |-- MMT.tz
|       |-- MST.tz
|       |-- NST.tz
|       |-- NZST.tz
|       |-- PST.tz
|       |-- SST.tz
|       |-- TOT.tz
|       `-- YEKT.tz
|-- lib
|   |-- ld-2.2.5.so
|   |-- ld-linux.so.1 -> ld-2.2.5.so
|   |-- ld.so.1 -> ld-2.2.5.so
|   |-- libc-2.2.5.so
|   |-- libc.so.6 -> libc-2.2.5.so
|   |-- libcrypto.so -> libcrypto.so.0
|   |-- libcrypto.so.0 -> libcrypto.so.0.9.7
|   |-- libcrypto.so.0.9.7
|   |-- libdl-2.2.5.so
|   |-- libdl.so.2 -> libdl-2.2.5.so
|   |-- libgenErrchk.so -> libgenErrchk.so.0
|   |-- libgenErrchk.so.0 -> libgenErrchk.so.0.0
|   |-- libgenErrchk.so.0.0
|   |-- libgenIpc.so -> libgenIpc.so.0
|   |-- libgenIpc.so.0 -> libgenIpc.so.0.0
|   |-- libgenIpc.so.0.0
|   |-- libgenSysLog.so -> libgenSysLog.so.0
|   |-- libgenSysLog.so.0
|   |-- libgenTcm.so -> libgenTcm.so.0
|   |-- libgenTcm.so.0 -> libgenTcm.so.0.0
|   |-- libgenTcm.so.0.0
|   |-- libm-2.2.5.so
|   |-- libm.so.6 -> libm-2.2.5.so
|   |-- libnss_dns-2.2.5.so
|   |-- libnss_dns.so.2 -> libnss_dns-2.2.5.so
|   |-- libprivcrypto.so -> libprivcrypto.so.0
|   |-- libprivcrypto.so.0 -> libprivcrypto.so.0.0
|   |-- libprivcrypto.so.0.0
|   |-- libpthread-0.9.so
|   |-- libpthread.so.0 -> libpthread-0.9.so
|   |-- libresolv-2.2.5.so
|   |-- libresolv.so.2 -> libresolv-2.2.5.so
|   |-- libsnmp-0.4.2.6.so
|   |-- libsnmp.so -> libsnmp-0.4.2.6.so
|   |-- libssl.so -> libssl.so.0
|   |-- libssl.so.0 -> libssl.so.0.9.7
|   |-- libssl.so.0.9.7
|   |-- libucdagent-0.4.2.6.so
|   |-- libucdagent.so -> libucdagent-0.4.2.6.so
|   |-- libucdmibs-0.4.2.6.so
|   |-- libucdmibs.so -> libucdmibs-0.4.2.6.so
|   |-- libupnp.so
|   `-- modules
|       |-- 2.4.18-mips
|       |   |-- ath_hal.o
|       |   |-- ath_pci.o
|       |   |-- eth.o
|       |   |-- flashapi.o
|       |   `-- wlan.o
|       `-- modules -> /mnt/lib/modules
|-- linuxrc -> bin/busybox
|-- lost+found
|-- proc
|-- sbin
|   |-- CLIX
|   |-- CSPX
|   |-- apfd
|   |-- arp
|   |-- arping
|   |-- art
|   |-- autoipd
|   |-- brctl
|   |-- csptest
|   |-- dhcpcd
|   |-- dhcpcrd
|   |-- ifconfig -> ../bin/busybox
|   |-- ifdown -> /etc/sysconfig/network-scripts/ifdown
|   |-- ifup -> /etc/sysconfig/network-scripts/ifup
|   |-- init -> ../bin/busybox
|   |-- insmod -> ../bin/busybox
|   |-- ip
|   |-- ipcalc
|   |-- iwconfig
|   |-- iwpriv
|   |-- linkevent
|   |-- lsmod -> ../bin/busybox
|   |-- mDNSPublish
|   |-- mDNSResponder
|   |-- nifd
|   |-- ntpclient
|   |-- ntpclientd
|   |-- openssl
|   |-- reboot -> ../bin/busybox
|   |-- rmmod -> ../bin/busybox
|   |-- route
|   |-- snmpd
|   |-- snmptrap
|   |-- snmpwalk
|   |-- synclient
|   |-- syslogd
|   |-- telnetd
|   |-- thttpd
|   |-- upnpd
|   |-- wdog
|   |-- wpa_supplicant
|   `-- xsupplicant
|-- tmp
|-- usr
|   |-- bin
|   |   |-- [ -> ../../bin/busybox
|   |   |-- basename -> ../../bin/busybox
|   |   |-- cut -> ../../bin/busybox
|   |   |-- free -> ../../bin/busybox
|   |   |-- killall -> ../../bin/busybox
|   |   |-- test -> ../../bin/busybox
|   |   `-- tftp -> ../../bin/busybox
|   `-- local
|       `-- share
|           `-- snmp
|               `-- mibs
|                   |-- RFC1155-SMI.txt
|                   `-- RFC1213-MIB.txt
`-- var
    |-- log
    |-- run
    |-- state
    |   `-- dhcp
    |-- syslog
    |   |-- msg_clog.idx
    |   |-- msg_clog.msg
    |   |-- msg_eng.idx
    |   |-- msg_eng.msg
    |   |-- msg_jpn.idx
    |   |-- msg_jpn.msg
    |   |-- msg_log.idx
    |   `-- msg_log.msg
    `-- www
        |-- html
        |   |-- cacfg.cgi
        |   |-- eadesc.skl
        |   |-- help.htm
        |   |-- ie1
        |   |   |-- add.gif
        |   |   |-- apply.gif
        |   |   |-- as_btm.gif
        |   |   |-- as_tit.gif
        |   |   |-- associate.gif
        |   |   |-- back.gif
        |   |   |-- ball-none.gif
        |   |   |-- ball.gif
        |   |   |-- bar.gif
        |   |   |-- bar1.gif
        |   |   |-- barinf.gif
        |   |   |-- bg_ln.gif
        |   |   |-- bg_ln1.gif
        |   |   |-- default.gif
        |   |   |-- dele.gif
        |   |   |-- dhcp_s.gif
        |   |   |-- dhcp_t.gif
        |   |   |-- di01a.gif
        |   |   |-- di01b.gif
        |   |   |-- di02a.gif
        |   |   |-- di02b.gif
        |   |   |-- di03a.gif
        |   |   |-- di03b.gif
        |   |   |-- di04a.gif
        |   |   |-- di04b.gif
        |   |   |-- di05a.gif
        |   |   |-- di05b.gif
        |   |   |-- di_bg.gif
        |   |   |-- di_btm.gif
        |   |   |-- di_top.gif
        |   |   |-- dv_btm.gif
        |   |   |-- dv_inf1.gif
        |   |   |-- dv_tit.gif
        |   |   |-- finish.gif
        |   |   |-- generate.gif
        |   |   |-- help.gif
        |   |   |-- help_1.jpg
        |   |   |-- help_2.gif
        |   |   |-- help_3.gif
        |   |   |-- help_4.gif
        |   |   |-- help_5.gif
        |   |   |-- help_6.gif
        |   |   |-- help_7.gif
        |   |   |-- help_8.gif
        |   |   |-- home.gif
        |   |   |-- import.gif
        |   |   |-- index_1.jpg
        |   |   |-- index_2.gif
        |   |   |-- index_3.gif
        |   |   |-- index_4.jpg
        |   |   |-- index_5.jpg
        |   |   |-- index_6.jpg
        |   |   |-- index_7.jpg
        |   |   |-- index_8.jpg
        |   |   |-- index_9.jpg
        |   |   |-- logon.gif
        |   |   |-- next.gif
        |   |   |-- refresh.gif
        |   |   |-- restore.gif
        |   |   |-- saveto.gif
        |   |   |-- si01a.gif
        |   |   |-- si01b.gif
        |   |   |-- si02a.gif
        |   |   |-- si02b.gif
        |   |   |-- si03a.gif
        |   |   |-- si03b.gif
        |   |   |-- si04a.gif
        |   |   |-- si04b.gif
        |   |   |-- si05a.gif
        |   |   |-- si05b.gif
        |   |   |-- si06a.gif
        |   |   |-- si06b.gif
        |   |   |-- si07a.gif
        |   |   |-- si07b.gif
        |   |   |-- si08a.gif
        |   |   |-- si08b.gif
        |   |   |-- sp_btm.gif
        |   |   |-- sp_tit.gif
        |   |   |-- spi01a.gif
        |   |   |-- spi01b.gif
        |   |   |-- spi03a.gif
        |   |   |-- spi03b.gif
        |   |   |-- spi04a.gif
        |   |   |-- spi04b.gif
        |   |   |-- spi05a.gif
        |   |   |-- spi05b.gif
        |   |   |-- syslog.gif
        |   |   |-- ti01a.gif
        |   |   |-- ti01b.gif
        |   |   |-- ti02a.gif
        |   |   |-- ti02b.gif
        |   |   |-- ti03a.gif
        |   |   |-- ti03b.gif
        |   |   |-- ti04a.gif
        |   |   |-- ti04b.gif
        |   |   |-- tl_btm.gif
        |   |   |-- tl_tit.gif
        |   |   |-- top_1.jpg
        |   |   |-- top_10.gif
        |   |   |-- top_2.jpg
        |   |   |-- top_3.gif
        |   |   |-- top_3a.gif
        |   |   |-- top_4.gif
        |   |   |-- top_4a.gif
        |   |   |-- top_5.gif
        |   |   |-- top_5a.gif
        |   |   |-- top_6.gif
        |   |   |-- top_6a.gif
        |   |   |-- top_7.gif
        |   |   |-- top_7a.gif
        |   |   |-- top_8.jpg
        |   |   |-- top_9.gif
        |   |   |-- upgrade.gif
        |   |   `-- yes.gif
        |   |-- index.htm
        |   |-- infoSCPD.xml
        |   |-- setup.cgi
        |   |-- txtcfg.cgi
        |   |-- upload.cgi
        |   `-- vssver.scc
        `-- template_cei-1
            |-- adv_opmode.htm
            |-- adv_passwd.htm
            |-- adv_snmp.htm
            |-- adv_sysmon.htm
            |-- adv_wireless.htm
            |-- index.htm
            |-- login.htm
            |-- sts_bridgetbl.htm
            |-- sts_sitesvy.htm
            |-- sts_syslog.htm
            |-- tool_default.htm
            |-- tool_reboot.htm
            |-- tool_texcon.htm
            |-- tool_upgrade.htm
            |-- wiz_devip.htm
            |-- wiz_save.htm
            |-- wiz_time.htm
            `-- wiz_wireless.htm

34 directories, 354 files
面白そうなファイルはなさそうです。念のため、アーキテクチャと busybox の バージョンを確認してみました。
[toyota@kashyyyk]% file busybox
busybox: ELF 32-bit MSB MIPS-I executable, MIPS, version 1 (SYSV), for GNU/Linux
 2.4.18, dynamically linked (uses shared libs), stripped

[toyota@kashyyyk]% strings busybox | grep BusyBox
BusyBox v0.60.5 (2004.08.16-12:21+0000) Built-in shell (ash)
        BusyBox is a multi-call binary that combines many common Unix
        link to busybox for each function they wish to use, and BusyBox
BusyBox v0.60.5 (2004.08.13-06:30+0000) multi-call binary
だそうです。

Team Yokohama X-VACCINE & Tatsuyoshi Networks
もどる