• 大小: 12.44MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-27
  • 语言: 其他
  • 标签: STM32  HID  

资源简介

使用STM32的固件库进行USB-HID组合设备进行开发,3个HID接口。通过bus hound 来抓包分析发现 PC 发送set idle命令下去后,从设备没有响应,所以PC变为stall状态。通过分析源代码和HID协议,修补漏洞之后可以在任何电脑上枚举成功。里面有具体的参考文件及修改好的代码,有什么问题欢迎咨询我。谢谢。

资源截图

代码片段和文件信息

/* Includes ------------------------------------------------------------------*/

#include “hw_config.h“ 
#include “usb_lib.h“
#include “usb_conf.h“
#include “usb_prop.h“
#include “usb_desc.h“
#include “usb_pwr.h“


/* Private typedef -----------------------------------------------------------*/ 
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
uint32_t ProtocolValue;
__IO uint8_t EXTI_Enable;
__IO uint8_t Request = 0;
uint8_t Report_Buf[2];   
/* -------------------------------------------------------------------------- */
/*  Structures initializations */
/* -------------------------------------------------------------------------- */

DEVICE Device_Table =
  {
    EP_NUM
    1
  };

DEVICE_PROP Device_Property =
  {
    CustomHID_init
    CustomHID_Reset
    CustomHID_Status_In
    CustomHID_Status_Out
    CustomHID_Data_Setup
    CustomHID_NoData_Setup
    CustomHID_Get_Interface_Setting
    CustomHID_GetDeviceDescriptor
    CustomHID_GetConfigDescriptor
    CustomHID_GetStringDescriptor
    0
    0x40 /*MAX PACKET SIZE*/
  };
USER_STANDARD_REQUESTS User_Standard_Requests =
  {
    CustomHID_GetConfiguration
    CustomHID_SetConfiguration
    CustomHID_GetInterface
    CustomHID_SetInterface
    CustomHID_GetStatus
    CustomHID_ClearFeature
    CustomHID_SetEndPointFeature
    CustomHID_SetDeviceFeature
    CustomHID_SetDeviceAddress
  };

ONE_DEscriptOR Device_Descriptor =                  //用于获得设备描述符
  {
    (uint8_t*)CustomHID_DeviceDescriptor
    CUSTOMHID_SIZ_DEVICE_DESC
  };

ONE_DEscriptOR Config_Descriptor =                 //用于获得配置描述符
  {
    (uint8_t*)CustomHID_ConfigDescriptor
    CUSTOMHID_SIZ_CONFIG_DESC
  };
/************分别获取3个HID的报告描述符****************/
//ONE_DEscriptOR ALL_HID_Report_Descriptor[3] =           //用于获得报告描述符
//  {
//    {(uint8_t *)mouse_ReportDescriptormouse_SIZ_REPORT_DESC}
//    {(uint8_t *)pen_Report_Descriptorpen_SIZ_REPORT_DESC}
//    {(uint8_t *)HID_driver_Report_DescriptorHID_driver_SIZ_REPORT_DESC}
//  };

ONE_DEscriptOR mouse_Report_Descriptor =           //用于获得报告描述符
  {
    (uint8_t *)mouse_ReportDescriptor
    mouse_SIZ_REPORT_DESC
  };
ONE_DEscriptOR pen_Report_Descriptor =              
  {
    (uint8_t *)pen_ReportDescriptor
    pen_SIZ_REPORT_DESC
  };
ONE_DEscriptOR HID_driver_Report_Descriptor =       
  {
    (uint8_t *)HID_driver_ReportDescriptor
    HID_driver_SIZ_REPORT_DESC
  };

/************分别获取3个HID的配置描述符中的HID描述****************/
//mouse_OFF_HID_DESC/pen_OFF_HID_DESC/HID_driver_OFF_HID_DESC
//是HID描述在配置描述符中的偏移量
ONE_DEscriptOR mouse_Hid_Descriptor =              
  {
    (uint8_t*)CustomHID_ConfigDescriptor + mouse_OFF_HID_DESC  
    CUSTOMHID_SIZ_HID_DESC
  };
ONE_DESCRIP

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-23 15:34  1_ST_USB\
     文件     1002149  2019-03-21 11:27  1_ST_USB\11_STM32F10xxx USB开发工具包.pdf
     文件      494974  2018-09-28 14:58  1_ST_USB\6_STM32_USB_资源汇总.pdf
     文件       18687  2019-03-23 15:21  1_ST_USB\usb_prop.c
     文件     3111285  2019-03-23 14:04  1_ST_USB\USB培训_Part1 协议.pdf
     文件     2871158  2019-03-23 14:09  1_ST_USB\USB培训_Part2 USB IP及其库的使用 .pdf
     文件     1507218  2019-03-23 14:09  1_ST_USB\USB培训_Part3 USB OTG IP及其库的使用.pdf
     文件     4267324  2019-03-23 14:07  1_ST_USB\USB进阶培训_Part1_USB类的介绍.pdf
     文件      989598  2019-03-23 14:08  1_ST_USB\USB进阶培训_Part2_USB复合设备的概念及CDC MSC的讲解.pdf
     文件     1578416  2019-03-23 14:08  1_ST_USB\USB进阶培训_Part3_HandsOn_一步一步跟着我,从CubeMX生成CDC MSC复合设备.pdf.pdf

评论

共有 条评论