code:Haemophilus influenzae |
ここに書かれていることは無保証です。同じことを行って問題が発生しても、
龍義は責任をとりません。 |
2006年10月12日戻る |
cygwin で ssldump をコンパイルするぞ cygwin のインストール cygwin のインストールについては、方々で解説されているので、省略。 気をつけることは、 gcc などの開発系のものもインストールすることと、 ssl の解読を行うので openssl-devel を入れておく。 参考: cygwin http://www.cygwin.com/ winpcap の準備 ssldump は libpcap が必要である。が、 Windows では winpcap となる ので、 winpcap の開発パックのダウンロードを行う。最新版の WpdPack_3_1.zip を ダウンロードして、解凍を行う。 cd src/winpcap wget http://www.winpcap.org/install/bin/WpdPack_3_1.zip unzip WpdPack_3_1.zip ライブラリの名前が libwpcap.a となっているので、 libpcap.a に変更する。 これは ssldump の configure と Makefile を直しても良いのだが、面倒なので、 名前を変えてしまう。 cd WpdPack/Lib cp libwpcap.a libpcap.a winpcap 周りは終了。 参考: winpcap の開発パック http://www.winpcap.org/devel.htm ssldump のダウンロードと解凍 ssldump をダウンロードして、解凍する。 cd src/ssldump wget http://www.rtfm.com/ssldump/ssldump-0.9b3.tar.gz tar xvfz ssldump-0.9b3.tar.gz cd ssldump-0.9b3 configure はまだ行わない。 参考: ssldump http://www.rtfm.com/ssldump/ include ファイルのコピー cygwin で持っていないヘッダがあるので、 include ファイルの コピーを行う。私はコピー元として Linux 2.6 を使ったが、 Linux 2.4 やその他の OS から持ってきた場合は、他のファイルが必要になるかもしれない。 mkdir include mkdir include/net mkdir include/netinet mkdir include/linux scp toyota@kashyyyk:/usr/include/netinet/if_ether.h ./include/netinet/ scp toyota@kashyyyk:/usr/include/linux/if_ether.h ./include/linux/ scp toyota@kashyyyk:/usr/include/net/ethernet.h ./include/net/ scp toyota@kashyyyk:/usr/include/netinet/tcp_seq.h ./include/netinet/ Linux 環境を持っていない人は、 kernel をダウンロードしたりして、 コピーを行う。 参考: The Linux Kernel Archives http://www.kernel.org/ ファイルの修正 修正するファイルは3つ。以下に diff の結果をつける。 diff -cr ssldump-0.9b3/base/pcap-snoop.c ssldump-0.9b3r/base/pcap-snoop.c *** ssldump-0.9b3/base/pcap-snoop.c Tue Sep 10 06:02:58 2002 --- ssldump-0.9b3r/base/pcap-snoop.c Thu Oct 12 11:43:18 2006 *************** *** 49,55 **** #include <pcap.h> #include <unistd.h> - #include <net/bpf.h> #ifndef _WIN32 #include <sys/param.h> #endif --- 49,54 ---- *************** *** 65,70 **** --- 64,70 ---- #include <net/if.h> #include <netinet/if_ether.h> + #include <net/ethernet.h> #include "network.h" #include <r_common.h> #include <r_time.h> diff -cr ssldump-0.9b3/base/tcppack.c ssldump-0.9b3r/base/tcppack.c *** ssldump-0.9b3/base/tcppack.c Tue Sep 10 06:02:58 2002 --- ssldump-0.9b3r/base/tcppack.c Wed Oct 11 19:04:53 2006 *************** *** 50,60 **** #ifndef _WIN32 # include <sys/socket.h> # include <arpa/inet.h> - # ifndef LINUX - # include <netinet/tcp_seq.h> - # else # define SEQ_LT(x,y) ((int)((x)-(y))<0) - # endif #else # include <winsock2.h> # define SEQ_LT(x,y) ((int)((x)-(y))<0) --- 50,56 ---- diff -cr ssldump-0.9b3/ssl/ssldecode.c ssldump-0.9b3r/ssl/ssldecode.c *** ssldump-0.9b3/ssl/ssldecode.c Sat Aug 17 10:33:17 2002 --- ssldump-0.9b3r/ssl/ssldecode.c Thu Oct 12 11:37:23 2006 *************** *** 49,54 **** --- 49,55 ---- #include "ssl.enums.h" #ifdef OPENSSL #include <openssl/ssl.h> + #include <openssl/md5.h> #include <openssl/hmac.h> #include <openssl/evp.h> #include <openssl/x509v3.h> *************** *** 131,136 **** --- 132,138 ---- ssl_decode_ctx *d=0; int r,_status; + SSL_library_init(); SSLeay_add_all_algorithms(); if(!(d=(ssl_decode_ctx *)malloc(sizeof(ssl_decode_ctx)))) ABORT(R_NO_MEMORY);最低限の変更であるので、必要に応じて、別途 patch 等を適用する。 参考: 2006年8月3日の tech diary http://www.tatsuyoshi.net/toyota/tech/20060803/index.html make する configure と make を行う。まずは、 configure から。オプションで、 winpcap のライブラリとヘッダを指定する。 ./configure --with-pcap-inc=‾/src/wpcap/WpdPack/Include --with-pc-lib=‾/src/wpcap/WpdPack/Lib できた Makefile を修正する。Makefile の INCLUDES に -I./include を 追加する。これで make の実行。 これで、実行ファイルができるが、エラーが出た場合は、適宜変更する。 実行 上記でできた ssldump.exe を実行すれば、動作する。しかし、2つの 問題がある。 1.デバイス名の表示がおかしい 2.デバイスの指定がむずかしい の2つである。最初のデバイス名の表示に関しては、 UNICODE 中に ¥0 を含むために、デバイス名の表示が ¥ だけになってしまう ことがあるのである。これは、気にしなければ問題ない。 2つ目の問題に関しては、少々厄介で、デバイスが複数あるときに、 デバイス名がわからないのである。私は、この問題に関しては ethereal を使うことで解決している。ethereal を使用して、 デバイス名を見て、指定を行っている。デバイス名は、 ./ssldump.exe -i "¥Device¥NPF_{00000000-0000-0000-0000-000000000000}" のような感じになる。もちろん、 0 の部分は16進数の数字が入っている。 参考: ethereal http://www.ethereal.com/ |
by Tatsuyoshi since 2003 |