Kozupon.com    
 
 Wiresharkでパケットキャプチャ!


Etherealには、随分お世話になったけどいつの間にかWiresharkなるハイカラな名前のキャプチャツールが出てるじゃん。ビックリだょ。
オフィシャルサイトは、 ここ だけど、このツールはEtherealの拡張版のようなツールで基本的には改名版Etherealなのよ。だから、あえてここで説明する必要もないけど、Linux版のソースパッケージのインスコが結構面倒なので紹介する。さらに、それだけでは何なので機能拡張(Flow Graph)された部分もここで紹介してみたい。尚、Windows版の方は、同オフィシャルサイトからインストール用EXEファイルをダウンロードすれば簡単にインスコできる。

インストール環境)
マシン:Mebius Note Celeron1.0GHz
OS:Ubuntu Linux6.10


1.インストールの前準備
1)必要なモジュールのインスコ(gtk、flex、bison)

mity@jerry:~$ sudo apt-get update
Password: ***********
mity@jerry:~$ sudo apt-get install libgtk2-*
Password: ***********
mity@jerry:~$ sudo apt-get install flex
Password: ***********
mity@jerry:~$ sudo apt-get install bison
Password: ***********

2)libpcapのインスコ
libpcapのインスコはちょっとコツがいるので注意してインスコして欲しい。

■ まずはソースのゲット
mity@jerry:~$ cd tmp/
mity@jerry:~/tmp$
mity@jerry:~/tmp$ wget http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz

--20:51:07-- http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz
=> `libpcap-0.9.5.tar.gz'
192.168.255.111:3128 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 433,207 (423K) [application/x-tar]

100%[====================================>] 433,207 55.82K/s ETA 00:00

20:51:18 (43.79 KB/s) - `libpcap-0.9.5.tar.gz' を保存しました [433207/433207]

