上位5つの送信元IPアドレスを探す(送信されたパケット数に基づいて)

上位5つの送信元IPアドレスを探す(送信されたパケット数に基づいて)

私は与えられたpcapファイルに基づいて特定の質問に答えるべき課題を実行しています。問題の1つは、送信されたパケット数に基づいて上位5つの送信元IPアドレスを見つけることです。

私は次のコマンドを思い出しました。

$ tshark -r assign1.pcap | sort -n -7 | tail -n 5 | awk '{print $3}'

どこ

  • tshark -rpcapファイルを読む
  • assign.pcapパケットキャプチャファイルです
  • sort -n -7列7に基づいてファイルをソートします(この列には各IPアドレスのパケット長が含まれています)。
  • tail -n 5最大のパケット長を持つ最後の5つのレコードを印刷します。
  • awk '{print $3}3番目の列のみが印刷されます。

uniqこれで、独自の上位5つのソースIPアドレスが必要になるため、これは私の問題です。だから私はスクリプトの最後でパイプコマンドを試してみましたが、役に立ちませんでした。私もsort -u -t, -k3,3これを使ってみました。協会しかし、これはユニークなIPアドレスも印刷しません!

私のpcapファイルの列ヘッダーは次のとおりです。

   ここに画像の説明を入力してください。

答え1

tshark出力物を再構成して活用すればはるかに-T fields簡単になりそうです。私はあなたが望むことを次のように達成できました。

$ tshark -r blah.pcap -T fields -e frame.len -e ip.src | sort -k 1n | tail -5
92  10.0.2.2
92  10.0.2.2
92  10.0.2.2
100 10.0.2.15
156 10.0.2.15

シャークフィールド

このコマンドを使用して、すべてのフィールドのリストを取得できます。

$ tshark -G field

しかし、読書が少し難しかったと思います。出力の列を知りたい場合は、-G fieldこちらをご覧ください。tshark - ネットワークトラフィックダンプと分析:

 * Header Fields
 * -------------
 * Field 1 = 'F'
 * Field 2 = descriptive field name
 * Field 3 = field abbreviation
 * Field 4 = type (textual representation of the ftenum type)
 * Field 5 = parent protocol abbreviation
 * Field 6 = base for display (for integer types); "parent bitfield width" for FT_BOOLEAN
 * Field 7 = bitmask: format: hex: 0x....
 * Field 8 = blurb describing field

十分に勇敢な場合は、次のようにgrep出力をフィルタリングできます。

$ tshark -G fields | grep -P '\s+(ip.src|frame.len)\s+'
F   Frame length on the wire    frame.len   FT_UINT32   frame   BASE_DEC    0x0
F   Source  ip.src  FT_IPv4 ip      0x0

引用する

答え2

だからプロンプトを受け取った後これ答え、私は次のスクリプトを思いついた。

$ tshark -r assign1.pcap | sort -n -r -k7 | awk '!seen[$3]++' | awk '{print $3}' | head -n 5 >> result.txt

次の行の各コマンドを解釈します。

  • tshark -r assign1.pcappcapファイルを読む
  • sort -n -r -k7(-r) (-k7) 列 7 の逆順に数字で (-n) ファイルをソートします。 [この列には各IPアドレスのパケット長が含まれています。]
  • awk '!seen[$3]++'以前に見たことのない送信元IPアドレス(3列)を印刷するため、この方法では一意のIPのみが印刷されます。
  • awk '{print $3}'3番目の列(ソースIPアドレス)のみを印刷します。
  • head -n 5 >> result.txt最初の5つが必要なのでコマンドを実行し、最後に>> result.txt最終結果をテキストファイルに追加します。

関連情報