UDPパケットをファイルに保存する必要があり、利用可能なさまざまなツール(wireshark、tcpdump、...)を再利用するためにpcapフォーマットを使用したいと考えています。 this threadにいくつかの情報がありますが、グローバルファイルヘッダー 'struct pcap_file_header'の書き込み方法が見つかりません。pcapファイルを作成する
pcap_t* pd = pcap_open_dead(DLT_RAW, 65535);
pcap_dumper_t* pdumper = pcap_dump_open(pd, filename);
struct pcap_file_header file_hdr;
file_hdr.magic_number = 0xa1b2c3d4;
file_hdr.version_major = 2;
file_hdr.version_minor = 4;
file_hdr.thiszone = 0;
file_hdr.sigfigs = 0;
file_hdr.snaplen = 65535;
file_hdr.linktype = 1;
// How do I write file_hdr to m_pdumper?
while((len = recvmsg(sd, &msg_hdr, 0)) > 0)
pcap_dump((u_char*)m_pdumper, &m_pcap_pkthdr, (const u_char*)&data);
グローバルファイルヘッダーはどのように書き込む必要がありますか? 特定のpcap関数がない場合、どのようにwrite()を使ってヘッダを挿入するためにファイルディスクリプタを取得できますか?
ありがとうございますが、通常のファイルwrite()呼び出しを使用してすべてを行ったようです。私はpcap_dump()を使用していますが、ファイルディスクリプタを取得する場所を特定できません。 –
@RobertKubrick上記の更新。私は 'pcap_dump'でもIPヘッダを偽装する必要があるので元の答えは残しました。上にリンクされているパッチがそれを助けるかもしれません。 – je4d
本当に、グローバルファイルヘッダーを書き込む必要はありません。確認しました。 –