我正在尝试将包含数百个TCP流的大型pcap文件拆分为单独的文件。我目前的方法(见下文)对我来说似乎效率很低。我的问题是:通过TCP流将pcap文件拆分为单独文件的最有效方法是什么?
在当前方法中,我首先使用tshark找出文件中包含哪些TCP流。接下来,对于每个这些TCP流,我读取原始文件并提取给定的流。下面的代码段显示了我的方法:
#!/bin/bash
# Get all TCP stream numbers
for stream in `tshark -r $file -T fields -e tcp.stream | sort -n | uniq`
do
# Extract specified stream from $file and write it to a separate file.
tshark -r "$file" -Y "tcp.stream eq $stream" -w "$file.$stream.pcap"
done
但是,这种方法似乎效率低下,因为tshark必须多次读取pcap文件(每个流一次)。理想情况下,我希望有一种方法可以遍历原始pcap文件,并在找到属于特定连接的数据包后将其附加到该文件。
我也在寻找其他方法,但是它们似乎不适合我的情况:
对于这两种解决方案,我也不完全确定它们是否能够正确处理错误的捕获。
因此,我想对如何以最有效的方式基于TCP流将pcap文件拆分为单独的文件提出一些建议。
答案 0 :(得分:0)
您看过Tracewrangler吗?它适用于Windows,但是documentation确实提到它可以在wine下运行。
这可能是我能想到的最好的工具,但是您可能想看看Wireshark Wiki Tools页面上列出的其他工具。
答案 1 :(得分:0)
从性能的角度来看,一种有效的方法显然是针对该任务的专用程序。
libpcap-library可能具有实现以下功能所需的功能:
pcap_open_offline
用于打开要读取的pcap文件pcap_dump_open
用于打开要写入的pcap文件pcap_dump
用于将数据包写入目标文件