1

我有一个超过 1000 个 tcp 流的大型 pcap。我想过滤大于 100 的数据包的主要流。如果我去对话并右键单击这些流,我可以过滤这些流,但是我必须做几次,因为我有巨大的 pcap,它可能会超过100. 有没有我可以使用的其他快速显示过滤器,它会给我的数据包数> n(n 是任何+ve 整数)的流。

说一些过滤器,例如:

flow.num_pkt > 100

这可以给我所有这样的流量。

多谢,

任何帮助将不胜感激。

4

1 回答 1

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列在连接日志中。

于 2012-04-23T17:08:00.797 回答