TCP接続でpcapファイルを分割するためのツール?[閉まっている]


16

パケットキャプチャファイル(pcap形式)をTCP接続ごとに個別のファイルに分割するツールはありますか?(おそらく、キャプチャで2回実行する必要がある自作のシェルスクリプトを除く...)。wiresharkの「follow TCPストリーム」のようなものですが、コマンドライン用です(700 MBのパケットキャプチャを表示すると、wiresharkは大量のメモリを消費するのではないかと思います)

tcpflowを見ましたが、元のpcapファイルよりもはるかに大きいファイルを生成するようで、pcap形式ではないようです。


tcpflowから生成されるファイルはpcapではなく、tcpストリームの実際のtcpペイロードです。
クリス14

回答:


9

また、使用することができますPcapSplitterの一部であるPcapPlusPlusのパッケージを。必要なことを正確に行い(pcapファイルをTCPまたはUDP接続で分割します)、マルチプラットフォームであり、元のファイルの接続数に制限がありません(したがって、大きなファイルを分割するために使用できます)何千もの接続を含むpcapファイルなど)。上記のリンクはソースコード用ですが、コンパイル済みのバイナリが必要な場合- ここにいくつかのプラットフォーム用に作成したバイナリ用のリンクがあります

編集:明らかに、新しいバージョンのPcapPlusPlusがリリースされ、かなり多くのプラットフォーム(Windows、Ubuntu 12.04 / 14.04、Mac OSX Mavericks / Yosemite / El Captian)のPcapSplitterバイナリが含まれているようです。以前に提供したリンクよりも、これらのバイナリを使用する方が良いと思います。ここで見つけることができます


10

使用tcpdumpしてpcapの必要な部分を抽出できます。あるホストのTCP / 55777と別のホストのTCP / 80の間のソケット接続でパケットを探しているとします。ソースファイルはbigfile.pcap、問題のWebホストへの多くのHTTPセッションのスニファーダンプです...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

これにより、TCP / 55777で送受信されるすべてのパケットがプルされbigfile.pcap、にコピーされsession.pcapます。


-s0一緒に使用すると効果があり-rますか?
カスペルド

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

likeという名前のファイルを生成します1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap(各接続で最初に見られるパケットに基づいて)。


3

tcpflowはあなたが望むものです-TCPセッションごとにpcapsを1つのファイルに分割します

http://www.circlemud.org/jelson/software/tcpflow/


3
...質問で述べたように、私はそれを試してみましたが、結果の出力ファイルは、入力(PCAP)ファイルよりもはるかに大きかった理由を理解していなかった
アンドレホルズナー

1
また、tcpflowはpcapファイルを出力できないようです。
タクマー

2

機能する可能性のあるこのツールがあるようです(私は個人的に使用していません)

http://www.netresec.com/?page=SplitCap(Windowsベース)

SplitCapは、無料の(ビールのように)オープンソースのpcapファイルスプリッターです。SplitCapは、TCPおよびUDPセッションに基づいて、1つの大きなpcapファイルをセッションごとに1つのpcapファイルに分割します。SplitCapを使用して、セッションの代わりにホストペアごとにpcapファイルを1つのpcapファイルに分割することもできます。


1

@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を持っている間になぜそれを行うのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.