RouterBOARD RB2011UiAS-IN アップデートパッケージ(2)

RourterBOARD

アップグレードパッケージ をもうちょっと見てみる。

ヒント

ヒントは、dumpnpk.py にあるコメント。

ヘッダを見る

yasunari@qvl:/mnt/disk1/wk/npk$ hexdump -C routeros-mipsbe-6.20.npk |less
	:
	:
ダンプした結果とコメントと見比べていく

# 0-4 : '\x1e\xf1\xd0\xba'

00000000  1e f1 d0 ba 37 98 9b 00  12 00 20 00 00 00 72 6f  |....7..... ...ro|
1e f1 d0 ba は一致。

# 4-8 : len(data - 8) ===> The size of the package

37 98 9b 00 だが、どっちエンディアン?
この npk ファイルのサイズは、
yasunari@qvl:/mnt/disk1/wk/npk$ ls -l routeros-mipsbe-6.20.npk
-rw-rw-r-- 1 yasunari yamasita 10197055 10月  4 22:45 routeros-mipsbe-6.20.npk
yasunari@qvl:/mnt/disk1/wk/npk$
10197055 バイト。16進だと 0x9b983f。
リトルエンディアンか。

# 8-14 : '\x01\x00 \x00\x00\x00'

12 00 20 00 00 00 違う。メモからして5バイトしか無いが。。
なんの差?

# 14-30: description ===> 16 chars to put a short name

00000000  1e f1 d0 ba 37 98 9b 00  12 00 20 00 00 00 72 6f  |....7..... ...ro|
00000010  75 74 65 72 6f 73 2d 6d  69 70 73 62 65 00 00 66  |uteros-mipsbe..f|
routeros-mipsbe[NULL]

# 30-34: ?? | ==> version #1 - used in this header again (revision, 'f' (102), minor, major)

00000010  75 74 65 72 6f 73 2d 6d  69 70 73 62 65 00 00 66  |uteros-mipsbe..f|
00000020  14 06 14 d2 2b 54 00 00  00 00 00 00 00 00 10 00  |....+T..........|
00 66 14 06 14
よくわからん。それに5バイトだし。
34 が下とかぶってるのはやっぱり 33 まで?

そう見ると、0x14 0x06 は バージョンの 6.20 ?

# 34-38: ?? | ==> version #2 - used in the data part (epoch time of package build)

00000020  14 06 14 d2 2b 54 00 00  00 00 00 00 00 00 10 00  |....+T..........|
14 d2 2b 54

0x542bd214 が epoch time of package build だとすると、
0x542bd214 は 2014年10月1日 19:06:12 まぁそんなものか。

# 38-42: 0
# 42-46: 0

00000020  14 06 14 d2 2b 54 00 00  00 00 00 00 00 00 10 00  |....+T..........|
00000030  04 00 00 00 6d 69 70 73  02 00 42 00 00 00 52 6f  |....mips..B...Ro|
38-41, 42-45 の間違いだな。

# 46-48: 16

46-47 は 0x10 違う

# 48-50: 4 |

48-49 は 0x04 OK

# 50-52: 0 | ==> Maybe int size of the architecture identifier that follows

50-51 は 0

# 52-56: "i386"

"mips"

# 56-58: 2

56-57 は 0x02 OK

# 58-62: long description size ===> how many chars follow

58-59 は 0x42

# 62-x : long description text

00000030  04 00 00 00 6d 69 70 73  02 00 42 00 00 00 52 6f  |....mips..B...Ro|
00000040  75 74 65 72 4f 53 20 66  6f 72 20 6d 69 70 73 62  |uterOS for mipsb|
00000050  65 20 52 6f 75 74 65 72  42 4f 41 52 44 73 2c 20  |e RouterBOARDs, |
00000060  69 6e 63 6c 75 64 65 73  20 61 6c 6c 20 73 75 70  |includes all sup|
00000070  70 6f 72 74 65 64 20 66  65 61 74 75 72 65 73 0a  |ported features.|
ここから先は、コメントに書いてあることがよく理解できない。。。
zlib だとかなんとか。

その下には

