TCP/IP のデータ列を再現/計算する ActiveX DLL と GUI プログラムです






内容
WinPcap を VisualBASIC/スクリプトから使うための COM コンポーネント を便利に使うためには TCP/IP の各プロトコルに対応したデータ列を簡単に計算/再現させる必要があり、そのための COM/ActiveX DLL です。

いろいろリンク


メソッドに渡す引数
16進データを与えてください。
例えば 2byte のプロパティのところに「1」を与えたければ「0001」を与えてください。


コンポーネント一覧と、メソッド/プロパティ一覧
共通のメソッド


General
IP チェックサムだけのモジュール CreateObject へ渡す文字列は
sTCPIPbin.General




Ethernet
CreateObject へ渡す文字列は
sTCPIPbin.Ethernet


メソッド一覧

IEEE802.2/IEEE802.3
CreateObject へ渡す文字列は
sTCPIPbin.IEEE802


メソッド一覧

IEEE802.11
IEEE802.11 フレームです。
CreateObject へ渡す文字列は
sTCPIPbin.IEEE802_11


メソッド一覧

arp
Ethernet フレームのデータ部のところのみです。
CreateObject へ渡す文字列は
sTCPIPbin.arp


メソッド一覧

IP
IPオプションのない IP データグラムです。
IPオプションは、自分で計算してください。
CreateObject へ渡す文字列は
sTCPIPbin.IP


メソッド一覧

IP Option 〜TimeStamp & SourceRoute〜
IP レコード・ルート・オプションもこれを使えますね。
CreateObject へ渡す文字列は
sTCPIPbin.IPTimeStamp_SourceRouteOption


メソッド一覧

ICMP Base
ICMP のベースです。
あまり使う機会はないかな CreateObject へ渡す文字列は
sTCPIPbin.ICMPbase


メソッド一覧

ICMP Base2
ICMP のベース2です。
あまり使う機会はないかな CreateObject へ渡す文字列は
sTCPIPbin.ICMPbase2


メソッド一覧

ICMP アドレス・マスク
ICMP のアドレス・マスクです。
CreateObject へ渡す文字列は
sTCPIPbin.ICMPAddressMask


メソッド一覧

ICMP タイムスタンプ
ICMP のタイムスタンプです。
CreateObject へ渡す文字列は
sTCPIPbin.ICMPTimeStamp


メソッド一覧

ICMP ポート到達不可エラー/時間超過
ICMPBase2 オブジェクトで、 を使えばいい。

ICMP Ping
ICMPBase2 オブジェクトで、

を使えばいい。
ICMP リダイレクト
ICMP のリダイレクトです。
CreateObject へ渡す文字列は
sTCPIPbin.ICMPRedirect


メソッド一覧

ICMP ルータ探索
ICMP のルータ関連です
CreateObject へ渡す文字列は
sTCPIPbin.ICMPRuter


メソッド一覧

にすれば、ルータ請願メッセージになるよね。

IGMP
IGMP です
CreateObject へ渡す文字列は
sTCPIPbin.IGMP


メソッド一覧

TCP/UDP Base
TCP/UDP のベースとなる部分です。
CreateData() / GetPacket() で戻る 16進データ列には、チェックサム計算用の 12byte の擬似ヘッダが先頭に付加されています。
TCP クラス、UDP クラスも同様
ret = Mid$(オブジェクト.CreateData(),25)
ってな感じで先頭 24文字をカットする

CreateObject へ渡す文字列は
sTCPIPbin.TCP_UDP


メソッド一覧

UDP
UDP です。
CreateObject へ渡す文字列は
sTCPIPbin.UDP


メソッド一覧

TCP
TCP です。
CreateObject へ渡す文字列は
sTCPIPbin.TCP


メソッド一覧






データ列生成のコツ
こんな感じでコーディングさせようと考えて作りました。

例:) ARP パケットの作り方
  1. ARP クラスを作って、ARP パケットのデータ列を作成
  2. Ethernet クラスを作る
  3. Ethernet クラスで Ethernet パケットのデータタイプを arp パケットに変更する
  4. Ethernet クラスのデータ部に先ほど作った arp パケットのデータ列を埋め込む
  5. Ethernet クラスから Ethernet パケットのデータ列を作成
  6. 最後のデータ列を WinPCap の COM ラッパーに与えてネットワークに流す


TCP パケットであれば、
  1. TCP クラスを作って、TCP パケットのデータ列を作成
  2. SetCRC("0000") 関数でチェックサムを初期化
  3. execIPCheckSum() 関数で チェック・サム関数を計算
  4. CreateData() で一旦データを{内部的に}作成
  5. GetPacket() 関数で、チェックサムが計算されたデータ列を取得
  6. 先ほどのデータ列の先頭には、チェックサム計算用の擬似ヘッダが付いているので、先頭24文字を捨てて、残りの部分を IP クラスのデータ列に埋め込んで、IP パケットのデータ列を作成
  7. 先ほどのデータ列を Ethernet クラスのデータ列に埋め込んで、Ethernet パケットのデータ列を作成
  8. WinPCap の COM ラッパーに与えてネットワークに流す


って感じです。

同梱されているサンプルの説明はこちら


動作環境



使用方法
  1. まず、VisualBASIC6.0 のランタイムを Vector などからダウンロードしてインストールします。
    (ランタイムが既にインストールされていれば必要ありません)
  2. URL エンコード/デコード,Hex エンコード/デコード,Quoted-printable エンコード/デコードする COM コンポーネントをインストールしてください。
  3. ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)
  4. 解凍した出来たディレクトリの、"DLL" 以下のファイルは、COM(ActiveX DLL)です。
  5. sTCPIPbin.dll をインストールするディレクトリへコピーします。
  6. コマンドプロンプト で、sTCPIPbin.dll をコピーしたディレクトリで、"RegSvr32.exe sTCPIPbin.dll" を実行し、レジストリに登録します。
    (RegSvr32.bat を DLL と同一ディレクトリへコピーして、実行しても同様のことが可能です)
  7. 以上で、COM コンポーネントとしての、sTCPIPbin.dll は登録が完了です。
    COM アクセスが可能なものなら、sTCPIPbin.dll を利用する事が可能です。



免責など
著作権は保持します。(とりあえず)
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において改変する事については、自由おこなって頂いて結構です。
「参考になったよ」メールを投げてくれると嬉しいです。(*^_^*)


Version1.1.0.2DownLoad(sTCPIPbin.lzh as 109,355byte) (sTCPIPbin.lzh.base64)



これから....



mail to active@window.goukaku.com