如何以pcap格式保存以太网帧

时间:2013-11-02 17:13:38

标签: c++ tcp libpcap tcpdump tshark

我正在编写一个应用程序来监听网络接口,选择一些帧,编辑它们然后将它们保存到磁盘。与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);

1 个答案:

答案 0 :(得分:2)

为什么不能直接在C ++代码中使用WinPcap / libpcap? 这些是C库,所以你应该能够链接它们。

在windoze下的unix或winpcap下使用libpcap。