00000080  15 00 00 00 00 00 14 00  42 00 00 00 02 00 69 70  |........B.....ip|
00000090  76 36 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |v6..............|
000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 77 69  |..............wi|
000000b0  72 65 6c 65 73 73 2d 66  70 00 00 00 00 00 00 00  |reless-fp.......|
000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 01 00  |................|
000000d0  24 00 00 00 73 79 73 74  65 6d 00 00 00 00 00 00  |$...system......|
000000e0  00 00 00 00 00 66 14 06  14 d2 2b 54 00 00 00 00  |.....f....+T....|
000000f0  00 00 00 00 03 00 00 00  10 00 04 00 00 00 6d 69  |..............mi|
00000100  70 73 02 00 34 00 00 00  0a 20 20 20 20 4d 61 69  |ps..4....    Mai|
00000110  6e 20 70 61 63 6b 61 67  65 20 77 69 74 68 20 62  |n package with b|
00000120  61 73 69 63 20 73 65 72  76 69 63 65 73 20 61 6e  |asic services an|
00000130  64 20 64 72 69 76 65 72  73 0a 20 20 03 00 02 00  |d drivers.  ....|
00000140  00 00 00 00 16 00 b0 0e  00 00 00 00 00 00 00 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
ipv6 だとか、wireless-fp だとか system, mips, Main package with basic services and drivers. と言った文字列が見えるのだが。。。

ファイル名?

もう少し進むと、
*
00000ff0  00 00 00 00 00 00 00 00  00 00 15 00 00 b0 88 00  |................|
00001000  68 73 71 73 ac 04 00 00  1f aa 2b 54 00 00 08 00  |hsqs......+T....|
00001010  2f 00 00 00 04 00 13 00  c0 02 01 00 04 00 00 00  |/...............|
00001020  12 17 d4 22 00 00 00 00  0f a0 88 00 00 00 00 00  |..."............|
00001030  07 a0 88 00 00 00 00 00  ff ff ff ff ff ff ff ff  |................|
00001040  ff 3e 88 00 00 00 00 00  55 68 88 00 00 00 00 00  |.>......Uh......|
00001050  25 97 88 00 00 00 00 00  f1 9f 88 00 00 00 00 00  |%...............|
00001060  fd 37 7a 58 5a 00 00 01  69 22 de 36 03 c0 81 d0  |.7zXZ...i".6....|
00001070  06 84 d4 09 21 01 0e 00  25 6f 64 09 01 ed 40 1f  |....!...%od...@.|
00001080  8b 08 08 0e a0 11 54 00  03 77 6c 61 6e 34 2e 64  |......T..wlan4.d|
00001090  6c 6c 00 e4 5a 7b 74 53  65 b6 3f 29 41 0a 54 a8  |ll..Z{tSe.?)A.T.|
wlan4.dll という文字列が見える。

ためにし .dll を探してみる

yasunari@qvl:/mnt/disk1/wk/npk$ strings routeros-mipsbe-6.20.npk | grep \.dll
wlan4.dll
2906336023 48988 secure.dll 6.20rc16
wlan5.dll
roteros.dll
yasunari@qvl:/mnt/disk1/wk/npk$
4つの dll が入っている???

しかし、rc16 ってなんだ??

wlan4.dll の取り出し

更に見ていると、

00001070  06 84 d4 09 21 01 0e 00  25 6f 64 09 01 ed 40 1f  |....!...%od...@.|
00001080  8b 08 08 0e a0 11 54 00  03 77 6c 61 6e 34 2e 64  |......T..wlan4.d|
00001090  6c 6c 00 e4 5a 7b 74 53  65 b6 3f 29 41 0a 54 a8  |ll..Z{tSe.?)A.T.|
107f から 1f 8b という zlib のマジックナンバーがある。
取り出せるか???

16進の 0x107f は10進の 4223 なので、 先頭から 4223 バイトをスキップして gunzip に通してみる。

yasunari@qvl:/mnt/disk1/wk/npk$ dd if=routeros-mipsbe-6.20.npk bs=4223 skip=1 | gunzip > wlan4.dll

gzip: stdin: invalid compressed data--format violated
dd: `標準出力' を書き込んでいます: Broken pipe
27+0 レコード入力
26+0 レコード出力
109798 バイト (110 kB) コピーされました、 0.0246122 秒、 4.5 MB/秒
yasunari@qvl:/mnt/disk1/wk/npk$
gunzip はエラーになっていないので、wlan4.dll は取り出せた模様。
yasunari@qvl:/mnt/disk1/wk/npk$ ls -l wlan4.dll
-rw-r--r-- 1 yasunari yamasita 131072 10月 13 15:00 wlan4.dll
yasunari@qvl:/mnt/disk1/wk/npk$

Good going!!

中身は??

yasunari@qvl:/mnt/disk1/wk/npk$ file wlan4.dll
wlan4.dll: PE32 executable (DLL) (console) Intel 80386 (stripped to external PDB), for MS Windows
yasunari@qvl:/mnt/disk1/wk/npk$
何で、80386 の PE なの???


京都府道交差点名サーベイ:丹後方面3回目(14/10/11)
山下康成の
きばらないブログ

RouterBOARD RB2011UiAS-IN アップデートパッケージ(3)

ツイート Tweet to @yasunari_y @yasunari_yをフォロー

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