■ 展開作業
mity@jerry:~/tmp$ tar zxvf libpcap-0.9.5.tar.gz
libpcap-0.9.5/./
libpcap-0.9.5/./ChmodBPF/
libpcap-0.9.5/./ChmodBPF/ChmodBPF
libpcap-0.9.5/./ChmodBPF/StartupParameters.plist
libpcap-0.9.5/./.cvsignore
libpcap-0.9.5/./CHANGES
libpcap-0.9.5/./CREDITS
libpcap-0.9.5/./FILES
libpcap-0.9.5/./INSTALL.txt
libpcap-0.9.5/./LICENSE
libpcap-0.9.5/./Makefile.in
libpcap-0.9.5/./README
libpcap-0.9.5/./README.Win32
libpcap-0.9.5/./README.aix
libpcap-0.9.5/./README.dag
libpcap-0.9.5/./README.hpux
libpcap-0.9.5/./README.linux
libpcap-0.9.5/./README.macosx
libpcap-0.9.5/./README.septel
libpcap-0.9.5/./README.tru64
libpcap-0.9.5/./TODO
libpcap-0.9.5/./VERSION
libpcap-0.9.5/./acconfig.h
libpcap-0.9.5/./aclocal.m4
libpcap-0.9.5/./arcnet.h
libpcap-0.9.5/./atmuni31.h
libpcap-0.9.5/./bpf_dump.c
libpcap-0.9.5/./bpf_image.c
libpcap-0.9.5/./config.guess
libpcap-0.9.5/./config.h.in
libpcap-0.9.5/./config.sub
libpcap-0.9.5/./configure
libpcap-0.9.5/./configure.in
libpcap-0.9.5/./etherent.c
libpcap-0.9.5/./ethertype.h
libpcap-0.9.5/./fad-getad.c
libpcap-0.9.5/./fad-gifc.c
libpcap-0.9.5/./fad-glifc.c
libpcap-0.9.5/./fad-null.c
libpcap-0.9.5/./fad-win32.c
libpcap-0.9.5/./gencode.c
libpcap-0.9.5/./gencode.h
libpcap-0.9.5/./grammar.y
libpcap-0.9.5/./inet.c
libpcap-0.9.5/./install-sh
libpcap-0.9.5/./llc.h
libpcap-0.9.5/./mkdep
libpcap-0.9.5/./nametoaddr.c
libpcap-0.9.5/./nlpid.h
libpcap-0.9.5/./optimize.c
libpcap-0.9.5/./pcap-bpf.c
libpcap-0.9.5/./pcap-bpf.h
libpcap-0.9.5/./pcap-dag.c
libpcap-0.9.5/./pcap-dag.h
libpcap-0.9.5/./pcap-dlpi.c
libpcap-0.9.5/./pcap-dos.c
libpcap-0.9.5/./pcap-dos.h
libpcap-0.9.5/./pcap-enet.c
libpcap-0.9.5/./pcap-int.h
libpcap-0.9.5/./pcap-linux.c
libpcap-0.9.5/./pcap-namedb.h
libpcap-0.9.5/./pcap-nit.c
libpcap-0.9.5/./pcap-nit.h
libpcap-0.9.5/./pcap-null.c
libpcap-0.9.5/./pcap-pf.c
libpcap-0.9.5/./pcap-pf.h
libpcap-0.9.5/./pcap-septel.c
libpcap-0.9.5/./pcap-septel.h
libpcap-0.9.5/./pcap-snit.c
libpcap-0.9.5/./pcap-snoop.c
libpcap-0.9.5/./pcap-stdinc.h
libpcap-0.9.5/./pcap-win32.c
libpcap-0.9.5/./pcap.3
libpcap-0.9.5/./pcap.c
libpcap-0.9.5/./pcap.h
libpcap-0.9.5/./pcap1.h
libpcap-0.9.5/./pf.h
libpcap-0.9.5/./ppp.h
libpcap-0.9.5/./savefile.c
libpcap-0.9.5/./scanner.l
libpcap-0.9.5/./sll.h
libpcap-0.9.5/./sunatmpos.h
libpcap-0.9.5/./SUNOS4/
libpcap-0.9.5/./SUNOS4/nit_if.o.sparc
libpcap-0.9.5/./SUNOS4/nit_if.o.sun3
libpcap-0.9.5/./SUNOS4/nit_if.o.sun4c.4.0.3c
libpcap-0.9.5/./Win32/
libpcap-0.9.5/./Win32/Include/
libpcap-0.9.5/./Win32/Include/addrinfo.h
libpcap-0.9.5/./Win32/Include/Gnuc.h
libpcap-0.9.5/./Win32/Include/arpa/
libpcap-0.9.5/./Win32/Include/arpa/nameser.h
libpcap-0.9.5/./Win32/Include/net/
libpcap-0.9.5/./Win32/Include/net/if.h
libpcap-0.9.5/./Win32/Include/net/netdb.h
libpcap-0.9.5/./Win32/Include/net/paths.h
libpcap-0.9.5/./Win32/Include/bittypes.h
libpcap-0.9.5/./Win32/Include/cdecl_ext.h
libpcap-0.9.5/./Win32/Include/inetprivate.h
libpcap-0.9.5/./Win32/Include/ip6_misc.h
libpcap-0.9.5/./Win32/Include/sockstorage.h
libpcap-0.9.5/./Win32/Prj/
libpcap-0.9.5/./Win32/Prj/libpcap.dsp
libpcap-0.9.5/./Win32/Prj/libpcap.dsw
libpcap-0.9.5/./Win32/Src/
libpcap-0.9.5/./Win32/Src/getnetbynm.c
libpcap-0.9.5/./Win32/Src/ffs.c
libpcap-0.9.5/./Win32/Src/gai_strerror.c
libpcap-0.9.5/./Win32/Src/getaddrinfo.c
libpcap-0.9.5/./Win32/Src/getnetent.c
libpcap-0.9.5/./Win32/Src/getopt.c
libpcap-0.9.5/./Win32/Src/getservent.c
libpcap-0.9.5/./Win32/Src/inet_aton.c
libpcap-0.9.5/./Win32/Src/inet_net.c
libpcap-0.9.5/./Win32/Src/inet_pton.c
libpcap-0.9.5/./bpf/
libpcap-0.9.5/./bpf/net/
libpcap-0.9.5/./bpf/net/bpf_filter.c
libpcap-0.9.5/./doc/
libpcap-0.9.5/./doc/pcap.html
libpcap-0.9.5/./doc/pcap.txt
libpcap-0.9.5/./doc/pcap.xml
libpcap-0.9.5/./lbl/
libpcap-0.9.5/./lbl/os-aix4.h
libpcap-0.9.5/./lbl/os-hpux11.h
libpcap-0.9.5/./lbl/os-osf4.h
libpcap-0.9.5/./lbl/os-osf5.h
libpcap-0.9.5/./lbl/os-solaris2.h
libpcap-0.9.5/./lbl/os-sunos4.h
libpcap-0.9.5/./lbl/os-ultrix4.h
libpcap-0.9.5/./missing/
libpcap-0.9.5/./missing/snprintf.c
libpcap-0.9.5/./msdos/
libpcap-0.9.5/./msdos/common.dj
libpcap-0.9.5/./msdos/bin2c.c
libpcap-0.9.5/./msdos/makefile
libpcap-0.9.5/./msdos/makefile.dj
libpcap-0.9.5/./msdos/makefile.wc
libpcap-0.9.5/./msdos/ndis2.c
libpcap-0.9.5/./msdos/ndis2.h
libpcap-0.9.5/./msdos/ndis_0.asm
libpcap-0.9.5/./msdos/pkt_rx0.asm
libpcap-0.9.5/./msdos/pkt_rx1.s
libpcap-0.9.5/./msdos/pktdrvr.c
libpcap-0.9.5/./msdos/pktdrvr.h
libpcap-0.9.5/./msdos/readme.dos
libpcap-0.9.5/./packaging/
libpcap-0.9.5/./packaging/pcap.spec
libpcap-0.9.5/./packaging/pcap.spec.in

