2013-04-30 41 views
10

是否有可能基于tcp连接时间(连接持续时间)过滤tcpdump(活动或创建转储后)?tcpdump - 如何根据tcp连接时间/持续时间进行过滤

我正在记录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中的数据。

我该怎么做?

+0

您是否按照kauppi的建议尝试了SplitCap?你不能使用tcpdump过滤会话持续时间,因为它不是一个有状态的过滤器,乍一看SplitCap似乎提供了你开始所需的东西。 – 2013-05-24 14:54:25

+0

要添加到Tom Regner所说的内容:'tcpdump'不记录会话持续时间。 Wireshark能够向你显示信息的原因是因为Wireshark本身跟踪会话持续时间,而不是简单地解析'tcpdump'。 – 2013-05-24 18:55:41

回答

1

您需要考虑您的流量流量级别而不是数据包级别。

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

缺点是在输出端你会得到NetFlow,而不是PCAP。建立一些统计数据就足够了,但是要检查数据包 - 当然不是。

你也可以用C(硬方法)或scapy(使用python)(更简单的方法)用libpcap构建自己的工具。后面的选项不应该太难(只要你使用python)

2

SplitCap可能适合你。它将把PCAP作为每个TCP/UDP会话的输入和输出单独的PCAP。分割之后,您可以从输出PCAP中筛选要保留的有趣内容。