问题描述
我正在Windows上构建C ++应用程序,该应用程序应重新解释存储在from django.contrib import admin
from blog.models import Blog
admin.site.register(Blog)
文件中的Wireshark和USBPCap捕获的USB数据流。我目前在获取.pcap
方面遇到困难,因此我将能够解释鼠标发送给主机的数据。
到目前为止,该网站USB Made Simple是一个很好的信息来源,而且我还阅读了大量的教程,以了解如何编写自己的HID报告描述符。但是我需要从当前数据流中检索一个。
根据wireshark,鼠标向我发送了HID Report descriptor
(example here),然后它向DEVICE DESCRIPTOR
发送了CONfigURATION DESCRIPTOR
和INTERFACE,HID
({{ 3}})。
根据ENDPOINT DESCRIPTORS
中wDescriptorLength
的值,应该有长度为56的HID DESCRIPTOR
,但没有长度。之后,只有HID REPORT DESCRIPTOR
的长度为7,另外ENDPOINT DESCRIPTOR
和INTERFACE
的总长度为18。
有什么办法可以从中获得HID DESCRIPTOR
还是我错过了什么?
谢谢您的输入。
解决方法
有什么办法可以从中获得
HID REPORT DESCRIPTOR
还是我错过了什么?
不了解您,但对我而言,似乎Wireshark / USBPCap缺少某些内容。
如果将其与我的示例进行比较,您的部分似乎缺少USBHID
协议的条目。
请检查您的Wireshark版本,或者您尚未在捕获配置中启用任何过滤器。
如果单击USBPcap界面左侧的“齿轮”图标,则可以检查当前设置:
重要提示: 尽管事实上已选中“注入已连接的设备描述符...”,但它对我不起作用,并且我想捕获报告描述符,但您必须重新连接设备:拔下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
希望这会为您指明正确的方向。