ネットワークキャプチャスクリプトを開発しており、HTML本文またはURLに.txtファイルで定義された文字列が含まれている場合にのみトラフィックをダンプしたいと思います。
これは私のtsharkコマンドで、ダンプsrc ip dest url
(HTTPホスト)と魅力のように動作します。
tshark -i eth1 'port 80' -R 'http.request' -T fields \
-e frame.number -e frame.time -e ip.src -e http.host \
-e http.request.uri -E header=y -E separator=, \
-E quote=d -E occurrence=f
今私は詰まっています。ユーザーがhidemyassを閲覧したり、HTML本文にポルノなどのキーワードが含まれている場合にのみこのダンプをトリガーするにはどうすればよいですか?
答え1
ngrepを使用できます。
pcap フィルタとパケットの正規表現一致をサポートします。例:
ngrep -tqW byline 'somethingbad|banana' port 80
ポート80を介して、要求または応答の本文で「somethingbad」または「banana」を含むパケットを見つけます。
指示:
- キーワードが複数のパケットに分散している場合、一致しません。
- キーワードに一致するパケットのみがキャプチャされます。したがって、トランザクションに関連する複数のパケットにわたって要求/応答本文全体を拡張したい場合は、より複雑になります。
答え2
短い答え:できません。
長い答え:Wiresharkはレイヤ1-6(そして好ましくはレイヤ1-3)で動作します。 http-content-informationはレイヤ7にあります。
したがって、ここでさらに詳しく知りたい場合は、次のようにすることができます。
tpcdump
900バイト(通常の初期http要求長)未満のtcp / httpトラフィックを継続的に監視します。 「興味深い」URLを見つけたら、関連する接続の完全なダンプをトリガーしてください。
継続的な完全ダンプを使用してこれを実行することもできますが、この場合、スニファーサーバーでパフォーマンスの問題が発生する可能性が高くなります。
それにもかかわらず、tcpdump出力をフィルタリング/トリガするには2番目のプロセスが必要です。
wireshark
別のアプローチは、-guiスクリプトを作成するか、それを使用して問題のあるパケットをキャプチャすることです。