在写入 .pcap 文件时读取它

Reading .pcap file while it is still being written to

我正在编写一个 windows C++ 应用程序,它正在读取 .pcap 文件并根据 USBPcap 结构表示数据包 headers(和数据)。

一个 .pcap 文件由 USBPcap or Wireshark 创建,包含我的鼠标移动数据。

当我有普通的 .pcap 文件时一切正常,但我想知道是否有办法打开该 .pcap 文件并从中读取数据,同时它仍然被写入(当它仍然跟踪我的鼠标移动)。我尝试用 pcap_open_offline() 打开它,但它给了我一个 NULL 指针。

有办法吗?感谢您的任何意见。

Is there a way to do this ?

第 1 步是确保 USBPcap 使用“拒绝 none”打开文件,以便其他程序可以打开并读取它。如果它不这样做,请请求添加一个选项以允许它这样做。

然后记住 libpcap(WinPcap 和 Npcap 所基于的)期望从正在写入的文件中读取,因此它会报告到达文件的 current 末尾时出现文件结尾或错误,没有任何继续读取文件的规定,因此使用 libpcap/WinPcap/Npcap 不会工作。

这意味着您必须编写自己的代码才能从文件中读取。参见 this draft spec for the pcap file format

(理想情况下,USBPcap 将提供一个 ,而不仅仅是一个 程序 ,以从捕获设备读取;这将允许libpcap 直接捕获 Windows 上的 USB 流量,在这种情况下,您可以直接使用它。)