しますか
pcap_t *pcap_open_offline(const char *fname, char *errbuf)
libpcapからpcapファイル全体をメモリに読み込みますか?そうでない場合は、tcpsliceまたは同様のツールを使用してpcapファイルを分割する必要がありますか?
ありがとう。
あなたの質問を表現する奇妙な方法ですが、私は私ができることを試して答えます。
pcap_open_offline()
.dumpファイル(またはtcpdump、tcpslice、またはlibpcapのpcap_dump_open()
+pcap_dump()
関数からの同様の名前の出力)を入力として受け取ります。
このファイルの形式と機能は、ネットワークデバイスIEのライブトレースとまったく同じです。このpcap_tオブジェクトは、pcap_next、pcap_loopなどで使用できます。
ダンプファイルを何らかの方法で変更すると(つまり、情報を削除するか、tcpsliceまたはwiresharkで必要なものだけを解析する)pcap_open_offline()
、ライブパケットトレースの方法でフォーマットされないため、によって読み取り不能になります。
ただし、ファイル全体を一度にメモリにロードするわけではありません。ライブトレースからパケットをストリーミングするのと同じように、ファイルをストリーミングします。
要約pcap_open_live()
すると、変更されていないtcpdump / tcpsliceダンプを開き、ライブストリームのように読み取ります。ダンプが非常に大きくなる可能性があるため、ファイル全体をメモリにロードしません。代わりに、ファイルを通過するだけで、一度に1パケット分のファイルのみがロードされます。