如何以编程方式在wireshark捕获中设置标签frame.ref_time

时间:2017-03-07 01:03:13

标签: wireshark tshark

我有数百个捕获文件,需要总结对服务器向大量客户端发出的特定请求的响应。我正在使用脚本来使用tshark处理捕获文件。

我想以编程方式为匹配特定显示过滤器的数据包设置frame.ref_time,然后使用frame.time_relative < x seconds重新扫描以符合我的目的(我已使用tcp.stream作为过滤器但需要限制进一步)。

tshark和editcap似乎都没有这样做,但我不确定。当然这种能力不仅限于gui?

如何从脚本中以编程方式设置frame.ref_time? 设置好标签后,是否有清除所有标签的方法,或者我应该优雅并执行相反的操作?

1 个答案:

答案 0 :(得分:1)

据我所知,您只能使用GUI设置frame.ref_time;但是,这种限制对您来说可能不一定是个问题。应用过滤器后,当这些数据包写入新文件管道传输到另一个tshark实例时,所有帧都会相对于与过滤器匹配的第一个数据包成帧。因此,您应该能够使用tshark的两个实例来实现您所需要的,第一个实例用于隔离感兴趣的流,第二个用于隔离符合时间相关标准的帧。

例如,假设您对与 TCP stream 0 相关联的数据包感兴趣,但只对那些在流开始后0.1秒内收到的流的一部分感兴趣。在这种情况下,您可以使用如下命令:

tshark -r capturefile.pcap -Y "tcp stream eq 0" -w - | tshark -r - -Y "frame.time_relative < 0.1"

有关tshark选项的详情,请参阅tshark man page