我需要將UDP數據包保存到一個文件,並且希望使用pcap格式來重用可用的各種工具(wireshark,tcpdump,...)。 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()並且無法確定獲取文件描述符的位置。 – 2012-04-11 21:11:13
@RobertKubrick更新以上。我已經離開了原來的答案,即使使用'pcap_dump',你仍然需要僞造一個IP頭,上面鏈接的補丁可能會有幫助。 – je4d 2012-04-11 21:22:42
的確,不需要寫全局文件頭,我只是驗證過。 – 2012-04-11 21:37:29