首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建pcap文件

创建pcap文件
EN

Stack Overflow用户
提问于 2012-04-12 04:44:22
回答 2查看 21.6K关注 0票数 6

我需要将UDP数据包保存到一个文件中,并希望使用pcap格式来重用各种可用的工具(wireshark、tcpdump等)。this thread中有一些信息,但我找不到如何写入全局文件头'struct pcap_ file _ header‘。

代码语言:javascript
复制
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()检索文件描述符来插入头?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-12 04:57:02

你不需要写这个头文件,pcap_open_dead会帮你写的。如果你想直接写文件,而不是使用pcap_dump和朋友,你只需要自己填写和写那个头文件。这里有一个简单程序的示例here,用这些函数写出一个pcap文件。

原始答案,关于直接写文件:

我记不清这是如何工作的了,但是我之前给redir写了一个补丁,可以写出pcap文件,你也许可以用它作为一个例子。

你可以在this debian bug上找到它。(错误链接已修复。)

其中一些用于伪造以太网和IP报头,可能不适用,因为您使用的是pcap_dump_openpcap_dump,因为上面链接的补丁不使用任何库就可以写出pcap文件,但无论如何我都会把它留在这里,以防万一。

票数 6
EN

Stack Overflow用户

发布于 2015-08-12 20:40:39

如果您只对UDP和TCP感兴趣,则应该使用DLT_EN10MB而不是DLT_RAW (参见pcap_open_dead to simulate full UDP packets capture )。

在WireShak中进行编辑时,效果要好得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10113653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档