@schに触発されたのはbashバージョンです:
file=cap.pcap
$tshark -Tfields -e tcp.stream \
-e frame.time_epoch \
-e ip.src \
-e tcp.srcport \
-e ip.dst \
-e tcp.dstport -r $file |
sort -snu |
while read -a f; do
[[ "${f[5]}" ]] || continue # sometimes there is no stream number ex. UDP
fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r' )
$tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
done
read
ファイル名は次のようになります。 stream number__time__source IP__port__destination IP__port.pcap
tr -d '\r'
WindowsのtsharkはCR LFを出力するため、Windowsユーザー向けです。
編集:
tsharkを使用したこのソリューションは非常に遅いですが、確かです。SplitCapは超高速ですが、一部のパケットにエラーがあるとクラッシュしますが、tsharkはエラーについて通知するだけで続行します。
tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.
最後に、PcapSplitterも超高速ですが、winpcapドライバーが必要です。Windowsのnpcapドライバーでは動作しません。
しかし、SplitCapには解決策があります。pcapfixを使用すると、破損したパケットを修正でき、SplitCapが再びクラッシュすることはありません。tsharkは分割が非常に遅いため、これが今私が使用しているものです。
そして、私がやったPcapSplitterの解決策は、任意の方法を使用してwinpcap dllを注入することでしたが、SplitCapを持っている間になぜそれを行うのですか?