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描述符、类请求代码以及供查询的消息数据等 中断输入 必须 传输从设备到主机的输入数据 中断输出 可选
本文将深入探讨SSH的内置USB HID支持及其对用户和管理员的益处。 USB HID简介 USB HID是指通过USB接口连接的人机接口设备,例如键盘、鼠标和安全密钥。...在安全领域,USB HID设备通常用于存储和处理身份验证信息,如数字签名和加密密钥。 SSH的内置USB HID支持 SSH协议内置的USB HID支持允许用户使用USB安全密钥进行身份验证。...跨平台性: 无论是Windows、Linux还是macOS,SSH的内置USB HID支持都能够提供稳定、可靠的身份验证服务。...总结 SSH的内置USB HID支持为用户和管理员提供了一个简单、安全的身份验证解决方案。...随着安全需求的不断增加,利用SSH和USB HID技术的身份验证方案将会得到更广泛的应用。
现在越来越多的电子设备采用USB接口进行通讯,通讯标准也在逐步提高。那么,我们就会好奇这些设备是如何工作的?而无论你是一个硬件黑客,业余爱好者或者只是对它有一点兴趣的,USB对我们都是具有挑战性的。...本文中,我们将向大家介绍怎样通过wireshark捕获usb数据,使用的环境如下: l Wireshark 2.0.1(SVN)l Linux kernel 4.1.6 你也可以用其他版本的wireshark...这种方式下,设备只是简单的将USB用于接受和发射数据,除此之外就再没有其他通讯功能了。 HID是人性化的接口。这一类通讯适用于交互式,有这种功能的设备有:键盘,鼠标,游戏手柄和数字显示设备。...其中使用的最广的不是USB HID 就是USB Memory了。 每一个USB设备(尤其是HID或者Memory)都有一个供应商ID(Vendor Id)和产品识别码(Product Id)。...我们需要给用户足够的权限来获取linux中的usb数据流。我们可以用udev来达到我们的目的。我们需要创建一个用户组usbmon,然后把我们的账户添加到这个组中。
前言 端点在实际的USB通讯过程种的具体作用与含义十分重要,但是有些难以理解,自己整理一些知识作为备忘。 (注:1、文中的EP表示Endpoint; 一、端点概念。...端点(Endpoint),是主机与设备之间通讯数据的接收或来源。主机与设备之间通信时最终会总用于设备上的各个端点,它是主机与设备间通信流的一个逻辑终端。...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。
UT181A是优利德门下旗舰级手持数字万用表,主打数据记录(Data Logging)功能,支持USB联机通讯。基本评测可以看我以前发的文章。...对破译其它联机通讯的设备也有借鉴意义。 可行性分析 UT181A使用了Silicon Labs HID-to-UART接口模块CP2110. 在操作系统里呈现为一个HID设备,这样的好处是不用装驱动。...从USB到HID,再到UART,实际上是隔了两层,需要层层剥壳,还是有点繁琐。Free USB Analyzer的HID解码,是解为键盘/鼠标数据的;也许它的收费版可以解码为UART。 ?...图:用Free USB Analyzer截获UT181A通讯 不过我还有另一条完全不同的思路,也许会更简单。 API Hook 十几年前,我用过这种方法对SCSI设备的通讯进行劫获。...树莓派 在Debian系的Linux上(Ubuntu或树莓派),CP2110都被识别为HID设备,不需要安装驱动即可使用。
Android OTG之USB转串口模块通讯 微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 1.背景简介 我们公司开发了一款室内机平板...2.分析及实现思路 智能门锁的控制是通过使用 433射频(不了解的请百度)来进行通讯的; 平板是没法与智能门锁直接进行通讯,但是厂家提供了一个433通讯模块(支持串口); 而平板(支持OTG)是支持USB...3.主要代码实现 3.1初始化USB转串口模块 由于我们选用的是CH340模块,我们先导入ch340的 jar 包,然后在代码中检查手机/平板是否支持USB HOST模式,如果支持我们就初始化通讯时的相关参数...:波特率、数据位、停止位等,具体的参数看你们之间通讯的协议。...初始化完成之后,我们就可以打开USB进行通讯了,同时初始化完成之后我们需要开启一个读取数据的线程,这样,一旦收到数据或者相应的响应包(一般也叫ACK)我们就可以进行相应的处理了。
0x01 背景知识 HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)攻击的一种。...Badusb也属于HID攻击的一种,在badusb之前还有两种HID攻击分别是teensy和USB RUBBER DUCKY(usb橡皮鸭)。斗哥先介绍以下这三种类型有何不同。...USB RUBBER DUCKY(usb橡皮鸭) USB RUBBER DUCKY简称usb橡皮鸭,是最早的按键注入工具,可根据对应要求定制硬件。...thread-21472-1-1.html; #include //引用键盘库文件 void setup() {//初始化 Keyboard.begin();//开始键盘通讯.../延迟5000毫秒() Keyboard.press(KEY_RETURN); // Keyboard.release(KEY_RETURN); Keyboard.end();//结束键盘通讯
BarCoder Reader 的通讯方式 条码扫描枪基本分为三种接口,分别: 串口(RS232) PS/2 USB 前两种接口串口(RS232)和 PS/2 的条码扫描枪是不需要驱动或软件的。...所以其实大多数条码扫描枪是可以不用安装驱动或软件,只有接口为 USB 串口模式和 USB HID 模式的条码扫描枪才需要安装驱动。...目前市面上有很多 USB HID 的扫码枪,他的工作方式和键盘的输入都是基于 USB HID 协议的。...在本文中,我们将介绍在 Automation Runtime 环境中如何使用USB(HID)的扫码枪读取条码信息。...贝加莱目前主流使用的PLC和PLC触摸屏一体机均包含USB接口,且能无缝支持该通讯设备。
Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...HID core driver [ 0.870736] usb 1-4: new low-speed USB device number 2 using xhci_hcd [ 1.040346...:301A.0001: input,hidraw0: USB HID v1.11 Mouse [PixArt Dell MS116 USB Optical Mouse] on usb-0000:00:14.0.../input4 [ 1.423970] hid-generic 0003:413C:2113.0002: input,hidraw1: USB HID v1.11 Keyboard [Dell
系统的USB gadget驱动,有需要的可以自行查看该部分的源码,位于Linux内核的:linux/drivers/usb/dwc2和linux/drivers/usb/gadget目录下。...18所示: 图18:Linux源码中关于bInterfaceProtocol值的宏定义 2.1.4 端点描述符 端点描述符的结构体定义为于:linux/include/uapi/linux/usb/ch9...2.1.6 HID报告描述符 当USB主机通过接口描述符得知USB设备是USB HID设备时,将会再获取HID报告描述符,在USBPcap中捕获到的HID报告描述符如图21所示: 图21:Wireshark...报告描述符来源于Linux内核示例,如图22所示: 图22:Linux USB HID gadget 驱动文档 所以下一步我们需要能顺利阅读HID报告描述符,可以参考官方文档,官方文档的优点是内容齐全,...通过修改接口描述符字段和HID报告描述符字段,来模拟一个鼠标。 研究一下手柄,讲道理手柄也是使用HID协议,但是Linux的代码里没看到相关定义。 研究非HID协议,比如U盘,网卡,打印机这些。
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
nintendo_hid_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_PROCON...HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_JOYCONL) }, { HID_BLUETOOTH_DEVICE...原装的左右手柄,使用的是HID_BLUETOOTH_DEVICE宏定义,表示匹配的是蓝牙HID协议,并不匹配USB HID协议。...从上面的内容可以知道,如果想要开发Linux下的Switch Pro手柄的客户端,只需要操作eventX文件,并且仔细阅读nintendo_hid_event函数,了解传输数据的数据结构就能实现。...Linux驱动中还未实现,从joydev_event可以看出,Linux的手柄驱动仅支持坐标系和按键功能,所以把支持加速度传感器的手柄给禁用了。
小机做 mass storage+adb 4.1.11 小机做 uvc+uac1 4.1.12 小机做 hid+cdrom 4.1.13 小机做 rndis+adb Linux USB 开发指南 1...1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs.../g1/functions/hid.usb0 echo 512 >/sys/kernel/config/usb_gadget/g1/functions/hid.usb0/report_length echo.../usb_gadget/g1/functions/hid.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/hid.usb0 echo 1 > /sys
所有环节准备就绪了(这次USB主机设备选择的是Linux主机),接下来就可以运行脚本,然后可以在Linux主机上看到以下信息: $ sudo dmesg [91788.951749] usb 3-2:...并且在Linux的源码中发现Swithc手柄的相关驱动:drivers/hid/hid-nintendo.c。 综合上述因素,选择了Switch手柄作为研究的切入点,但最终却发现选错了切入点。...3 hid_nintendo,usbhid,hid_generic 发现ubuntu成功适配到了hid_nintendo驱动,但是却报了一堆的错误,猜测是这些错误导致手柄驱动注册失败,在Linux下能被正常识别的手柄应该像上面的案例一样...另外因为测试使用的Linux是装在Windows上的虚拟机,vmware在Windows上安装了一个USB驱动,来让主机接入虚拟机当中的,可能是同样的BUG导致在Linux系统上也无法正常识别到手柄相关驱动...4 本篇总结 参考资 通过本篇文章,我们了解了如何模拟一个USB鼠标,USB游戏手柄设备,并且可以学习如何对Linux内核中的HID驱动进行修改然后输出相关调试信息。
USB RUBBER DUCKY和Teensy都可用于实施HID模拟攻击,其中USB RUBBER DUCKY入手简单,傻瓜式操作,但价格不菲啊;而Teensy USB性价比比较高,也可用来制作各种酷炫的...这就是为什么会有一个无处不在的USB标准HID或人机接口设备(Human Interface Device)。任何一个宣称是键盘HID的设备都能够被大多数操作系统自动的探测和接入。...Freebuf小科普 HID(Human Interface Device)人机接口设备类别是Windows最早支持的USB类别。...不管是Windows、Linux、Mac还是Android(当然是不算触摸屏了),各个系统平台所遵守的USB标准都是一致的。所以USB RUBBER DUCKY自然而然就具有了跨平台的特点。...主要特点: ①可以变身为任意类型的设备 ②AVR处理器,16 MHz ③单按钮编程 ④易于使用的Teensy Loader应用程序 ⑤免费软件开发工具 ⑥兼容Mac OS X,Linux和Windows
在刚把电脑系统转为linux之后,一直觉得需要通过命令:sudo rmmod psmouse来完成禁用触摸板的操作实在是太不方便了,于是就想着用一个python脚本来完成该操作。...于是在网上找到了pyUSB这个python库,可以轻松的完成对usb设备的操作。...我的整个思路是这样的,首先开机启动一个python程序,不断运行,不停的检查usb设备中是否有usb鼠标的身影,如果有,那么执行上面的那个禁用触摸板的命令,如果没有,就启用触摸板。...关于判断插入usb鼠标的代码已经完成,关于usb设备的必备知识: USB设备分类 USB从设备的分类可以从USB设备接口描述符(Standard Interface Descriptor)对应的的...2-communication device:通讯设备,如电话,moden等等。3-HID:人机交互设备,如键盘,鼠标等。
S7-200的CPU使用的是RS485,PC机有RS232口和USB口,两种接口电气规范不同,需要用中间电路转换成同一接口类型。...现在常用的PC/PPI其实就是一根USB/RS485的匹配电缆。...RS485采用差分的两根A/B线进行通讯,A和B两根线的相对电平来表达0和1,同一时间只能由一个设备驱动总线,其它在总线上的设备此时都处于接收状态。...RS485总线上什么设备、何时可以驱动总线,是由通讯协议(PC/PPI协议通过软件设置)决定的。...USB转RS485代替PC/PPI 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139558.html原文链接:https://javaforall.cn
USB是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,USB就是简写,中文叫通用串行总线。.../usb.h> 4.2 USB设备注册框架示例 #include #include #include //定义...#include #include #include #include ...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static.../init.h> #include #include #include #include <linux/slab.h
键帽规格 HID设备描述符 按键值 HID Usage ID table 文字速查: Key HID Usage HID Usage ID Key HID Usage HID...由于手上没有USB鼠标,对BYTE1的4-7位没有测试,对于BYTE2 BYTE3做个测试,BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向 键盘发送给PC的数据每次8个字节
该工具基于Rust语言开发,并且支持在GNU/Linux上运行。 功能介绍 1、从不受信任的USB设备读取文件(不使用uas、USB_storage和文件系统等内核模块)。...usbsas-analyzer-server $ cargo build --release -p usbsas-tools $ cargo build --release --manifest-path=usbsas-hid.../hid-user/Cargo.toml $ cargo build --release --manifest-path=usbsas-hid/hid-dealer/Cargo.toml 工具使用...内核模式 usbsas最大的一个优势就是在用户空间中运行,因此Linux内核不能有usb_storage和uas模块。...在未设置CONFIG_USB_STORAGE和CONFIG_ USB_UAS的情况下编译内核,或者至少阻止加载此模块,因为如果存在,它们将在插入USB设备时自动加载: $ cat
领取专属 10元无门槛券
手把手带您无忧上云