【问题标题】:Parsing pcapng vs pcap file解析 pcapng 与 pcap 文件
【发布时间】:2021-04-22 16:39:27
【问题描述】:

所有,

文档here 讨论了 2 个不同的功能。

pcap_next() 调用 pcap 而 pcap_next_ex() 调用 pcapng 格式吗?或者这两个函数都可以读取这两种格式?

页面没有说明。

我有一个解析 pcap 文件并使用前一个调用的代码,我只是想知道仅检查 pcapng 文件并改用后一个调用是否就足够了。

TIA!!

【问题讨论】:

    标签: libpcap


    【解决方案1】:

    pcap_next() 调用 pcap 而 pcap_next_ex() 调用 pcapng 格式吗?

    没有。 pcap_next() 用于不检查错误的应用程序,pcap_next_ex() 用于检查错误的应用程序。引用the man page的返回值部分:

    pcap_next_ex() 如果读取数据包没有问题,则返回 1,如果正在从实时捕获中读取数据包并且数据包缓冲区超时,则返回 0,如果在读取数据包时发生错误,则返回 PCAP_ERROR,如果数据包正在从“保存文件”中读取,并且没有更多数据包要从保存文件中读取。如果返回PCAP_ERROR,则可以使用 p 作为参数调用 pcap_geterr(3PCAP) 或 pcap_perror(3PCAP) 以获取或显示错误文本。

    pcap_next() 成功时返回一个指向数据包数据的指针,如果发生错误,或者如果没有从实时捕获中读取数据包(例如,因为它们没有通过数据包过滤器,或者如果在支持在任何数据包到达之前开始的数据包缓冲区超时的平台上,超时在任何数据包到达之前到期,或者如果捕获设备的文件描述符处于非阻塞模式并且没有数据包可供读取),或者如果“保存文件”中没有更多数据包可用。不幸的是,没有办法确定是否发生了错误。

    你应该使用pcap_next_ex()

    或者这两个函数都可以读取这两种格式?

    是的。 (pcap_next_ex() 是在 libpcap 甚至可以读取 pcapng 文件之前添加的。)

    我有一个解析 pcap 文件并使用前一个调用的代码,我只是想知道仅检查 pcapng 文件并改用后一个调用是否就足够了。

    无论文件是 pcap 还是 pcapng 文件,只要使用 pcap_next_ex() 就足够了。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 2016-04-07
      • 2015-01-14
      • 2016-04-07
      • 2011-09-14
      • 1970-01-01
      • 2013-08-17
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多