MobileHackerz
HOME > corega APRS-11を改造して安価なLinux BOXルータを作ろう

corega APRS-11を改造して安価なLinux BOXルータを作ろう

corega APRS-11は、2000年の10月末に発売された(もう3年も前になるんですねえ…)「ルータ機能を搭載した無線LANアクセスポイント」です。 ただの「無線LANアクセスポイント」のわりには、PCカードスロットやシリアルポートを備え、ファームウェアのアップデートによりAirH"などに対応するなど、なかなか面白い製品でした。
製造・販売が終了して久しいですが、先日秋葉原をぷらぷらしていたところ、ソフマップで中古が5000円ほどで売っているのを発見してつい購入。
記憶が正しければ、こいつの中身はLinuxだったはず…。

※おそらくアライドテレシスWR211APも同じ製品だと思います。他にも同一形状のOEM品が数種類ある模様。

ハードウェアをCheck!


基板写真(1)

というわけで、まずは分解してみます。むき出しの基板と、内部に隠れたPCカードスロットに刺さった無線LANカードが見えます。

基板写真(2)

肝心のCPUやメモリチップなどはシールドの下に隠れて見えません。シールドをはがすためには半田をとらないといけないみたいなので、一旦はここであきらめて組みなおしてみます。
まあ、たぶんハードウェアはいじらなくてもなんとかなるでしょう。



ソフトウェアをCheck!

次にソフトウェアをチェックします。メーカーサイトから、APRS-11ファームウェアダウンロードへと進んで、提供されているソフトウェアをチェック!
ちょっとごちゃごちゃと書いてあってわかりにくいですが、つまり現状で提供されているファームウェアは

・最新版「Ver4.5.6L」ファームウェア(2MB)
・Peer to Peerアクセスポイントファームウェア(ノンサポート, 2MB)

そして、

・ファームウェアアップデートユーティリティ

ということのようです。で、前者のファームウェア2種は、どちらかを選択して利用すると。
早速最新版(Ver4.5.6L)とアップデートユーティリティをダウンロードして眺めてみると…

ファームウェアのダンプ

お、おやあ?LILOの文字が見えますね。どうも、簡単なブートアップルーチン+ディスクイメージがそのまんま「ファームウェア」のバイナリに入っているように見えます。
ためしにアップデートユーティリティで書き込みを行ってみると、シリアルポート経由でのファームウェア書き込み処理は、Linuxがブートする前の段階で行われているみたいです。つまり、多少の無茶をやっても復旧できそうじゃないですか。こりゃいい!
しかも、バイナリエディタでちょっと(ファームウェア)ファイルを書き換えてから書き込みしてみたところ、あっさりと書き込み処理ができてしまいました。ファイルチェックもやってないみたいです。便利ですね〜



まずはshell

というわけで、まずファーストステップとして、APRS-11のファームウェアをちょびっと書き換えてLinuxのShellに落ちるのを目指してみましょう。
「ファームウェア」のファイルはそのほとんどがディスクイメージですから、passwdファイルに相当するものもどこかにあるはずです。
バイナリエディタで検索してみましょう…。

passwdファイル部分

ありました!
ユーザアカウントはrootとnobodyの2つだけみたいですね。rootはデフォルトのパスワード(corega)が設定されているようですが、特にshellが特殊なものに設定されている様子はありません。うーん、これはshellが起動したあとprofileで設定コンソールが起動されているのでしょうか。そういう感じですね:-)

では、とりあえず暫定的に、rootのホームディレクトリを移動してみることにします。
ファイルサイズを変更するのは微妙に面倒なので、一旦rootのパスワードを消して、こんな風に書き換えてみました。

passwdファイル書き換え後

単にrootのホームディレクトリを"/"から"/tmp"に移動しただけですが、文字数の調整のためパスワードの消去とユーザ名の変更;-)を行ってます。
さあさあ、書き込んでみましょう。

ファームウェア書き込み

書き込み終わったところでターミナルを起動して…

Shell確認

!!!
Shellに入れました!



内部構造を探索

と、Shellにさえ入れてしまえばこっちのもんです。早速APRS-11の中身を探検してみることにします。

