我有一个很大的pcap文件,我想生成一个新的pcap,它只包含前十分钟的流量。我能用tcpdump做到这一点吗?我在网上看到过editcap,但如果可能的话,我还是想使用tcpdump。
发布于 2016-08-04 02:52:03
您可以使用tcpdump完成此操作;但是,使用editcap会简单得多,因为我能想到的使用tcpdump完成此操作的唯一实际方法是使用Wireshark (或tshark)首先找到数据包的帧号,该帧号至少在捕获文件的10分钟内。获得帧编号后,可以使用tcpdump仅保存该帧之前的数据包,从而有效地将输出文件限制在所需的10分钟持续时间内。下面是操作步骤:
首先,找到捕获文件中至少10分钟内的第一个数据包(这里我将使用tshark进行说明,但也可以使用Wireshark ):
tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0"请注意显示的最后一个数据包的帧号。(假设标准tshark列,帧编号是每行的第一个编号。)为了便于说明,我们假设它的帧号为21038。
其次,使用tcpdump仅将前21038帧保存到新文件中:
tcpdump -r bigfile.pcap -c 21038 -w bigfile_first10min.pcap但由于editcap附带了Wireshark套件,您可以更简单地使用以下命令来完成等效操作,该命令将把大型捕获文件拆分为捕获文件,每个捕获文件的持续时间为10分钟(除了最后一个捕获文件,它可能会更短):
editcap -F pcap -i 600 bigfile.pcap bigfile_split10min.pcap如果你只对第一个文件感兴趣,那就忽略其他文件。
当然,正如@madmax1所指出的,您也可以对上面的tshark命令进行简单的修改,将与过滤器匹配的数据包写入一个新文件:
tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0" -w bigfile_first10min.pcaphttps://stackoverflow.com/questions/34829237
复制相似问题