2017-03-07 137 views
1

我有数百个捕获文件,需要总结对服务器向大量客户端发出的特定请求的响应。我正在使用脚本来使用tshark处理捕获文件。我想以编程方式设置frame.ref_time匹配某个显示过滤器的数据包,然后使用frame.time_relative < x seconds重新扫描,以适应我的目的(我已经使用tcp.stream作为过滤器,但需要进一步限制)。如何以编程方式在wireshark capture中设置标签frame.ref_time

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

如何通过脚本以编程方式设置frame.ref_time? 设置了标签后,是否有清除所有标签的直接方式,还是应该优雅并执行反向操作?

回答

1

据我所知,您只能使用GUI设置frame.ref_time;但是,这种限制可能不一定是您的问题。一旦你应用了一个过滤器,那么当这些数据包被写入一个新的文件时,所有的数据帧都会变成相对于匹配过滤器的第一个数据包的数据帧。因此,您应该能够使用两个实例tshark来实现您所需的功能,第一个实例隔离感兴趣的流,第二个实例隔离符合时间相关条件的那些帧。

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

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

参考tshark man page的更多信息,tshark选项。

+0

谢谢。这工作完美。我最终得到了我需要的每个流的两个相关帧,而没有额外的混乱。它比我之前的解决方案(尚未完成运行)要快得多,尽管它会多花一点时间。 – gloopy