使用 libpcap 读取 zst 压缩 pcap

Posted

技术标签:

【中文标题】使用 libpcap 读取 zst 压缩 pcap【英文标题】:Read zst compressed pcap with libpcap 【发布时间】:2021-10-05 20:13:12 【问题描述】:

我想用 libpcap 解码 zst 和 gz pcap,但我找不到任何这样做的例子。当然我不想有一个临时解压的 pcap 文件。 你们能给我指出正确的方法吗?

谢谢

【问题讨论】:

【参考方案1】:

Libpcap 目前不支持读取压缩文件。

如果您不想有一个临时解压缩的 pcap 文件,唯一的方法是让您的程序创建一个管道,运行另一个程序来读取压缩文件并将解压缩的文件数据写入标准输出,其标准输出是管道的写入端,从管道的读取端创建标准 I/O 流(例如,在类 Unix 系统上使用 fdopen()),然后使用 pcap_fopen_offline()将标准 I/O 流作为捕获文件打开。

这样,其他程序将进行解压,但会将其写入管道而不是文件,您的程序将从管道中读取解压后的数据。

【讨论】:

这就是我害怕的。感谢您的帮助。 或者您可以编写一个程序,将标准输入作为捕获文件打开并从中读取,然后将解压缩命令通过管道传送到该程序。如果您将"-" 作为参数传递给pcap_open_offline(),它将打开标准输入。 是的,但我想在一个应用程序中处理所有事情。 然后你需要在你的应用程序中有多个线程,一个线程将文件解压缩到管道,另一个线程以pcap_t 的形式打开管道并读取它 - 你需要将解压缩代码合并到您的应用程序中。 是的,我完全可以接受。完成后,我将在此处转储代码示例。

以上是关于使用 libpcap 读取 zst 压缩 pcap的主要内容,如果未能解决你的问题,请参考以下文章

libpcap 过滤 pcap_compile

libpcap

使用 libpcap,有没有办法从离线 pcap 文件中确定捕获的数据包的文件偏移量?

从 S3 读取 .zst 文件

libevent 1.4 版和 2.0 版之间的差异如何影响 libpcap 事件?

请问*.pcap文件都是啥软件产生的啊?wireshark我知道保存的文件格式是.pcap文件,请问还有别的软件吗?