GUIベースのWiresharkが提供する機能をコマンドラインインターフェースで実現するツールがTSharkです。対話型のグラフィカル環境以外のすべての機能を網羅しており、ターミナル上で強力なパケット分析が可能です。
Ubuntuなどのディストリビューションでは以下のコマンドでインストールできます:
sudo apt-get install tshark
インストール後、ターミナルで単純にtsharkと入力すると、デフォルトのネットワークインタフェースからリアルタイムでパケットキャプチャが始まります。各パケット情報が逐次表示され、終了はCtrl+Cで行います。
ネットワーク通信の記録と保存
特定のパケット数をファイルに保存するには以下のように実行します:
tshark -w ~/Documents/capture.pcap -c 10
この例では、最初の10個のパケットをcapture.pcapというファイルに書き出します。使用されるネットワークインタフェースはシステムのデフォルト設定に従いますが、tshark -Dで確認可能です。
保存データからの情報抽出
既存のキャプチャファイルから必要な情報を取得する場合の例です:
tshark -r session.dump -T fields -e frame.number -e frame.time_relative -e ip.src -e ip.dst -e frame.protocols -e frame.len -E header=y -E quote=n -E occurrence=f
上記コマンドでは、ヘッダー行を含めながら各フィールドを出力します。引用符なしで、複数値を持つフィールドについては最初の値のみを使用します。
出力例:
frame.number frame.time_relative ip.src frame.protocols frame.len
1 0.000000000 192.168.0.106 eth:ethertype:ip:tcp 74
2 4.600294664 192.168.0.1 eth:ethertype:ip:udp:data 147
3 4.600846088 192.168.0.1 eth:ethertype:ip:udp:ssdp 303
4 4.601003537 192.168.0.1 eth:ethertype:ip:udp:ssdp 312
5 4.601231011 192.168.0.1 eth:ethertype:ip:udp:ssdp 375
6 4.601380060 192.168.0.1 eth:ethertype:ip:udp:ssdp 312
7 4.601607844 192.168.0.1 eth:ethertype:ip:udp:ssdp 351
8 4.601773182 192.168.0.1 eth:ethertype:ip:udp:ssdp 312
9 4.601954529 192.168.0.1 eth:ethertype:ip:udp:ssdp 371
10 4.602168547 192.168.0.1 eth:ethertype:ip:udp:ssdp 367
IPアドレスの検証スクリプト
抽出した送信元IPアドレスの妥当性を確認するPythonスクリプトを作成します。ファイル名をvalidateAddr.pyとします:
import socket
import sys
import re
def validate_address(addr):
try:
socket.inet_aton(addr)
return True
except socket.error:
return False
count_total = 0
count_valid = 0
count_invalid = 0
for record in sys.stdin:
count_total += 1
record = record.strip()
if validate_address(record):
count_valid += 1
else:
count_invalid += 1
print("総チェック件数:", count_total)
print("正常IP数:", count_valid)
print("異常IP数:", count_invalid)
実行方法:
tshark -r ~/trafficLog.pcap -T fields -e ip.src | python validateAddr.py
実行結果例:
総チェック件数: 10
正常IP数: 8
異常IP数: 2