【问题标题】:tcpdump - how to filter based on tcp connection time / duration [closed]tcpdump - 如何根据 tcp 连接时间/持续时间进行过滤 [关闭]
【发布时间】:2013-04-24 23:44:25
【问题描述】:

是否可以根据 tcp 连接时间(连接持续时间)过滤 tcpdump(实时或创建转储后)?

我正在记录 http json rpc 流量。 我只想记录超过 1000 毫秒的连接。

在wireshark 中菜单-> 统计-> 对话(TCP 选项卡)中有工具,我可以按“持续时间”排序。但我想记录(或过滤)之前的长期连接(而不是在wireshark中)。

在伪命令中我想做这样的事情:

tcpdump -i eth0 port 80 and connectionTime>1000ms -w data.pcap

或录制后:

cat data.pcap | SOMETOOL -connectionTime>1000ms > dataLongConnections.pcap

SOMETOOL 必须将过滤后的数据导出为 Wireshark 能够理解的格式。 因为过滤后我想在 Wireshark 中分析这些数据。

我该怎么做?

【问题讨论】:

  • 您是否按照 kauppi 的建议尝试了 SplitCap?您不能使用 tcpdump 过滤会话持续时间,因为它不是一个有状态的过滤器,SplitCap 乍一看似乎提供了您入门所需的内容。
  • 补充 Tom Regner 所说的内容:tcpdump 不跟踪会话持续时间。 Wireshark 能够向您显示信息的原因是因为 Wireshark 本身正在跟踪会话持续时间,而不是简单地解析 tcpdump

标签: linux filtering tcpdump


【解决方案1】:

您需要在 flow 级别而不是 packet 级别考虑您的流量。

如果您使用NetFlow,您可以使用flow-toolsflow-nfilter 按持续时间过滤流。所以你可以convert your pcap to NetFlow 然后过滤它。

缺点是在输出中您得到的是 NetFlow,而不是 PCAP。建立一些统计数据就足够了,但检查数据包 - 不一定。

您还可以使用 C 语言中的 libpcap(困难方式)或 python 中的 scapy(更简单方式)构建自己的工具。后一个选项应该不会太难(前提是你使用 python)

【讨论】:

    【解决方案2】:

    SplitCap 可能对你有用。它将 PCAP 作为每个 TCP/UDP 会话的输入和输出单独的 PCAP。拆分后,您可以从输出 PCAP 中过滤出要保留的有趣的 PCAP。

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      相关资源
      最近更新 更多