はじめに
ITインフラエンジニアなら毎日やってるパケットキャプチャ。
そのパケットキャプチャの代表的な方法を一覧で。
単なる私の備忘録です。
というか、いつも忘れるのが一番下のHTTPの部分なので、単にそれをメモっておきたいってだけです。
こんなのもあるよ、こっちのほうが良いよ、というのがありましたら、是非教えて頂けたらとても嬉しいです。
Windows
- Wireshark
- Network Miner
- Microsoft Message Analyzer
- netsh trace コマンド
ex)
C:\WINDOWS\system32>netsh trace start capture=yes
トレース構成:
-------------------------------------------------------------------
ステータス: 実行中
トレース ファイル: C:\Users\hoge\AppData\Local\Temp\NetTraces\NetTrace.etl
追加: オフ
循環: オン
最大サイズ: 250 MB
レポート: オフ
C:\WINDOWS\system32>netsh trace stop
トレースを関連付けています... 完了
トレースの結合中... 完了
データ収集を生成しています ... 完了
トレース ファイルと追加のトラブルシューティング情報は、"C:\Users\hoge\AppData\Local\Temp\NetTraces\NetTrace.cab" としてコンパイルされました。
ファイルの場所 = C:\Users\gzock\AppData\Local\Temp\NetTraces\NetTrace.etl
トレース セッションは正常に停止しました。
※パケットキャプチャする物理IFやキャプチャフィルタなども設定可能(詳しくはnetsh trace /?)
※出力されたファイルはMicrosoft Message Analyzerで開いて中身を確認
※Microsoft Message Analyzer経由で.pcapに変換可能
※プロミスキャスモードではない
Linux
- tcpdump
ex) tcpdump -i eth0 dst port 80
- ngrep
ex) ngrep -d eth0 -W byline -q port 80
その他
-
WinSockを使ったパケットキャプチャツール
※「簡易 パケットキャプチャ」 とかググれば結構見つかる
※netsh traceもそうだが、プロミスキャスモードではキャプチャ出来ない -
libpcapを使ったパケットキャプチャツール
おまけ (HTTP GET/POST)
- Wireshark
GET => http.request.method == "GET"
POST => http.request.method == "POST"
- tcpdump
GET => tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
POST => tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
- ngprep
GET => ngrep 'GET /url'
POST => ngrep 'POST /url'
参考
各々非常に参考にさせて頂きました。ありがとうございます。