解決策 1:
tcpdump
を使用できます 必要な pcap の部分を抽出するには...あるホストの TCP/55777 と別のホストの TCP/80 の間のソケット接続でパケットを探しているとします。ソースファイルは bigfile.pcap
です 、これは問題の Web ホストへの多数の HTTP セッションのスニファー ダンプです...
tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777
これにより、bigfile.pcap
で TCP/55777 に出入りするすべてのパケットがプルされます それらを session.pcap
にコピーします .
解決策 2:
PcapPlusPlus パッケージの一部である PcapSplitter を使用することもできます。それはあなたが必要とすること(TCPまたはUDP接続によってpcapファイルを分割すること)を正確に行い、マルチプラットフォームであり、元のファイルの接続数に制限がありません(したがって、それを使用して大きなファイルを分割できます数千またはそれ以上の接続を含む pcap ファイル)。上記のリンクはソース コード用ですが、コンパイル済みのバイナリが必要な場合は、複数のプラットフォーム用に作成したバイナリのリンクを次に示します
編集: どうやら PcapPlusPlus の新しいバージョンがリリースされ、かなり多くのプラットフォーム (Windows、Ubuntu 12.04/14.04、Mac OSX Mavericks/Yosemite/El Captian) 用の PcapSplitter バイナリが含まれています。以前に提供したリンクよりも、これらのバイナリを使用する方が良いと思います。ここで見つけることができます
解決策 3:
tcpflow が必要です - pcaps を TCP セッションごとに 1 つのファイルに分割します
http://www.circlemud.org/jelson/software/tcpflow/
解決策 4:
少しやり過ぎですが、 tshark
を使用しています (wireshark
で出荷 )、あなたは zsh
で行うことができます :
file=file.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
tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
done
1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap
のような名前のファイルを生成します (各接続で見られる最初のパケットに基づく)。
解決策 5:
うまくいくかもしれないこのツールがあるようです (私は個人的には使用していません)
http://www.netresec.com/?page=SplitCap (Windows ベース)
<ブロック引用>SplitCap は無料の (ビールのように) オープンソースの pcap ファイル スプリッターです。 SplitCaps は、TCP および UDP セッションに基づいて、1 つの大きな pcap ファイルを複数のファイルに分割します。セッションごとに 1 つの pcap ファイルです。 SplitCap は、セッションの代わりにホスト ペアごとに pcap ファイルを 1 つの pcap ファイルに分割するためにも使用できます。