创建PCAP文件(Creating a pcap file)

2019-06-23 13:41发布

我需要的UDP数据包保存到一个文件,并想用PCAP格式重用现有的各种工具(Wireshark的,tcpdump的,...)。 有一些信息, 这个线程 ,但我无法找到如何编写全局文件头“结构pcap_file_header”。

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功能,我怎么能检索文件描述符插入用头写()?

Answer 1:

你不应该需要写标题, pcap_open_dead应该为你做。 你只需要填写并写头自己,如果你想要写的文件,而不是直接使用的pcap_dump和朋友。 这里有一个例子在这里一个简单的程序写出来与功能的PCAP文件。


原来的答案 ,就直接写入文件:

我不记得这是怎样工作的,但我写了一个补丁redir前一段时间,将写出PCAP文件,你可以使用它作为一个例子。

你可以找到它连接到这个Debian错误 。 (错误链接固定。)

其中一些是伪造的以太网和IP报头,并且你正在使用可能不适用pcap_dump_openpcap_dump其中在如上链接的补丁写出pcap文件,而无需使用任何库,但我会在这里反正在离开这个情况下,它可以帮助。



Answer 2:

如果你有兴趣在UDP和TCP而已,你应该使用DLT_EN10MB代替DLT_RAW (CF pcap_open_dead模拟整个捕获UDP数据包 )。

在WireShak编辑时它要好得多。



文章来源: Creating a pcap file