D Blog

「ちょっと、気になる~」をメモ。

Planex MZK-W04NU (4)

2010-09-07 | Memo

Planex MZK-W04NU の OpenWRT .webui ファイルの作り方。

こちら↓
https://forum.openwrt.org/viewtopic.php?id=21182
に詳しく載っていた。

mkplanexfw というのを使うらしい。

正規アップロードファイルの先頭34バイトを切り取って、もう1度元に戻せるか、やってみる。

svn の trac の source view からコピペで持ってきて不要部分を切り取って
mkplanexfw.c sha1.c sha1.h を作り、コンパイルが通らない部分を修正
(#include <byteswap.h> を追加) して mkplanexfw を作成。

切り取り(後ろの0x00も同時に削除)
$ tail -c 7864286 mzkw04nu_v10314.bin | head -c 7798784 > tmp.bin

ヘッダーを付ける
$ ./mkplanexfw -i tmp.bin -o tmp2.bin -B MZK-W04NU
$ cmp mzkw04nu_v10314.bin tmp2.bin
mzkw04nu_v10314.bin tmp2.bin 異なります: バイト 21、行 1

違っているのはバージョン。
バージョンを指定してもう1度
$ ./mkplanexfw -i tmp.bin -o tmp2.bin -B MZK-W04NU -v 1.03.14
$ cmp mzkw04nu_v10314.bin tmp2.bin
mzkw04nu_v10314.bin tmp2.bin 異なります: バイト 29、行 1

mkplanexfw.c 61行目 .unk = {0x04, 0x08} を {0x00, 0x00} に変更。
(単なるゴミか?)
もう1度
$ ./mkplanexfw -i tmp.bin -o tmp2.bin -B MZK-W04NU -v 1.03.14
$ cmp mzkw04nu_v10314.bin tmp2.bin
cmp: ファイルtmp2.binの末尾

いいみたい。

後ろの0x00を付ける。
$ dd bs=7680k conv=sync if=tmp2.bin of=tmp3.bin
0+1 記録始め
1+0 記録終わり
7864320 バイト (7.9 MB) コピー終了, 0.0463221 s, 170 MB/s
$ cmp mzkw04nu_v10314.bin tmp3.bin

完全に一致できた。

ソースは、こちらをどうぞ。

Planex MZK-W04NU (3) で .webui ファイルの書き込みに失敗している例は、バージョンを指定せずに作成し 1.00.00 か何かになっていたのでは?
というのが、今回の作業から得られた推測。
OpenWRT 10.03 の .webui ファイルにはバージョン 2.00.00 が書かれているので、そのままでいけそうな気がする。