ぬけラボ

φ(..)メモメモ

ターミナルでパケットキャプチャ

Linux(CentOS)のターミナルもしくはWindowsのコマンドプロンプトでインターネットのパケットをキャプチャしようと思ったときに、
GUI環境だったらWiresharkが有名ですが、ターミナル(CLI)環境だったらどうするのか調べてみました。

tshark

WiresharkにはCLI版の「tshark」と言う物があって
Wiresharkをインストールすると付属されているみたいです。

Linuxでは下記のコマンドでインストールできます。

#yum -y install wireshark

Windowsでは公式サイトからダウンロードしてください。


Linuxでは下記のコマンドで使用するインタフェースを確認します。

#tshark -D
1. eth0
2. any
3. lo

Windowsでは

>cd C:\Program Files\Wireshark
>tshark -D

下記のコマンドでeth0のキャプチャが実行できます。

#tshark -i 1

192.168.1.1宛てのhttp通信だけをフィルタリング

#tshark -i 1 -l host 192.168.1.1 and port http

または、Wiresharkのfilter構文を使って上記と同様の事をするには

#tshark -i 1 -l host 192.168.1.1 -R "tcp.port == 80"

送信元192.168.0.1から宛先192.168.1.1へのhttp通信をキャプチャ

#tshark -i 1 -l host 192.168.1.1 -R "tcp.port == 80 && ip.src == 192.168.0.1"

sshでサーバーにアクセスしてtsharkを動かすと、ssh通信のキャプチャばかりが表示されるので
ssh通信以外のtcpパケットだけをキャプチャ

#tshark -i 1 -R "tcp.srcport != 22 && tcp.dstport != 22"

Wiresharkのfilter構文については以下のサイトが参考になります。
http://www.infraexpert.com/info/wireshark5.html

詳細なオプションについては

#man tshark

もしくは、こちらの公式ページが参考になります。
http://www.wireshark.org/docs/man-pages/tshark.html