我有一个大的pcap文件,我想生成一个只包含前十分钟流量的新pcap。我可以使用tcpdump
执行此操作吗?我在网上看过editcap
,但如果可能,我想使用tcpdump
。
答案 0 :(得分:2)
您可以使用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.pcap