C++ 从USBPcap库读取原始数据
我正在使用它捕获USB设备驱动器和操作系统之间传输的数据,但它会将数据保存在C++ 从USBPcap库读取原始数据,c++,c,windows,visual-c++,C++,C,Windows,Visual C++,我正在使用它捕获USB设备驱动器和操作系统之间传输的数据,但它会将数据保存在.pcap文件中,该文件只能由Wireshark自己读取。我研究了USBPcap源代码,但由于我对Windows API一无所知,我无法理解源代码,只是在调试时发现了此文件: 我需要原始数据,而不是.pcap编码文件。如何获得它?文件格式很简单,最简单的解决方案是自己解析或使用现有库: USBPcap使用上述格式: 文件头是: typedef struct pcap_hdr_s { UINT32 magic_n
.pcap
文件中,该文件只能由Wireshark自己读取。我研究了USBPcap源代码,但由于我对Windows API一无所知,我无法理解源代码,只是在调试时发现了此文件:
我需要原始数据,而不是
.pcap
编码文件。如何获得它?文件格式很简单,最简单的解决方案是自己解析或使用现有库:
USBPcap使用上述格式:
文件头是:
typedef struct pcap_hdr_s {
UINT32 magic_number; /* magic number */
UINT16 version_major; /* major version number */
UINT16 version_minor; /* minor version number */
INT32 thiszone; /* GMT to local correction */
UINT32 sigfigs; /* accuracy of timestamps */
UINT32 snaplen; /* max length of captured packets, in octets */
UINT32 network; /* data link type */
} pcap_hdr_t;
每个数据包的格式如下:
typedef struct pcaprec_hdr_s {
UINT32 ts_sec; /* timestamp seconds */
UINT32 ts_usec; /* timestamp microseconds */
UINT32 incl_len; /* number of octets of packet saved in file */
UINT32 orig_len; /* actual length of packet */
} pcaprec_hdr_t;
感谢您的回复,我查看了将在文件中写入数据的源,但我找不到这些头的任何足迹。是写入发生的位置。您链接了写入输出文件(或管道)的位置。USBPcapCMD本质上是驱动程序的用户空间助手接口。实际捕获的pcap数据包在USBPcapDriver中生成。USBPcapCMD只需转发从USBPcapDriver读取的数据并将其写入输出。它甚至不检查数据包边界——它只是复制字节。