tcpdumpしてIPとポート番号を集計する
tcpdumpのPCAP形式のキャプチャデータから、あるサーバがどのクライアントIPとどんなportで通信しているかを集計するためのシェルスクリプト
ちなみに、tcpdumpでポート番号を数値で表示するときには、”-dd"オプションを使う
$ ls
shelltest.sh test1.txt test2.txt test3.txt
test1.txt、test2.txt、test3.txtはtcpdumpで取得したPCAPデータをリダイレクトしたファイル。
$ cat test1.txt
123.123.123.123.telnet 234.234.234.34555
123.123.123.123.domain 234.234.345.34655
ってな感じ。
最初のIP.PORTがサーバ側、後ろのIP.PORTがクライアント側の、こんなファイルtest1.txt,test2.txt,test3.txt があったとする。
以下のシェルを使うと、サーバに通信しているクライアントのIPアドレスとport番号一覧ができる。
shelltest.sh
#!/bin/sh
#ファイルを1つずつ読み込み
for file in `\find . -name '*.txt'`; do
cat $file |tr "." " " | awk '{if ( $5 ~/^[a-z]+$/) print $1,$2,$3,$4,$5,$6,$7,$8,$9; else if ( $5 ~/^[0-9]+$/) print $6,$7,$8,$9,$10,$1,$2,$3,$4}' | sort | uniq >> ./testZ
done
#ファイルの結果を集計
cat testZ | sort | uniq > testZZ
exit 0
これは、そこそこ使われたな。