根据数据包长度和其他参数修改pcap文件

时间:2017-05-31 20:21:06

标签: pcap

我同意在此网站上编辑.pcap文件有很多帖子。但是,我还没有能够找到一个可以根据特定条件有效删除条目的.pcap编辑器。

例如,假设我想在Time = 2秒后删除长度为172字节的所有数据包。有没有提供这种灵活性的工具?

如果没有,有没有办法可以使用C ++访问.pcap文件然后编辑它,并将其保存为.pcap文件?

1 个答案:

答案 0 :(得分:1)

解决方案#1

最灵活的方法是为这种东西编写自己的代码。在使用专用库的大多数编程语言中,读取pcap文件非常简单。在C ++中,可以使用libpcap(参见this answer

来完成

解决方案#2

如果pcap文件不是太大,可以使用Wireshark。只需将文件加载到Wireshark,然后输入以下显示过滤器,然后输入Enter!(frame.time_relative > 2 && frame.len == 172)。然后转到File - > Export Specified Packets..并选择displayed,输入文件名,然后保存结果:

enter image description here

解决方案#3

如果文件大小很大但不是很大,或者您需要命令行解决方案,则可以使用Wireshark的命令行版本tshark。只需读入原始文件(-r),应用相同的显示过滤器(-Y),然后将生成的文件写入新位置(-w):

类似的东西:

tshark -r input.pcap -Y "!(frame.time_relative > 2 && frame.len == 172)" -w output.pcap

解决方案#4

我建议的最后一个解决方案是使用libtracegithub here)。 但是,由于您需要同时过滤数据包属性和时间,因此它有点棘手。

一种方法是使用以下步骤:

  1. 首先使用tracesplit将pcap文件拆分为两个文件 - A.pcap和B.pcap,其中A.pcap将包含数据包,直到2秒标记,B将包含其余的跟踪

  2. 使用tracefilter过滤A.pcap,以便只保留长度不是172字节的数据包 - 过滤字符串为len != 172

  3. 使用tracemerge将已过滤的A.pcap和B.pcap合并为一个文件。