从.pcap文件获取HID报告描述符

问题描述

我正在Windows上构建C ++应用程序,该应用程序应重新解释存储在from django.contrib import admin from blog.models import Blog admin.site.register(Blog) 文件中的WiresharkUSBPCap捕获的USB数据流。我目前在获取.pcap方面遇到困难,因此我将能够解释鼠标发送给主机的数据。

到目前为止,该网站USB Made Simple一个很好的信息来源,而且我还阅读了大量的教程,以了解如何编写自己的HID报告描述符。但是我需要从当前数据流中检索一个

根据wireshark,鼠标向我发送了HID Report descriptorexample here),然后它向DEVICE DESCRIPTOR发送了CONfigURATION DESCRIPTORINTERFACE,HID({{ 3}})。

根据ENDPOINT DESCRIPTORSwDescriptorLength的值,应该有长度为56的HID DESCRIPTOR,但没有长度。之后,只有HID REPORT DESCRIPTOR的长度为7,另外ENDPOINT DESCRIPTORINTERFACE的总长度为18。

有什么办法可以从中获得HID DESCRIPTOR还是我错过了什么?

谢谢您的输入。

解决方法

有什么办法可以从中获得HID REPORT DESCRIPTOR还是我错过了什么?

不了解您,但对我而言,似乎Wireshark / USBPCap缺少某些内容。 如果将其与我的示例进行比较,您的部分似乎缺少USBHID协议的条目。

enter image description here

请检查您的Wireshark版本,或者您尚未在捕获配置中启用任何过滤器。

如果单击USBP​​cap界面左侧的“齿轮”图标,则可以检查当前设置:

USBPcap settings

重要提示: 尽管事实上已选中“注入已连接的设备描述符...”,但它对我不起作用,并且我想捕获报告描述符,但您必须重新连接设备:拔下USB-HID设备->开始捕获->插入USB设备->现在您可以停止捕获。

,

您应该能够使用Win32 HID-parse实用程序执行此操作:

https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/preparsed-data

请参见此处的使用示例,其中使用WM_INPUT访问HID报告: https://github.com/supersmo/Using-Raw-Input-API-to-Process-Joystick-Input

...尤其是这些方法:

// determine buffer size required
CHECK( GetRawInputDeviceInfo(pRawInput->header.hDevice,RIDI_PREPARSEDDATA,NULL,&bufferSize) == 0 );

// allocate buffer
CHECK( pPreparsedData = (PHIDP_PREPARSED_DATA)HeapAlloc(hHeap,bufferSize) );

// determine the usages etc
CHECK( (int)GetRawInputDeviceInfo(pRawInput->header.hDevice,pPreparsedData,&bufferSize) >= 0 );

// Button caps
CHECK( HidP_GetCaps(pPreparsedData,&Caps) == HIDP_STATUS_SUCCESS )

// Value caps
CHECK( pValueCaps = (PHIDP_VALUE_CAPS)HeapAlloc(hHeap,sizeof(HIDP_VALUE_CAPS) * Caps.NumberInputValueCaps) );
capsLength = Caps.NumberInputValueCaps;
CHECK( HidP_GetValueCaps(HidP_Input,pValueCaps,&capsLength,pPreparsedData) == HIDP_STATUS_SUCCESS )

要查看的另一件事是ReactOS hidusb source,可以在今天(今天)找到: https://doxygen.reactos.org/dd/d06/hidusb_8c_source.html

...特别注意例如HidUsb_GetReportDescriptor

希望这会为您指明正确的方向。