マイクロ総合研究所から発売されてる、
NetGenesis4のプロトコルの解析をしてみました。
※NetGenesis4はモデムやTAを外付けに必要な低価格なダイヤルアップルータです。
解析結果は独自のもので、マイクロ総合研究所が公式に認めているものではありません。
間違っていることも考えられます。
実際にこの情報を元に試す場合は、自己責任でお願いします。
環境※このページは固定ピッチのフォント設定によっては、ずれてしまい読みにくいことがあります。
基本事項
手動接続の流れ
NetGenesis4検索
接続要求、切断要求
状態確認
デフォルト・ダイヤルアウト接続先設定要求
時刻設定
ファームウェア情報
設定モード
C言語版サンプルプログラム
CGI版サンプルプログラム(Perl)
NetGenesis4シミュレータ(ソフト開発者向け)
00000 : 00 01 00 00 41 01 00 10 - 00 00 00 00 00 00 00 00 ................ ~~~~~ ~~~~~ ~~~~~ ~~~~~~~~~~~ 00010 : 4E 57 47 34 20 43 68 65 - 63 6B 00 11 00 1B 00 3A ................
+00 +01 シーケンス番号。ユーティリティが送信するたびにカウントアップ。 +02 +03 00 謎 +04 +05 コマンド(応答とは、NetGenesis4が送ってくるものを指す) ブロードキャスト( to 255.255.255.255 ) 41 01 NetGenesis4検索 81 01 NetGenesis4応答(この時にも内蔵時計はセットされます) 41 0B NetGenesis4時刻設定 81 0B NetGenesis4時刻設定応答 41 04 ファームウェア情報取得要求 「動作設定」を押したときにこれが送信されている。 81 04 ファームウェア情報取得応答 ここから先は通常アドレス( to 192.168.xx.xxなど ) 01 6A シリアル1接続要求 81 6A シリアル1接続応答 01 6B シリアル2接続要求 81 6B シリアル2接続応答 01 68 シリアル1切断要求 81 68 シリアル1切断応答 01 69 シリアル2切断要求 81 69 シリアル2切断応答 01 64 シリアル1状態確認 81 64 シリアル1状態応答 01 65 シリアル2状態確認 81 65 シリアル2状態応答 02 01 設定受信要求 82 01 設定受信応答 03 01 設定更新要求 83 01 設定更新応答 03 02 設定更新確定要求 83 02 設定更新確定応答 Firmware Version : 2.204 以降のみ 01 6E シリアル1 デフォルト・ダイヤルアウト接続先設定要求 81 6E シリアル1 デフォルト・ダイヤルアウト接続先設定応答 01 6F シリアル2 デフォルト・ダイヤルアウト接続先設定要求 81 6F シリアル2 デフォルト・ダイヤルアウト接続先設定応答 +06 +07 データ長(+10以降のデータ長) +08〜+0F 00 ( Firmware Ver.1.x、または、NetGenesis4への要求データの場合) ( Firmware Ver.2.x、かつ、NetGenesis4からの応答データの場合) Ver.2.xでは、NetGenesis4の設定内容取得の際に流れるデータが暗号化されています。 接続状態などの応答データは暗号化されません。設定モードのデータのみ暗号化されます。 +08〜+09 00 01 多分、データが暗号化されているというフラグ +0A〜+0B xx xx 暗号キー。この値を元に暗号を解く。 +0C〜+0F 00 00 00 00 +10〜 データ 応答データの場合、+10〜+13にNetGenesis4のIPアドレスが入る(例:C0 A8 00 01) ただし、デフォルト・ダイヤルアウト接続先設定ではIPアドレスが入らない。
●セットアップユーティリティ NWG4set Ver.1.25 1.セットアップユーティリティ起動する。(NetGenesis4検索コマンド送信) 2.NetGenesis4が応答する。(この時 NetGenesis4 の時計がセットされる) 3.「手動 接続」ボタンを押す。(接続要求コマンド送信) 4.NetGenesis4が状態(作業中、接続、切断)を応答する。 5.状態が作業中の場合、状態確認コマンド送信して4へ戻る。 6.完了
●セットアップユーティリティ NWGset Ver.2.04 , 2.47 , 2.62 , 2.70 , 2.71 1.セットアップユーティリティ起動する。(NetGenesis4検索コマンド送信) 2.NetGenesis4が応答する。(この時 NetGenesis4 の時計がセットされる) 3.シリアル1の状態確認を行う。 4.NetGenesis4が応答する。 5.シリアル2の状態確認を行う。 6.NetGenesis4が応答する。 7.「手動 接続」ボタンを押す。(接続要求コマンド送信) 8.NetGenesis4が状態(作業中、接続、切断)を応答する。 9.状態が作業中の場合、状態確認コマンド送信して8へ戻る。 10.完了
00000 : 00 01 00 00 41 01 00 10 - 00 00 00 00 00 00 00 00 ................ 00010 : 4E 57 47 34 20 43 68 65 - 63 6B 00 11 00 1B 00 3A NWG4 Check...... ~~1~~ ~~2~~ ~~3~~ 1〜3には時分秒を入れる。例では 17時27分58秒 となっている。
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 01 00 00 81 01 00 28 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 FF FF FF 00 - 4E 65 74 47 65 6E 65 73 ........NetGenes ~~~~~~~~1~~ ~~~~~~~~2~~ ~~~~~~~~~~~~~~~~~~~~3~~ 00020 : 69 73 34 00 00 00 00 00 - 00 00 00 00 00 00 00 00 is4............. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00030 : 00 00 00 00 00 00 00 00 ........ ~~~~~~~~~~~~~~~~~~~~~~~ 1 NetGenesis4のIPアドレス 192.168.0.1 2 NetGenesis4のサブネットマスク 255.255.255.0 3 NetGenesis4にセットされた名前 "NetGenesis4" (32バイト固定長。不足分は 00 で埋まる。)
00000 : 00 02 00 00 01 6A 00 04 - 00 00 00 00 00 00 00 00 ................ ~~1~~ ~~2~~ ~~3~~ 00010 : C0 A8 00 01 .... ~~~~~~~~4~~ 1 シーケンス番号(多分なんでもいい) 2 シリアル1接続要求コマンド 3 データ長4バイト 4 NetGenesis4のIPアドレス 192.168.0.1
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 02 00 00 81 6A 00 06 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 04 ...... ~~~~~~~~1~~ ~~2~~ 1 NetGenesis4のIPアドレス 192.168.0.1 2 動作状態 00 00 ポート未使用 00 01 専用線接続 00 02 RASサーバ接続 (接続応答時のみ) 00 03 切断状態 00 04 WAIT状態 00 05 接続状態
NetGenesis4からは以下のデータが戻ってくる。(Firmware Version : 2.204 以降)
00000 : 00 02 00 00 81 6A 00 40 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 04 00 00 - 80 00 00 01 00 00 00 00 ................ ~~~~~~~~1~~ ~~2~~ ~~3~~ ~~~~~4~~~~~ ~~5~~ 00020 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00030 : 49 53 50 20 31 2D 31 00 - 00 00 00 00 00 00 00 00 ISP 1-1......... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00040 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~6~~ 1 NetGenesis4のIPアドレス 192.168.0.1 2 動作状態 00 00 ポート未使用 00 01 専用線接続 00 02 RASサーバ接続 (接続応答時のみ) 00 03 切断状態 00 04 WAIT状態 00 05 接続状態 3 00 00 (たとえ接続中でも) 4 接続モード(状態確認コマンド参照) 5 ダイヤルアウト接続先(00 00 〜 00 03) 6 接続先名称
00000 : 00 03 00 00 01 64 00 04 - 00 00 00 00 00 00 00 00 ................ ~~1~~ ~~2~~ ~~3~~ 00010 : C0 A8 00 01 .... ~~~~~~~~4~~ 1 シーケンス番号(多分なんでもいい) 2 シリアル1状態確認コマンド 3 データ長4バイト 4 NetGenesis4のIPアドレス 192.168.0.1
以下の24バイトを、目的のNetGenesis4のIPアドレスへ送信する。(Firmware Version : 2.313 以降)
この要求を F/W 2.21 へ投げても正しく F/W 2.21 の応答が戻る。他のF/Wは不明だが問題ないと思われる。
セットアップユーティリティ V2.70 は F/W バージョンを確認せずにこの要求を使用している。
00000 : 00 03 00 00 01 64 00 08 - 00 00 00 00 00 00 00 00 ................ ~~1~~ ~~2~~ ~~3~~ 00010 : C0 A8 00 01 00 00 00 00 ........ ~~~~~~~~4~~ ~~5~~ ~~6~~ 1 シーケンス番号(多分なんでもいい) 2 シリアル1状態確認コマンド 3 データ長8バイト 4 NetGenesis4のIPアドレス 192.168.0.1 5 コマンドフラグ。 00 00 通常検索 00 01 送受信バイト数を0リセットする 6 不明。設定変えなくても変化することがある。(下記値は確認した例) 00 00 とりあえずこれで問題ないと思う。 09 00 12 00 23 00 1A 00 68 65 AE A5 E4 77
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 03 00 00 81 64 00 08 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 04 00 00 ........ ~~~~~~~~1~~ ~~~~~~~~2~~ 1 NetGenesis4のIPアドレス 192.168.0.1 2 動作状態 00 00 00 00 ポート未使用 00 03 00 00 切断状態 00 04 00 00 WAIT状態 00 05 ?? ?? 接続状態 09 00(FW2.204より前)02 80(FW2.204) どうやら接続DTEスピード(FW2.204以降)
NetGenesis4からは以下のデータが戻ってくる。(Firmware Version : 2.204 以降)
00000 : 00 03 00 00 81 64 00 A8 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 03 00 00 - 80 00 00 01 00 00 00 00 ................ ~~~~~1~~~~~ ~~~~~2~~~~~ ~~~~~~~~3~~ ~~4~~ 00020 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00030 : 00 01 00 01 00 00 00 00 - 49 53 50 20 31 2D 31 00 ........ISP 1-1. ~~5~~ ~~6~~ ~~7~~ ~~8~~ ~~~~~~~~~~~~~~~~~~~~~~~ 00040 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00050 : 00 00 00 00 00 00 00 00 - 49 53 50 20 31 2D 32 00 ........ISP 1-2. ~~~~~~~~~~~~~~~~~~~~9~~ 00060 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00070 : 00 00 00 00 00 00 00 00 - 49 53 50 20 31 2D 33 00 ........ISP 1-3. 00080 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00090 : 00 00 00 00 00 00 00 00 - 52 41 53 20 31 2D 31 00 ........RAS 1-1. 000A0 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 000B0 : 00 00 00 00 00 00 00 00 ........ 1 NetGenesis4のIPアドレス 192.168.0.1 2 動作状態 3 接続モード(各ビットで意味を持つ) bit 0 ISP・端末型ダイヤルアップIP接続 bit 1 RASクライアントIP接続 bit 2 RASサーバIP接続 bit 3 ISP・LAN型ダイヤルアップIP接続 bit 4 ISP・専用線IP接続 bit 5 専用線IP接続 bit 6〜7 未使用 bit 8 LAN型ダイヤルアップIP接続 bit 9〜30 未使用 bit31 デフォルトゲートウェイ 接続モード(例) 80 00 00 01 ISP・端末型ダイヤルアップIP接続 80 00 00 02 RASクライアントIP接続 80 00 00 05 ISP・端末型ダイヤルアップIP接続とRASサーバIP接続を併用 80 00 00 06 RASクライアントIP接続とRASサーバIP接続を併用 00 00 00 04 RASサーバIP接続 80 00 00 08 ISP・LAN型ダイヤルアップIP接続 00 00 01 00 LAN型ダイヤルアップIP接続 80 00 00 10 ISP・専用線IP接続 00 00 00 20 専用線IP接続 4 デフォルト・ダイヤルアウト接続先(00 00 〜 00 03) 5 接続先1が有効(00 01)/無効(00 00) 6 接続先2 7 接続先3 8 接続先4 9 接続先1名称(最大32文字の文字列。00で終了。残りは不定値) 以下、接続先名称 + 00 00 の繰り返し
NetGenesis4からは以下のデータが戻ってくる。(Firmware Version : 2.313 以降)
00000 : 00 03 00 00 81 64 01 64 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 00 17 70 - 00 02 00 00 00 00 00 00 ................ ~~~~~~~~1~~ ~~~~~~~13~~ ~~14~ ~~~~~~~~~~~ 00020 : 00 00 00 03 80 00 00 01 - 00 04 00 01 00 01 00 01 ................ ~~15~ ~~2~~ ~~~~~~~~3~~ ~~16~ ~~4~~ ~~5~~ ~~6~~ 00030 : 00 01 00 00 49 53 50 20 - 31 2D 32 00 00 00 00 00 ....ISP 1-1..... ~~7~~ ~~8~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00040 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00050 : 00 00 00 00 49 53 50 20 - 31 2D 32 00 00 00 00 00 ....ISP 1-2..... ~~~~~~~~9~~ 00060 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00070 : 00 00 00 00 49 53 50 20 - 31 2D 33 00 00 00 00 00 ....ISP 1-3..... 00080 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00090 : 00 00 00 00 52 41 53 20 - 31 2D 31 00 00 00 00 00 ....RAS 1-1..... 000A0 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 000B0 : 00 00 00 00 00 30 00 04 - 43 4F 4E 4E 4E 43 54 20 ........CONNECT ~~20~ ~~19~ ~~~~~~~~~~~~~~~~~~~~~~~ 000C0 : 36 34 30 30 30 0D 0A 00 - xx xx xx xx xx xx xx xx 64000........... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~10~~ 000D0 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 000E0 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 000F0 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 00100 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 00110 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 00120 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ 00130 : xx xx xx xx xx xx xx xx - 00 00 00 00 ## ## ## ## ................ ~~11~ ~~~~~~~12~~ 00140 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 00150 : xx xx xx xx xx xx xx xx - xx xx xx xx xx xx xx xx ................ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~21~~ 00160 : 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ ~~~~~~~17~~ ~~~~~~~18~~ ~~~~~~~~22~ ~~~~~~~~23~ 00170 : 00 00 00 00 ........ ~~~~~~~~24~ 1 NetGenesis4のIPアドレス 192.168.0.1 2 動作状態 00 00 ポート未使用 00 03 切断状態 00 04 WAIT状態 00 05 発呼による接続状態 00 21 着呼による接続状態 3 接続モード(各ビットで意味を持つ) 4 デフォルト・ダイヤルアウト接続先(00 00 〜 00 03) 5 接続先1が有効(00 01)/無効(00 00) 6 接続先2 7 接続先3 8 接続先4 9 接続先1名称(最大32文字の文字列。00で終了。残りは不定値) 以下、接続先名称 + 00 00 の繰り返し 10 DCE速度 TA/モデムの CONNECT や、CARRIER の文字列。00で終了。残りは不定値 最大128文字。接続状態の時のみ有効。 11 IPアドレスフラグ 00 00 無効 00 01 有効 12 接続中または最後に接続したときのルータIPアドレス ISPまたはRASサーバから渡されたIPアドレス 13 接続してからの時間(1/10秒単位)のようです。(例は10分00秒) また、切断してもカウントは続きます。 14 時計モード 00 00 無効(電源投入直後など) 00 01 NetGenesis自前の時計が有効 00 02 SNTPサーバが有効 15 時間情報 時計モード 00 01 の時 2バイトずつで時分秒 時計モード 00 02 の時 最初の2バイトがSNTP時間情報、残りは00 1900/01/01 00:00:00 からの経過秒数?謎 16 回線の種類 00 01 アナログ:プッシュ回線(トーン) 00 02 アナログ:ダイヤル回線(パルス) 00 04 ISDN:INSネット64回線 00 05 ISDN:専用線 00 06 アナログ:専用線(発信側) 00 07 アナログ:専用線(着信側) 17 接続してから送信した総バイト数 18 接続してから受信した総バイト数 19 DTE速度 00 02 460800 ビット/秒 00 04 230400 00 08 115200 00 10 57600 00 18 38400 00 20 28800 00 30 19200 00 40 14400 00 60 9600 00 C0 4800 01 80 2400 03 00 1200 20 RS232C信号線情報。 bit 7 CD信号のON/OFF (例) 00 00 設定直後など 00 30 未接続 00 B0 接続中とか 21 RASサーバIP接続のとき接続したユーザID。 最大32バイトで、終わりは 00。 接続状態の時のみ有効。 ※全くの未確認です。公式ライブラリの説明書から推測。 22 送信パケット数 23 受信パケット数 24 エラーパケット数 ※このパケット数は全くの未確認です。公式ライブラリの説明書から推測。 ダイヤルアップ時には 00 なので、RASの場合のみと思われる。 ※ xx は不定値のように見えるが。。。。。。
00000 : 00 04 00 00 01 6E 00 02 - 00 00 00 00 00 00 00 00 ................ ~~1~~ ~~2~~ ~~3~~ 00010 : 00 01 .. ~~4~~ 1 シーケンス番号(多分なんでもいい) 2 シリアル1 デフォルト・ダイヤルアウト接続先設定要求コマンド 3 データ長2バイト 4 接続先番号(00 00 〜 00 03)
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 04 00 00 81 6E 00 02 - xx xx xx xx 00 00 00 00 ................ 00010 : 00 00 ........ ~~1~~ 1 00 00 設定完了 00 01 エラー(接続中のため変更不可) 00 02 エラー(0〜3以外の値を指定した) 00 03 エラー(未登録の番号を指定した) 00 04 エラー(ISP・端末型ダイヤルアップ/RASクライアントIP接続でない)
00000 : 00 40 00 00 41 0B 00 0A - 00 00 00 00 00 00 00 00 ................ 00010 : C0 A8 00 01 00 11 00 2E - 00 11 ................ ~~~~1~~~~~~ ~~2~~ ~~3~~ ~~4~~ 1 NetGenesis4のIPアドレス 192.168.0.1 2〜4には時分秒を入れる。例では 17時46分17秒 となっている。
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 40 00 00 81 0B 00 04 - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 ....
00000 : 00 02 00 00 41 04 00 04 - 00 00 00 00 00 00 00 00 ................ 00010 : C0 A8 00 01 .... ~~~~1~~~~~~ 1 NetGenesis4のIPアドレス 192.168.0.1
NetGenesis4からは以下のデータが戻ってくる。
00000 : 00 02 00 00 81 04 00 1A - xx xx xx xx 00 00 00 00 ................ 00010 : C0 A8 00 01 00 02 20 40 - 00 10 38 ## ## ## 00 00 ................ ~~~~~1~~~~~ ~~~~~2~~~~~ ~~~~~~~~3~~~~~~~~ 00020 : ?? ?? ?? ?? ?? ?? ?? ?? - ?? ?? .......... 1 NetGenesis4のIPアドレス 192.168.0.1 2 F/Wバージョン情報 bit 0〜15 マイナーバージョン bit16〜31 メジャーバージョン F/Wバージョン情報(例) 00 01 11 01 F/W V1.1101 00 02 00 20 F/W V2.002 00 02 00 22 F/W V2.0022 00 02 10 40 F/W V2.104 00 02 20 40 F/W V2.204 00 02 21 00 F/W V2.21 00 02 31 30 F/W V2.313 3 NetGenesis4のMACアドレス ? 謎
% cc nwg4con.c -o nwg4con
% cc nwg4con.c -o nwg4discon -DDISCONNECT
TurboLinux2.0J,TurboLinux3.0Jで動作確認を行いました。
これはNetGenesis4検索をやりません。したがってNetGenesis4の時刻設定もされません。
テレホ時間帯無切断設定にしている人は、このままだと危険です。
昼間なのに、NetGenesis4のタイマは深夜になっていたりすると自動切断されなくなります。
常用するならば時刻設定をやるようにプログラムを改造しましょう。
また、接続コマンドを送信するだけで状態確認をしていません。
TAやモデムのランプを見て確認しましょう。
常用するならば状態確認をするようにプログラムを改造しましょう。
CGI版サンプルプログラムのダウンロード Perl5
- (1999.02.06)
- 状態確認の方法を修正
- (1999.02.05)
- gethostbynameはMacPerlなどで問題となるようなので使用しないように修正
時刻設定のデータ生成部を修正
CGI版サンプルプログラム2のダウンロード
- (1999.02.06)
- use Socket; を使うバージョン(こっちの方がスマート)
- (1999.07.31)
- Firmware Version : 2.313 対応
- (1999.03.06)
- Perl for Win32 build316 で動作しなくなっていたので修正
- (1999.02.26)
- 接続先変更処理変更
受信データダンプ機能追加
- (1999.02.21)
- 送信コマンドのデータサイズが一部おかしかったのを修正
- (1999.02.13)
- 接続・切断コマンド送信後に状態確認を行うよう変更
- (1999.02.10)
- Firmware 2.204以降のマルチアカウント機能に対応
このページに関するお問い合わせは、下記アドレスへ。
E-mail: anb@y7.net
Copyright (C) 1998-1999 M.Okamura 7N1ANB