■ コンパイル&リンク
mity@jerry:~/tmp$ cd libpcap-0.9.5/
mity@jerry:~/tmp/libpcap-0.9.5$ ./configure

checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking gcc version... 4
checking for inline... inline
checking for __attribute__... yes
checking for u_int8_t using gcc... yes
checking for u_int16_t using gcc... yes
checking for u_int32_t using gcc... yes
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/ioccom.h usability... no
checking sys/ioccom.h presence... no
checking for sys/ioccom.h... no
checking sys/sockio.h usability... no
checking sys/sockio.h presence... no
checking for sys/sockio.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for netinet/if_ether.h... yes
checking for ANSI ioctl definitions... yes
checking for strerror... yes
checking for strlcpy... no
checking for vsnprintf... yes
checking for snprintf... yes
checking for library containing gethostbyname... none required
checking for library containing socket... none required
checking for library containing putmsg... none required
checking for ether_hostton... yes
checking whether ether_hostton is declared... no
checking netinet/ether.h usability... yes
checking netinet/ether.h presence... yes
checking for netinet/ether.h... yes
checking whether ether_hostton is declared... yes
checking if --disable-protochain option is specified... enabled
checking packet capture type... linux
checking for getifaddrs... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking if --enable-ipv6 option is specified... no
checking whether to build optimizer debugging code... no
checking whether to build parser debugging code... no
checking Linux kernel version... 2
checking if if_packet.h has tpacket_stats defined... yes
checking whether we have /proc/net/dev... yes
checking whether we have DAG API headers... no (/usr/local/include)
checking whether we have Septel API... no
checking for flex... flex
checking for flex 2.4 or higher... yes
checking for bison... bison
checking for ranlib... ranlib
checking if sockaddr struct has sa_len member... no
checking if sockaddr_storage struct exists... yes
checking if dl_hp_ppa_info_t struct has dl_module_id_1 member... no
checking if unaligned accesses fail... no
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h

mity@jerry:~/tmp/libpcap-0.9.5$ make shared

mity@jerry:~/tmp/libpcap-0.9.5$ su
Password: ***********
mity@jerry:/home/mity/tmp/libpcap-0.9.5# make install && cp libpcap.so.0.9.5 /usr/local/lib

■ ライブラリディレクトリへシンボルリンクを張る
root@jerry:/home/mity/tmp/libpcap-0.9.5# ln -s /usr/local/lib/libpcap.so.0.9.5 /usr/lib/

mity@jerry:/home/mity/tmp/libpcap-0.9.5# exit
exit

mity@jerry:~/tmp/libpcap-0.9.5$ cd ..


2.Wiresharkのインスコ
1)ソースのゲット

