在wireshark的巨大pcap中一次选择主要流量

时间:2012-04-17 12:00:36

标签: wireshark wireshark-dissector

我有一个超过1000个TCP流量的大型pcap。我希望过滤大于100的数据包的主要流量。如果我去谈话并右键点击这些流量,我可以过滤这些流量,但是我必须多次这样做,因为我有巨大的pcap,它可能会超过100.是否有任何其他我可以使用的快速显示过滤器,它将给我带有多个包的流量> n(n是任何+ ve整数)。

说一些过滤器如:

flow.num_pkt > 100

可以给我所有这些流量。

非常感谢,

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

Bro是面向连接分析的合适工具。要查找每个流的数据包数,只需在跟踪上运行Bro并从日志中提取值:

bro -r trace.pcap
bro-cut id.orig_h id.orig_p id.resp_h id.resp_p orig_pkts resp_pkts < conn.log \
    | awk '$5+$6 > 100 {print $1,$2,$3,$4,$5,$6}' \
    | sort -rn -k 5 \
    | head

这给出了以下输出:

192.168.1.105 49325 137.226.34.227 80 73568 146244
192.168.1.105 49547 198.189.255.74 80 16764 57098
192.168.1.105 49531 198.189.255.74 80 5186 14843
192.168.1.105 49255 198.189.255.73 80 4749 32164
192.168.1.104 1422 69.147.86.184 80 2657 2656
192.168.1.105 49251 198.189.255.74 80 2254 13854
192.168.1.1 626 224.0.0.1 626 2175 0
192.168.1.105 49513 198.189.255.82 80 2010 3852
192.168.1.103 2026 151.207.243.129 80 1953 2570
192.168.1.105 49330 143.166.11.10 64334 1514 3101

工具bro-cut附带Bro,并提供了从日志中提取某些命名列的便捷方法。对于此任务,您需要:

  • id.orig_h:连接发起者的IP(来源)
  • id.orig_p:连接发起方的传输层端口(源)
  • id.resp_h:连接响应者(目的地)的IP
  • id.resp_p:连接响应者(源)的传输层端口
  • orig_pkts:发起者发送的数据包数
  • resp_pkts:响应者发送的数据包数

请注意awk过滤器表达式:

awk '$5+$6 > 100 {print ...}'

它将输出限制为总数大于100的连接。

除非您有固定大小的数据包,否则我建议您也调查其他指标,例如数据包大小(IP或TCP有效负载)。通过orig_bytesresp_bytes列,可以在连接日志中轻松获取这些内容。