# cat /proc/version
Linux version 2.2.17brfw (root@bradley) (gcc version 2.95.2 20000220 (Debian GNU
/Linux)) #1 Tue Apr 23 17:19:22 JST 2002
# cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 4
model           : 10
model name      : 02/0a
stepping        : 4
fdiv_bug        : no
hlt_bug         : no
sep_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : no
fpu_exception   : no
cpuid level     : 1
wp              : yes
flags           :
bogomips        : 49.77

# cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:  15351808  9408512  5943296  2830336  4210688  2285568
Swap:        0        0        0
MemTotal:     14992 kB
MemFree:       5804 kB
MemShared:     2764 kB
Buffers:       4112 kB
Cached:        2232 kB
SwapTotal:        0 kB
SwapFree:         0 kB
# cat /proc/filesystems
        ext2
nodev   proc
# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0100-013f : cw10_cs
0320-033f : NE2000
03e0-03e1 : i82365
03f8-03ff : serial(auto)
#

まずは定番cpuinfoその他。どうもCPUはAMDのELANを使っているみたいですね。子羊ルータとほぼ同等です。i386系チップなので、今後いじりまわすのにわざわざクロスコンパイル環境を作らなくてもよさそう、というのは大きな収穫です。
速度は、古い子羊ルータが33BogoMIPSくらい、新(高速版)子羊ルータが66BogoMIPSくらいのようなので、ちょうどその中間あたり。今となっては能力不足を感じますが、省電力低価格おあそびLinux BOXとしてはまあ良しとしましょう。

# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/ram                  4027      3365       458  88% /

次にディスクの状態を見てみます。起動時に4MBほどのRAMディスクを確保して、そこに一式システムを構築している模様です。その「構築するシステム」はどこにあるかというと…

# mount /dev/flash1 /mnt
# ls /mnt
lost+found  boot        etc
# ls /mnt/boot
boot.b      zImage      initrd.img  map
# ls /mnt/etc
ap.conf             autofw.pkg          corega_html.tar.gz  cw10.opts
dhcpd.conf.bak      dhcpd.pkg           inet.conf           passwd
pkgchk.pkg          pppoe.cfg           pppoe.pkg           ppxp.pkg
ppxppasswd          ppxpwavelan         standard            th010101.hex.gz
usr_cp
# umount /mnt
#

ここです。/dev/flash1が、一番最初に書き換えた「ファームウェア」ことディスクイメージの在り処
/dev/flash1上の、/boot/initrd.imgに一式システムが入っているようです。
追加パッケージとしての機能は/etc/〜.pkgという形式で書き込まれており、これも随時RAMディスク上に展開されている、と。
このフラッシュメモリデバイスは普通にファイルシステムとして書き込みもできるようなので、さっき空にしたパスワードを再設定しておきましょう。

# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.
# cat /etc/passwd
root:/HaUaICdherOQ:0:0:MobHackerz:/tmp:/bin/sh
nobody:x:65534:100:nobody:/dev/null:
# mount /dev/flash1 /mnt
# cp /etc/passwd /mnt/etc/
# sync
# umount /mnt
#

動いているプロセスはどんなもんでしょうか。

# ps
  PID  Uid      Gid State Command
    1 root     root     S [init]
    2 root     root     S [kflushd]
    3 root     root     S [kupdate]
    4 root     root     S [kpiod]
    5 root     root     S [kswapd]
  106 root     root     S [cron]
  111 root     root     S [syslogd]
  123 root     root     S [cardmgr]
  141 root     root     S [cw10d]
  180 root     root     S [mathopd]
  194 root     root     S [sh]
  490 root     root     R [ps]
#
# cardctl ident
Socket 0:
  product info: "corega K.K.", "Wireless LAN PCC-11", "Ver. 1.04", ""
  manfid: 0xc00f, 0x0000
  function: 6 (network)
Socket 1:
  no product info available
#

あ、普通にcardmgrが動いてますね。ということは、メモリカードスロットにフラッシュメモリなりなんなりを差してあげれば、もうちょっとディスク容量を増やして遊ぶこともできそうです。

# ls /etc/pcmcia
config.opts   config        serial        cw10.opts     network
network.opts  shared        serial.opts   config.add
#

でも、ideまわり(メモリカードまわり)は設定ファイル・モジュールが無いようなので、そこは別途用意する必要があるかな〜。。。


以下適当につづく









管理人へのメールについてはこちら
MobileHackerz - It is not cracking but happy hacking!