mity@jerry:~/tmp$ wget http://downloads.sourceforge.net/wireshark/wireshark-0.99.5.tar.gz
--20:03:57-- http://downloads.sourceforge.net/wireshark/wireshark-0.99.5.tar.gz
=> `wireshark-0.99.5.tar.gz.1'
192.168.255.111:3128 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 302 Moved Temporarily
場所: http://jaist.dl.sourceforge.net/sourceforge/wireshark/wireshark-0.99.5.tar.gz [続く]
--20:03:57-- http://jaist.dl.sourceforge.net/sourceforge/wireshark/wireshark-0.99.5.tar.gz
=> `wireshark-0.99.5.tar.gz.1'
192.168.255.111:3128 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 13,936,697 (13M) [application/x-gzip]

100%[====================================>] 13,936,697 614.31K/s ETA 00:00

20:04:20 (601.78 KB/s) - `wireshark-0.99.5.tar.gz.1' を保存しました [13936697/13936697]

2)ソースの展開
mity@jerry:~/tmp$ tar zxvf wireshark-0.99.5.tar.gz
mity@jerry:~/tmp$ cd wireshark-0.99.5

3)コンパイル&リンク
mity@jerry:~/tmp/wireshark-0.99.5$ ./configure

省略
The Wireshark package has been configured with the following options.
Build wireshark : yes   ←GUIのwireshark、yesで有ることを確認する
Build tshark : yes     ←CUIのwireshark、yesで有ることを確認する
Build capinfos : yes
Build editcap : yes
Build dumpcap : yes
Build mergecap : yes
Build text2pcap : yes
Build idl2wrs : yes
Build randpkt : yes
Build dftest : yes

Install setuid : no
Use plugins : yes
Build lua plugin : no
Build rtp_player : no
Use GTK+ v2 library : yes
Use threads : no
Build profile binaries : no
Use pcap library : yes
Use zlib library : yes
Use pcre library : no
Use kerberos library : no
Use GNU ADNS library : no
Use GNU crypto library : no
Use SSL crypto library : no
Use IPv6 name resolution : yes
Use Net-SNMP library : no
Use gnutls library : no

mity@jerry:~/tmp/wireshark-0.99.5$ make

mity@jerry:~/tmp/wireshark-0.99.5$ su
Password: ***********

root@jerry:/home/mity/tmp/wireshark-0.99.5# make install

■ トラブルシューティング1
root@jerry:/usr/local/src/wireshark-0.99.5# wireshark
wireshark: error while loading shared libraries: libwiretap.so.0: cannot open shared object file: No such file or directory
上記のエラーが出た場合は、以下のようにシンボルリンクを張る。

root@jerry:/usr/local/src/wireshark-0.99.5# ln -s /usr/local/lib/libwiretap.so.0 /usr/lib/

■ トラブルシューティング2
root@jerry:/usr/local/src/wireshark-0.99.5# wireshark
wireshark: error while loading shared libraries: libwireshark.so.0: cannot open shared object file: No such file or directory
上記のエラーが出た場合には、以下のようにシンボルリンクを張る。

root@jerry:/usr/local/src/wireshark-0.99.5# ln -s /usr/local/lib/libwireshark.so.0 /usr/lib/


3.Wiresharkの起動
起動は、インターフェースを監視しなければならないのでgksuコマンドで root へスイッチして起動する。

mity@jerry:~$ gksu -u root /usr/local/bin/wireshark


4.簡単な使いかたの説明

起動時に、図1のようなrootへのlogin画面が出るのでrootのパスワードを入力する。


  図1

loginが成功して、少し待つと以下、図2のようなイントロ画面が出る。


  図2

図3は、立ち上がって初っぱなの起動画面。


  図3

とにかく、細かいことを言うよりも、超簡単な使い方は、一番左のアイコンをクリックする。すると、図4のような画面が出るのでeth0のスタートボタンをクリックする。


  図4

そうすると、図5のようにキャプチャが始まる。


  図5

ちなみに、ちょっと見にくいけど図6の赤いパケットはDNSへの問い合わせのクエリーパケットのようだ。


  図6

さらに、メニューの「statistics」「Flow Graph」を選択すると、図7のように、俺がこのソフトでもっとも特筆するシーケンス・ラダー図が自動生成される。一連の送受信のプロトコルの遷移状態がはっきりと見た目で解るのは非常に良いと思う。


  図7

以上

 


 
 
 



Copyright 2007 Kozupon.com.