tcpdump(ASCII表示:パッチ版)

※ネットワーク内を流れるパケットをモニタするソフトです。
 システム開発などをしていて問題が発生した場合、
 原因の切り分けなどに使用します。

※tcpdump のASCII表示設定
 たとえば、スペース(0x20)は「CA」といった表示がされるのですが、
 「人間が読めるASCII」だけは変換して表示するためのパッチも
 掲載してあります。

【注意】
tcpdumpは、ネットワーク上を流れるデータをみて、
さまざまなテストや開発などに使われる便利なツールです。
本ページでご紹介する、ASCII表示機能の追加は、このような
作業をより便利にするためのものです。当該作業に携わる方に
限ってご利用ください。

ネットワーク上を流れる個人情報の盗聴などの用途には
絶対に使用しないでください。そのような使用は厳禁です。


【ダウンロード】
以下のサイトより、「libpcap.tar.Z」および「tcpdump.tar.Z」を
ダウンロードしてください。(tcpdump-3.4.tar.Zでも可)
ftp://ftp.ee.lbl.gov/
(アメリカ合衆国政府のFTPサイトです!!)


【前準備】
※tcpdumpのコンパイルの前に「libpcap」をインストールする必要があります。
(以下の作業はrootで行ってください)

# cd /usr/src
# gzip -cd libpcap.tar.Z | tar xvf -
# cd libpcap-0.4
# ./configure
# make
※本来なら次に「make install」するのですが、
エラーとなりますので、手で行ってください。
# install -m 444 -o bin -g bin libpcap.a /usr/lib/.
# ranlib /usr/lib/libpcap.a
# install -c -m 444 -o bin -g bin ./pcap.h /usr/include/.
# install -c -m 444 -o bin -g bin ./pcap-namedb.h /usr/include/.
# install -c -m 444 -o bin -g bin ./net/bpf.h /usr/include/net/.


【展開】
(以下の作業はrootで行ってください)
# cd /usr/src
# gzip -cd tcpdump.tar.Z | tar xvf -

【パッチあて】
# cd /usr/src/tcpdump-3.4
# vi interface.h
---------------------------------------------------------------
(下記差分情報をもとに修正します。)
---------------------------------------------------------------
「:wq!」で保存終了します。

# vi tcpdump.c
---------------------------------------------------------------
(下記差分情報をもとに修正します。)
---------------------------------------------------------------
「:wq!」で保存終了します。


---------------------------------------------------------------
<interface.hの差分情報(diff)はこちら

<tcpdump.cの差分情報(diff)はこちら
 (ヘッダファイルの「in_systm.h」のスペルに注意してください)
---------------------------------------------------------------


【コンパイル】
# ./configure

ここで、Makefileを修正します。
# vi Makefile
--------------------------------------
「libPW.a」という記述がある場合に限り、
これを「libpwdb.a」と書き換えてください。
検索は「/libPW」と入力します。

通常は「libpcap」になっていると思います。
この場合は、何もしなくて良いです。
--------------------------------------
:wq! で保存終了します。

# make

【インストール】
※本来なら「make install」するのですが、
関係ないところにコピーされてしまうので、手で行ってください。
# install -c -s -m 755 -o root -g root ./tcpdump /usr/sbin/tcpdump

# make install-man (←これはやってもあまり意味がありませんが)


【ASCII表示の方法】
※新たなオプションとして「-A」が追加されます。これを指定すると
 ASCII表示になります。

【起動例】

# tcpdump -A で画面に表示されます。

# tcpdump -A -w (ファイル名)でファイルに保存されます。
 ただし、バイナリ形式で保存されるので、そのままでは
 見られません。次のようにして見てください。

# tcpdump -A -r (上で指定したファイル名)
 これは画面に表示されていきますので、more/lessするなり
 リダイレクトでファイルに落とすなりしてください。
# tcpdump -A -r (上で指定したファイル名) > (テキストファイル名)
# cat (テキストファイル名) | more

なお、ファイヤーウォールなどで、NIC(LANカード)が複数枚挿してある
時は、「-i」オプションで明示的にNICインターフェイスを指定します。
# tcpdump -A -i eth1

ホストを狙いうちにすることもできます。
# tcpdump -A host (ホスト名またはIPアドレス)
これをファイルにおとすには
# tcpdump -A host (ホスト名またはIPアドレス) -w (ファイル名)

送信元ホストだけを指定するには
# tcpdump -A src host (ホスト名またはIPアドレス)

宛先ホストだけを指定するには
# tcpdump -A dst host (ホスト名またはIPアドレス)


【停止】
Ctrl+Cで停止します。