ここでは独自プロトコルのデコーダをASN1ファイルを元に自分でWiresharkを追加する方法を簡単に解説します。
Step1.
ソースコードをWireshak本家からダウンロードここでは例としてwireshark-1.0.5を使います。
Step2.
コンパイルに必要なツールの準備以下のツールが必要になりますのでそれぞれのサイトからダウンロードしてインストールして下さい。
ここでは例としてMicrosoft Visual C++ 2005 Express Editionを使います。
Step3.
Step1でダウンロードしたソースをcygiwn上等で展開して~/wireshark-1.0.5/config.nmakeをStep2で準備した開発環境に合わせて修正します。 たとえば以下の様に使用するコンパイラの部分のコメントをはずします。# "Microsoft Visual C++ 2005 Express Edition" # needs additional Platform SDK installation # Visual C++ 8.0, _MSC_VER 1400, msvcr80.dll MSVC_VARIANT=MSVC2005EEまたVERSION_EXTRAの部分に適当なラベルを入れてバージョンに自分の好きな文字を追加できます。
Step4.
開発環境の整備DOS窓を開き以下のコマンドを打ちます。
Call "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd" /2000
Call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
その後以下のコマンドでさらに開発に必要なツールを整えます。自分のPCに無いものはwgetで自動的にネットワークより取得してきます。
nmake -f Makefile.nmake verify_tools
nmake -f Makefile.nmake setup
Step5.
まずはソースからビルドできるかどうか試してみましょう。nmake -f Makefile.nmake all
ビルドが成功するとGTK2なら
~/wireshark-1.0.5\wireshark-gtk2\wireshark.exe
が出来上がります。
ビルド中にエラーポップアップが一杯でる場合はVC++2005EEのnmake.exeをPlatformSDK配下にコピーする必要が あります
C:\Program Files\Microsoft Visual Studio 8\VC\bin\nmake.exeを C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin 以下にコピーしてみてください。
Step6.
ソースからビルドしたWiresharkが動く事を確認したら、実際に独自プロトコルのデコーダ(dissector)を作成します。ここではASN1から自動生成する方法を取り上げます。
~/wireshark-1.0.5/asn1
配下に自分のプロトコル用のディレクトリを作成し以下のファイルを独自デコーダの作成に参考となりそうな、 似たような構造のプロトコルからコピーします。
xxx.asn
xxx.cnf
Makefile.am Makefile.common
Makefile.in
Makefile.nmake
packet-xxx-template.c
packet-xxx-template.h
それぞれのファイルを必要に応じて修正後
nmake -f Makefile.nmake generate_dissector
を実行するとpacket-xxx.c/packet-xxx.hが自動生成されます。
ASN1の内容やtemplateファイルの内容にもよりますが、packet-xxx.c/packet-xxx.hをさらに編集する必要がある 場合もあります。
Step7.
Step6で自動生成されたpacket-xxx.c/packet-xxx.hを必要に応じて修正し、~/wireshark-1.0.5/epan/dissectorsに置きます。
Step8.
~/wireshark-1.0.5/epan/dissectors/Makefile.in に独自プロトコルの*.cファイルと*.hファイルを追加am__objects_1 = packet-xxx.lo
ASN_DISSECTOR_SRC = packet-xxx.c
DISSECTOR_INCLUDES = packet-xxx.h
distclean-compile:のしたに
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet-xxx.Plo@am__quote@
~/wireshark-1.0.5/epan/dissectors/Makefile.common に独自プロトコルの*.cファイルと*.hファイルを追加
ASN_DISSECTOR_SRC
DISSECTOR_INCLUDES
Step9.
~/wireshark-1.0.5/にてmakeしてバイナリを生成
nmake -f Makefile.nmake all
ビルドが成功するとStep5と同じディレクトリに独自デコーダを含むWiresharkが出来上がります。