1999/8/29
バージョン TCPdump 3.4
OS Slackware 3.6 (Linux 2.0.35)
ホームページ http://ita.ee.lbl.gov/
ダウンロード ftp://ftp.ee.lbl.gov/

ネットワーク上に流れるデータのパケットをリアルタイムにモニタリングするツールです。このソフトは、不正パケットを発見するのに強力に役立ちますが、反面、正当なユーザーのアクセスも盗聴できてしまう、危険なソフトにもなり得ます。取り扱いは慎重にしてください。

libpcapのインストール

最初にlibpcap(ftp://ftp.ee.lbl.gov/libpcap.tar.Z)をインストールします。

$ tar xvfz libpcap.tar.Z

$ cd libpcap-0.4
$ ./configure

$ make

$ su

# make install

# exit

TCPdumpのインストール

tcpdumpをインストールします。

$ tar xvfz tcpdump.tar.Z

$ cd tcpdump-3.4
$ ./configure

$ make

$ su

# make install

使い方

TCPdumpはroot権限でしか、実行できません。

eth0に流れる全パケットの内容(最大1000バイト)を表示します。

# tcpdump -x -s 1000 -i eth0

eth0のtelnetポートに流れるパケットの内容を表示します。

# tcpdump -x -s 1000 -i eth0 port telnet

eth0のhttpポートに流れる送信パケットの内容を表示します。

# tcpdump -x -s 1000 -i eth0 src port http

eth0のhttpポートに流れる受信パケットの内容を表示します。

# tcpdump -x -s 1000 -i eth0 dst port http

しかし、これだとパケットの内容は16進数ダンプで表示され、わかりにくいので、簡単なフィルタプログラムをかますことにより、簡単に読める文字列で表示できます。(freebsd-users-jpの記事を参考にしました)

#!/usr/bin/perl

while(<>){
    if(m/^[ \t]/){
        $store .= $_
    } else {
        s/^[^ ]* //;
        s/:[^:]*$//;
        print "$_\n";
        $_ = $store;
        s/\s//g;
        s/^.{120}//;
        s/[0-9A-Fa-f][0-9A-Fa-f]/pack("C",hex $&)/eg;
        s/[\x00-\x08\x0a-\x1f\x7f-\xff]/ /g;
        print "$_\n";
        $store = "";
    }
}

これで、以下のようにします。フィルタを通すときは-lオプションを指定してください。

# tcpdump -x -s 1000 -i eth0 -l | filter.pl