过滤前十分钟的 pcap

Ale*_*ker 2 tcpdump pcap editcap

我有一个很大的 pcap 文件,我想生成一个仅包含前十分钟流量的新 pcap。我可以这样做tcpdump吗?我在editcap网上看到提到过,但tcpdump如果可能,我想使用。

Chr*_*ard 5

你可以这样做tcpdump; 但是,它会简单得多,editcap因为tcpdump我能想到的唯一可行的方法是使用Wireshark(或tshark)首先找到至少 10 分钟进入捕获文件的数据包的帧号。获得帧号后,tcpdump可用于仅保存直到该帧为止的数据包,从而有效地将输出文件限制为所需的 10 分钟持续时间。就是这样:

首先,找到进入捕获文件至少 10 分钟的第一个数据包(这里我将用 来说明tshark,但也可以使用 Wireshark):

tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0"
Run Code Online (Sandbox Code Playgroud)

请注意显示的最后一个数据包的帧号。(假设标准tshark列,帧编号是每行的第一个编号。)为了便于说明,假设它是帧编号 21038。

其次,使用tcpdump仅将前 21038 帧保存到一个新文件中:

tcpdump -r bigfile.pcap -c 21038 -w bigfile_first10min.pcap
Run Code Online (Sandbox Code Playgroud)

但由于editcapWireshark 套件随附,您可以通过使用以下内容更简单地完成等效操作,它将大捕获文件拆分为每 10 分钟的捕获文件(最后一个除外,可能会更少):

editcap -F pcap -i 600 bigfile.pcap bigfile_split10min.pcap
Run Code Online (Sandbox Code Playgroud)

如果您只对第一个文件感兴趣,请忽略其余文件。

当然,正如@madmax1 所指出的,您也可以对上述tshark命令进行简单的修改,将与过滤器匹配的数据包写入新文件:

tshark -r bigfile.pcap -Y "frame.time_relative <= 600.0" -w bigfile_first10min.pcap
Run Code Online (Sandbox Code Playgroud)