Wireshark達人への道 第十二歩 キャプチャファイルからポート番号ごとにパケット数をカウントしたい
本連載は、筆者がWiresharkの達人となるまでを追うドキュメンタリー作品である。
今回の記事では、Windows上で取得したキャプチャファイルを入力として、宛先ポート番号ごとにどれくらいのパケットが入力ファイルに存在しているかを知りたいとふと思ったので調べてみました。この知識の使いどころとしては、ある特定期間における宛先ポートごとの統計情報を作成するといったケースで活躍してくれるのではないだろうか。例えば、13:00~13:30がトラフィック利用のピークである環境における、統計情報の作成といった具合である。
stack overflowに同じようなことを考えた人がいました。
wireshark count packets by port
引用: https://stackoverflow.com/questions/13592513/wireshark-count-packets-by-port
以下が回答者のluaスクリプト(ports.lua)です。
local tap
local ports = {}
local function packet(pinfo, tvb, userdata)
-- store number of packets per each port
local port = pinfo.dst_port
ports[port] = (ports[port] or 0) + 1
end
local function draw(userdata)
local maxi,maxv = 0,0
-- print all gathered statictics and find max
for i,v in pairs(ports) do
print(i .. ":", v)
if maxv < v then
maxi,maxv = i,v
end
end
print ("Max:", maxi, maxv)
end
local function reset(userdata)
ports = {}
end
local function show_ports()
tap = Listener.new()
tap.packet = packet
tap.draw = draw
tap.reset = reset
end
register_stat_cmd_arg('ports', show_ports)
使い方は、以下の通りです。
C:\Program Files\Wireshark>tshark.exe -X lua_script:ports.lua -z ports -r paessler.pcap
オプションの-zがポイントで、「ports」という統計情報は存在しません。-Xの引数にあるports.luaにあるregister_stat_cmd_arg(‘ports’, show_ports)で定義しているものと考えます。今回tshark.exeの引数で指定した入力ファイルpaessler.pcapはNetFlow v5のパケット1種類しかありません。以下に実行結果を示します。
他の宛先ポートを利用する通信が存在すれば、6363: 347の行が一行ではなく複数行となります。また、Max: 6363 347の行には最もパケット数が多かった通信が表示されます。これは、宛先ポート6363のパケットが347個あったという意味となります。
最新記事 by 伊集院 (全て見る)
- 【暗号化通信(TLS)を復元できる】WIRESHARK達人への道 第二十五歩 暗号化通信(TLS)を復号する方法 - 1月 1, 2023
- 【詳細版】NSM(ネットワークセキュリティモニタ)、Zeekとは? - 9月 1, 2022
- 【簡易版】OSSネットワークセキュリティモニタZeekとは? - 8月 26, 2022