如何以编程方式在wireshark capture中设置标签frame.ref_time
问题描述:
我有数百个捕获文件,需要总结对服务器向大量客户端发出的特定请求的响应。我正在使用脚本来使用tshark处理捕获文件。我想以编程方式设置frame.ref_time
匹配某个显示过滤器的数据包,然后使用frame.time_relative < x seconds
重新扫描,以适应我的目的(我已经使用tcp.stream
作为过滤器,但需要进一步限制)。如何以编程方式在wireshark capture中设置标签frame.ref_time
tshark和editcap似乎都没有这样做,但我不确定。当然这个能力不限于gui?
如何通过脚本以编程方式设置frame.ref_time
? 设置了标签后,是否有清除所有标签的直接方式,还是应该优雅并执行反向操作?
答
据我所知,您只能使用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
选项。
谢谢。这工作完美。我最终得到了我需要的每个流的两个相关帧,而没有额外的混乱。它比我之前的解决方案(尚未完成运行)要快得多,尽管它会多花一点时间。 – gloopy