是否有可能根据tcp连接时间(连接持续时间)过滤tcpdump(实时或创建转储后)?
我正在录制http json rpc流量。 我想只记录比1000毫秒更长的连接。
在wireshark中,Menu-> Statistics-> Conversations(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 :(得分:2)
SplitCap可能适合您。它将PCAP作为输入并为每个TCP / UDP会话输出单独的PCAP。在拆分之后,您可以从输出PCAP中过滤掉要保留的有趣内容。
答案 1 :(得分:1)
您需要在 flow 级别而不是数据包级别考虑您的流量。
如果您使用NetFlow,则可以使用flow-tools和flow-nfilter按持续时间过滤流量。所以你可以convert your pcap to NetFlow然后过滤它。
缺点是在输出端你得到的是NetFlow,而不是PCAP。建立一些统计数据就足够了,但要检查数据包 - 当然不是。
您还可以使用C(硬盘方式)中的libpcap或python中的scapy(更简单的方法)构建自己的工具。后一个选项不应该太难(假设您使用python)