0

ネットワーク インターフェイスをリッスンし、いくつかのフレームを選択して編集し、ディスクに保存するアプリケーションを作成しています。tshark および tcpdump と非常によく似ています。

私のコードは C++ で書かれています

しかし、パケットを pcap 形式で保存したいのですが、(メモリ内の) イーサネット フレームを受け入れて .pcap ファイルに保存する C/C++ ライブラリが見つかりません。

  • 注: 当面は hexdump と text2pcap を使用しますが、本番環境では受け入れられません

ソリューションの更新:

#include <pcap.h>

pcap_t* p = pcap_open_dead(DLT_EN10MB, 65535);
const std::string pcap_file_name = getPcapName();
pcap_dumper_t* dumper = pcap_dump_open(p, pcap_file_name.c_str());

pcap_pkthdr h;
h.caplen = packet_len;
h.len = packet_len;

pcap_dump((u_char*)dumper, &h, packet);

pcap_dump_close(dumper);
pcap_close(p);
4

1 に答える 1

2

WinPcap / libpcap を C++ コードで直接使用できないのはなぜですか? これらは C ライブラリなので、リンクできるはずです。

unix では libpcap を、windoze では winpcap を使用します。

于 2013-11-02T17:33:04.213 に答える