首页
学习
活动
专区
圈层
工具
发布

USB HID通信协议详解

USB HID通信协议详解 一、什么是USB HID? USB HID(Human Interface Device,人机接口设备)是USB协议中的一个标准设备类别,专门为需要与人交互的设备设计。...对比表格:HID vs 其他USB设备类型 特性 USB HID设备 其他USB设备(如存储设备) 主要用途 人机交互 数据传输、存储 通信方式 中断传输为主 批量传输为主 延迟要求 低延迟(实时响应...HID描述符 - 告诉主机这是一个HID设备 struct hid_descriptor { uint8_t bLength; // 描述符长度 uint8_t...跨平台兼容性好 灵活 - 可通过报告描述符自定义功能 ⚠️ 局限: 数据量有限 - 不适合大数据传输 描述符复杂 - 学习曲线较陡 带宽受限 - 高速设备可能需要其他方案 总结 USB HID协议是人机交互设备的基石...随着技术的发展,HID over USB-C、无线HID等扩展也在不断演进,但核心的HID协议概念始终保持一致,这充分体现了其设计的优雅和前瞻性。

18510

USB初学(一)---USB-HID的初步认识【转】

HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容。 USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备。...bDeviceSubClass; //usb分配的子类代码,同上,值由USB规定和分配的,HID设备此值为0 BYTE bDeviceProtocl; //USB分配的设备协议代码,同上HID...当插入USB设备后,主机会向设备请求各种描述符来识别设备。 为了把一个设备识别为HID类别,设备在定义描述符的时候必须遵守HID规范。 ?...USB HID类可采用的通信管道 所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。...表1、USB HID规范定义的HID设备可用端点 管道 要求 说明 控制(端点0) 必须 传输USB描述符、类请求代码以及供查询的消息数据等 中断输入 必须 传输从设备到主机的输入数据 中断输出 可选

16.8K61
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SSH与内置USB HID支持的完美结合

    本文将深入探讨SSH的内置USB HID支持及其对用户和管理员的益处。 USB HID简介 USB HID是指通过USB接口连接的人机接口设备,例如键盘、鼠标和安全密钥。...在安全领域,USB HID设备通常用于存储和处理身份验证信息,如数字签名和加密密钥。 SSH的内置USB HID支持 SSH协议内置的USB HID支持允许用户使用USB安全密钥进行身份验证。...USB HID的优势 简便性: 用户只需插入USB安全密钥,即可完成身份验证,极大简化了登录过程。 安全性: 私钥存储在USB安全密钥中,不会在网络上传输,降低了被攻击的风险。...总结 SSH的内置USB HID支持为用户和管理员提供了一个简单、安全的身份验证解决方案。...随着安全需求的不断增加,利用SSH和USB HID技术的身份验证方案将会得到更广泛的应用。

    57530

    信创系统支持 USB HID 设备的两种方案

    2. libusb 简介:通用 USB 访问库,HID 是 USB 设备的一类。...特点: 可以访问 HID 以及非 HID USB 设备; 更底层,需要自己解析 HID 报告; 更灵活,可以实现特定控制请求。...这对于 Android 应用开发者应该比较熟悉,为了让普通用户 adb 能访问到手机,可以通过配置 uodev 规则: 比如新建文件 /etc/udev/rules.d/99-usb-permissions.rules...在Linux上,winebus通过 udev 和 hidraw 接口检测USB HID设备: 使用libudev监控 /dev/hidraw(原始HID设备)和 /dev/input/event(Linux...小结 信创系统在 USB HID 设备支持上已具备较为成熟的方案:通过应用层原生适配效果最佳,同时也能通过 Wine 兼容遗留 Windows 应用。

    31810

    IOT安全 :HID

    如今,使用USB设备进行攻击的案例也屡见不鲜。本文将介绍常见的利用USB设备进行钓鱼攻击的手段。...--- 什么是HID攻击 HID 全称为 Human Interface Device,直译为人类接口设备,也被称为人体学输入设备,是指与人类直接交互的计算机设备,而pc端上的”HID”一般指的是USB-HID...而HID攻击就是攻击者将USB设备模拟成为键盘,让电脑识别成为键盘,再进行脚本模拟按键进行攻击。...Badusb也属于HID攻击的一种,在badusb之前还有两种HID攻击,分别是USB RUBBER DUCKY(usb橡皮鸭)和Teensy....HID攻击需配合社会工程学才能进行攻击,因此除了设备上的防护能力要增强,个人的安全意识也需要增强。 --- 本文作者 r0fus0d

    2K11

    基于STM32CUBE的USB键盘例程.docx

    前面说了USB鼠标,这次趁热打铁,说一下USB键盘。依然只说如何修改,不说背后的原理。原因你懂的,涉及的知识点太多了。 会不会写成USB三部曲? 不知道 猜猜我下一步再写个啥?...2 修改usbd_hid.c文件 其次,生成工程后打开,修改usbd_hid.c文件。配置集合(USBD_HID_CfgFSDesc)要做一些改动,首先是长度: ?...之前是:HID_MOUSE_REPORT_DESC_SIZE,长度是74,现在改成: HID_KEYBOARD_REPORT_DESC_SIZE,长度63....上面提到了,之前是鼠标描述符,长度74,现在改成键盘描述符,长度63. 4 生成键盘的报告描述符 把USB鼠标的报告描述符删掉,换成USB键盘的报告描述符。...不会写USB键盘的报告描述符怎么办? USB官方提供了一个USB报告描述符自动配置的工具,打开!里面有各种例程,我们直接复制一个USB键盘的报告描述符即可。 ?

    1.3K31

    BadUSB的前世今生:USB RUBBER DUCKY和Teensy USB

    USB RUBBER DUCKY和Teensy都可用于实施HID模拟攻击,其中USB RUBBER DUCKY入手简单,傻瓜式操作,但价格不菲啊;而Teensy USB性价比比较高,也可用来制作各种酷炫的...这就是为什么会有一个无处不在的USB标准HID或人机接口设备(Human Interface Device)。任何一个宣称是键盘HID的设备都能够被大多数操作系统自动的探测和接入。...Freebuf小科普 HID(Human Interface Device)人机接口设备类别是Windows最早支持的USB类别。...由其名称可以了解HID设备是计算机直接 与人交互的设备,例如键盘、鼠标和游戏杆等。不过HID设备不一定要有人机接口,只要符合HID类别规范,就都是HID设备。 ?...结合计算机对键盘的固有信任和速度超过1000字/分钟的通过脚本模拟的按键操作,传统的安全对策都能够被USB橡皮鸭轻易的绕过,即HID模拟攻击。

    4.3K100

    真车转向拨杆拆车件+Arduino实现欧卡2游戏内模拟对应功能——第1部分:前期调研

    USB HID 原理学习 USB 人机接口设备(HID)的工作机制,了解如何让 Arduino(建议选用自带 USB HID 功能的开发板,如 Arduino Leonardo 或 Pro Micro)...USB HID 描述符USB HID 协议简介HID 协议允许设备(例如键盘、鼠标、游戏控制器)通过统一的协议与电脑通信。...原生 USB HID 支持的重要性原生 USB HID 设备要让设备在 Windows 的“设备和打印机”中显示为游戏控制器,需要能通过 USB 协议提供符合 HID 规范的报告。...确实没有 USB HID 功能。...USB HID 协议依赖于:USB PHY(物理接口电路)USB 控制器(硬件模块,负责发送 HID 报文)可配置 USB 描述符的固件栈(支持 HID 类)STC89C52RC 全部都没有:❌ 没有

    1.7K10

    原创 Paper | USB设备开发:从入门到实践指南(一)

    ,还包含了接口描述符,端点描述符,并且因为USB键盘注册的是一个USB HID设备,所以在配置描述符中还包含着HID描述符,如图14所示: 图14:Wireshark中查看配置描述符 使用USB Tree...├── hid.usb0 -> ../../../../usb_gadget/g1/functions/hid.usb0 │?? ├── MaxPower │??...2.1.6 HID报告描述符 当USB主机通过接口描述符得知USB设备是USB HID设备时,将会再获取HID报告描述符,在USBPcap中捕获到的HID报告描述符如图21所示: 图21:Wireshark...报告描述符来源于Linux内核示例,如图22所示: 图22:Linux USB HID gadget 驱动文档 所以下一步我们需要能顺利阅读HID报告描述符,可以参考官方文档,官方文档的优点是内容齐全,...在大致了解了如何向USB主机发送数据后,再来看看HID的报告描述符: static struct hidg_func_descriptor my_hid_data = { .subclass

    3.2K00

    基于STM32CUBE的USB鼠标键盘二合一

    看来你们对USB兴趣一般,所以这次我把它放在次条。感兴趣的就看一眼,没兴趣的就算了。 前面两篇文章分别说了如何实现基于STM32的USB鼠标和基于STM32的USB键盘。...这篇文章,我们试着同时在一个USB设备上,实现USB的鼠标与键盘二合一。花一份的钱,实现两样东西,它不香吗? 这里要说一下,实现鼠标键盘二合一的功能,方法有多种,这里只说其中一种。...第二,修改usbd_hid.c中的配置集合(USBD_HID_CfgFSDesc)。如下图所示,框住的地方是个宏定义。配置集合的长度,由之前的34,变为41. ? 端点个数,由1变成2..../*bInterval: Polling Interval */ 第三,修改HID描述符中,报告描述符的长度: ?...向USB主机发送数据的时候,数组的第一个元素是报告ID,后面才是键盘数据或鼠标数据。实现前面两节的例程的时候,USB键盘我们定义了一个8元素的数组,USB鼠标我们定义了一个4元素的数组。

    3.1K41
    领券