如何将 .pcapng 文件转换为 .pcap/.tcpdump 文件?

Pra*_*rma 4 command-line bash scripts

我有几个文件夹,每个文件夹有 300 到 400 个文件。这些文件是.pcapng格式的wireshark捕获。我想编写一个 shell 脚本,打开每个文件并使用wireshark.tcpdump格式将其保存到一个新文件夹中。

Bra*_*iam 5

好的,找到了名为editcap. 你只需要调用editcap i.pcapng o.pcap一个循环:

# Recursively convert all *.pcapng files to *.pcap
cd /path/to/folders   # the path to folder where your folders containing '*.pcapng' files are in
find . -type f -name '*.pcapng' -print0 | while IFS= read -r -d '' f; do editcap -F libpcap "$f" "${f%.pcapng}.pcap"; done
Run Code Online (Sandbox Code Playgroud)

(因为我比较懒,除了给${f%.pcapng}.pcap加双引号外,主要使用Radu的脚本)

您可以查看editcap 手册以获取更多选项。

这里有一个例子:

braiam@bt:~/lab$ ls
something.pcapng
braiam@bt:~/lab$ find . -type f -name '*.pcapng' -print0 | while IFS= read -r -d '' f; do editcap -F libpcap "$f" "${f%.pcapng}.pcap"; done
braiam@bt:~/lab$ file something.pcap something.pcapng 
something.pcap:   tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 65535)
something.pcapng: pcap-ng capture file - version 1.0
braiam@bt:~/lab$ 
Run Code Online (Sandbox Code Playgroud)

如您所见,我将 pcapng 格式转换为 pcap/tcpdump 格式。扩展名的更改是额外的。