展开

关键词

带你遨游USB世界

本文将从USB协议、枚举流、host和device驱动等各方面,全面介绍Linux USB模块的工作原理和代码流,下面就请随我一起,遨游多姿多彩而又复杂严谨的USB世界吧~2、USB传输基础知识介绍 2.1.2、NRZI码?USB采用差分信号传输,使用的是如上图所示的NRZI码方式:数据为0时,电平翻转;数据为1时,电平不翻转。 从Device侧看,UDC驱动序直接访问硬件,控制USB设备和主机间的底层通信。Gadget API是UDC驱动序回调函数的包装。Gadget Driver具体控制USB设备功能的实现。 3.3、枚举过数据流抓取用Bus Hound抓取的枚举过数据流,device侧USB配置(功能组合)为mtp+adb数据示意图如下:? kernel的译配置。

43820

13.USB驱动

既然还没有驱动序,为何能知道是android phone 答1. windows里已经有了USB的总线驱动序,接入USB设备后,是总线驱动序知道你是android phone 提示你安装的是设备驱动USB总线驱动序负责:识别USB设备, 给USB设备找到对应的驱动序问2. 每一个USB设备接入PC时,USB总线驱动序都会给它分配一个号 接在USB总线上的每一个USB设备都有自己的号(地址) PC机想访问某个USB设备时,发出的命令都含有对应的号(地址)问4. USB设备刚接入PC时,还没有号;那么PC怎么把分配的号告诉它? 答4. 新接入的USB设备的默认号是0,在未分配新号前,PC使用0号和它通信。问5. 比如鼠标的数据是从鼠标传到PC机, 对应的端点称为输入端点6.USB总线驱动序的作用 a. 识别USB设备 b. 查找并安装对应的设备驱动序 c.

12020
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

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

    FPGA开发板剁手,学生狗省钱大法丨吐血资源

    板载PIC18F支持使用仅限Windows的配置实用序通过USB对闪存进行。 它提供30个5V耐压IO接口,9个其他IO接口,一个8通道,200 Ksps ADC,4个LED,一个开关,4 Mb SRAM,以及通过USB(带有Windows应用序)。 ,8个开关,4个按钮,8个LED,4个7段显示器和板载USB器。 Lattice名称价格设备笔记TinyFPGA A1A2$1218XO2-256120021个IO,JTAG (USB-JTAG器价格$9) 。可插面包板,开源设计。 ,四个按键,10个开关,11个LED,6个7段显示器,加速度计,USB串口,以及USB器。

    69000

    全速USB和高速USB的识别过分析

    图1 全速USB设备的连接? 图2 低速USB设备的连接3 高速USB的识别USB全速低速识别相当简单,但USB2.0,USB1.x就一对数据线,不能像全速低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度:高速。 图3 高速USB的协商过hub检测到有设备插入上电时,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。 图5 示波器截取的高速USB协商过2测量了一个chirp J的宽度:43.5us。? 图6 示波器截取的高速USB协商过3最后附上一张来自Don Anderson的USB System Architecture里的USB HS接口图:?

    51520

    19.Linux-USB总线驱动分析

    如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动序?为什么一插上就有会提示信息? 是因为windows自带了USB总线驱动序,USB总线驱动序负责:识别USB设备,给USB设备找到对应的驱动序新接入的USB设备的默认地址(号)是0,在未分配新号前,PC主机使用0地址和它通信 然后USB总线驱动序都会给它分配一个地址(号)PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(号)USB是一种主从结构。 PC机, 对应的端点称为中断输入端点 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过同样linux内核也自带了USB总线驱动序,框架如下:? 来匹配该USB设备USB总线驱动序大概流就此结束,未完待续——分析完后下节开始写USB驱动

    1.9K80

    【专题教第8期】基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现

    Win32 API写的软件,最大的好处就是微软的各个系统版本都兼容,而且发布时软件比较小,仅仅一个exe小软件。3、无需用户自己USB BULK驱动序,详情见教中1.4小节说明即可。 3、上位机是用的VC6.0实现的,测试上位机时,只有打开 USB 连接成功了才可以正常操作其它几个按钮。4、配套的下位机是基于RTX及其USB中间件实现的,推荐使用 MDK4.74 进行译。 上位机例 上位机正式版.rar 下位机例STM32-V4开发板: V4-USB Bulk批量传输下位机例.rarSTM32-V5开发板: V5-USB Bulk批量传输下位机例.rarSTM32 -V6开发板: V6-USB Bulk批量传输下位机例.rar exe小软件: USB BULK上位机.exe Win32写的小软件,简单易用 ? USB上位机教文档: 专题教第8期:基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现.pdf 教目录: ?

    54320

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

    2.特点1).简单易用的脚本语言USB 橡皮鸭所使用的脚本语言Duckyscript简单易用,写payload并不需要任何经验。 4).活跃的交流社区USB RUBBER DUCKY拥有自己社区版固件、码器以及工具箱,具有良好的交流沟通平台: https:forums.hak5.orgindex.php? Teensy是一套完整的基于USB微控制器的开发系统,在占用极少资源的情况下可以实现多种多样的项目。所有的都是通过USB端口进行的。 不需要特殊的器,只需要一个标准的Mini-B USB线缆、一台带有USB口的PC机或Macintosh机。 主要特点:①可以变身为任意类型的设备②AVR处理器,16 MHz③单按钮④易于使用的Teensy Loader应用序⑤免费软件开发工具⑥兼容Mac OS X,Linux和Windows⑦便携,许多项目的完美支持

    1.1K100

    解密BadUSB:世界上最邪恶的USB外设

    一个设备可以被识别为多种类型):‍‍*一个设备通过一个描述符标明它的功能;*一个设备可以拥有多个描述符,如果它支持多种设备类别,例如网络摄像头+麦克风;*设备可以注销,然后再次注册为一个不同的设备;‍‍可重复的外设‍‍ 注:在LinuxUnix操作系统,LD_PRELOAD是一个环境变量,可以影响序的运行时的链接(Runtimelinker),设置在序运行前优先加载的动态链接库。 一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的序注入恶意序,从而达到那不可告人的罪恶的目的。‍‍‍‍2. USB引导扇区病毒‍‍‍?5. 攻击方式总结‍‍‍?防护以及下一步‍‍‍‍1. 防护对策及缺陷‍‍?‍‍‍‍2. USB外设的可重复也有积极的用途‍‍‍‍?总结‍‍? 以上内容主要源自SRLabs在2014年黑帽子大会上的演讲稿,仅对内容的排做了调整,原稿的下载地址https:srlabs.deblogwp-contentuploads201407SRLabs-BadUSB-BlackHat-v1

    44280

    Deepin(Linux)下实现Android投屏

    因此在这里简单记录配置过,方便后用。项目源码:Scrcpy的GitHub简单说明Scripe支持桌面全平台。 配置过官方没有为Deepin的Debian提供安装包,因此需要自己通过源码译。 第三步:将源码解压后右键在终端打开第四步:译安装软件译:meson x --buildtype release --strip -Db_lto=truecd xninja说明:我个人在这一步出现了问题导致译失败 ,后期抽时间再译一次再补充。 在我使用过中我发现,使用wifi连接后如果直接使用usb链接就无法使用,需要开关usb调试。另外如果连接着usb线也无法进行wifi链接。

    1.1K30

    Ubuntu 14.04下超级终端Minicom连接ARM

    :http:blog.csdn.netxiaobin_hlj80articledetails47192201笔者的毕业设计涉及在ARM板中运行OpenCV进行识别的部分,所以最近一直在学习嵌入式和交叉译的内容 昨天解决了交叉译的实现,今天就想尝试将交叉译的库放置于ARM板中并运行先前译出的可执行文件test,果然出了问题…… 笔者使用的ARM开发板是迅为公司的iMX6Q开发板,该公司使用的开发环境是在Windows 连接注:笔者在执行下述操作过中,并没有对ARM板上电。 在插上USB接口前后,分别执行同样的指令如下:dmesg | grep usb没有插上USB与插上USB,执行该指令的结果如下所示: ?? 此时选择Exit,即可进入Minicom序。

    57560

    使用SCPI指令对通信端口(RS232USBGPIBLAN)进行仪器

    本软件是基于NI-VISAVISA32(Virtual Instrument Software Architecture)的仪器,支持RS232、USB、GPIB及LAN通信的SCPI仪器。 软件下载地址:点击此处下载或者到NI官方网站(http:www.ni.com)下载最新的VISA-Runtime三、通过RS232、USB、GPIB及LAN并使用SCPI指令对仪器进行通信,如下图:? 五、其他RS232:支持常见的RS232串口,一般地址为“ASRL1::INSTR”USB:支持常见的USB接口,一般地址类似为“USB0::0x2A8D::0x0101::MY57501899 ::INSTR”GPIB:支持常见的USB接口,一般地址类似为“GPIB0::0x2A8D::0x0101::MY57501899::INSTR” 此处要求安装GPIB卡驱动序,推荐使用NI-GPIB 卡(需要驱动序,驱动序可以从NI官方网站下载)LAN:支持常见的USB接口,一般地址类似为“TCPIP0::34465A-01899::inst0::INSTR”或“TCPIP0::192.168.0.26

    1.4K00

    FPGA和USB3.0通信-硬件的测试

    译固件本节测试固件代码来源:❝C:Program Files (x86)CypressEZ-USB FX3 SDK1.3firmwarebasic_examplescyfxbulklpautoenum 在Project Explore下会出现新导入的工,选中该工并右击,弹出的菜单中选择Build Project对工进行译。 此时在工目录下会生成一个Debug的文件夹,文件夹下面就生成了我们需要的固件,如下:接下来,根据自己的硬件选择从USB引导。插上USB,就可以在设备管理器上看到FX3设备。 选择在上一节基础上生成的固件(Debug文件夹下):在上面操作没问题的情况 下:工作窗口中原先的Cypress USB BootLoader就了我们下载固件的名字(Cypress USB BulkLoopExample ❞译固件过同上一节基本不变:下载固件下载固件也基本不变,选择的文件是刚刚译出来的固件:工作窗口中原先的Cypress USB BootLoader就了我们下载固件的名字(Cypress USB

    6620

    使用python开发usb的两种方式(windriver与pyusb)

    实际的数据传输流如下: python usb dll(through ctypes) windriver usb device 由于dll文件是在win7机器上译的,故仅能在win7上使用,在win10 完整的WinDriver开发流应该从驱动开始,使用CC++调用WinDriver提供的库与usb device通信,将此译为dll供其他序调用。 将usb device连接上电脑,使用WinDriver给设备安装驱动。 在python中使用ctypes调用上文中的dll,完成调用过。 pyusb的数据传输流如下: python pyusb pyusb backend usb device 很明显可以看出省略了dll,大大减少了代码量。 写python脚本,可以参考官方教 缺点: windriver有一个可视化的调试工具,可以单独发送接收数据以确定usb device是否正常,pyusb暂时没有找到。

    5.1K20

    USB通信基础知识

    允许的最大层数为6层(出去主机);每层的电缆最大长度为5米,电缆总长度为30米;每层最大允许接5个DEVICE(设备);3 USB系统序 1. 应用序:应用序运行与USB设备所连接的主机上。 部分应用序会由操作系统的主机提供,大部分应用序由USB设备供应商提供。 2. 驱动序:驱动序服务于特定的操作系统,为USB设备提供支持。 驱动序通常由操作系统提供,独立于特定的应用序和USB设备。 3. 主机端控制序:包括硬件和软件,使USB设备能够被主机识别。4 USB速度选择 全速模式是在D+线上上拉1.5K的电阻。 6.2 信号层6.2.1设备速度的检测6.2.2 信号的USB中的数据采用反向不归零码方式(NRZI:none-return to zero inverted),并对D+和D-线所处的不同状态定义成 数据状态D+D-低速J状态01低速K状态10 数据的码解码(反向不归零码) 说明:遇到0的边沿进行状态改变,如果是1保持原有状态 注:在数据进行NRZI码前,每6个连续的1信号之后都会插入一个0信号

    11310

    手把手教你视频监控之 MJPG-Streamer 方案

    的教,都可以做此实验。 硬件要求:imx6ull开发板、一款USB摄像头。软件要求:ubuntu虚拟机、需要会搭建tftp和nfs环境、需要会buildroot译根文件系统、需要会译Linux内核。 保存一下配置,然后译。注意不要用正点原子原版译脚本译,他会采用deconfig,会把你的配置取消。 一开始教中,我们已经在 buildroot 中打开了MJPG-Streamer,译出根文件系统后,此时的根文件系统rootfs已经包含了MJPG-Streamer软件。 这时候按照韦东山老师的视频教操作即可。感性的解释下什么叫UVC:在windows下,一个USB摄像头插入电脑主机,会自动加载驱动序,一般都没问题。

    18630

    面向对象的C语言

    大家在学C、C++ 的时候,老师多半会讲过:C语言是面向过语言,C++是面向对象的语言。但归根结底,面向过还是面向对象,这是思想的差异,而不是语言的差异。 笔者当年的第一份工作,维护BPLA(北洋打印机指令集)SDK,其中重要的一项工作是,通过串口、并口、usb、网络等软硬件接口,发送控制指令。 disconnect; p_func_send_cmd send_cmd;}; 然后创建modules文件,并在此文件夹下,创建了usb.c、com.c、driver.c、network.c,分别对应USB void disconnect() { printf(disconnect by usbn);} static void send_cmd(char *cmd) { printf(send cmd by usb : %sn, cmd);} const struct interface usb = { usb, connect, disconnect, send_cmd}; 为了让这些“类”用起来更优雅些,笔者在

    15120

    这年头真的还有USB设备是安全的吗?

    “这是一款中国造的电子烟,充电装置部分包含了硬件码的恶意序。”而这款电子烟是通过USB口充电的,这名高管为了充电,顺手会将其插入到公司的电脑上,于是电脑就感染了恶意序。 Nohl和Lell花了好几个月的时间进行逆向工,他们发现许多U盘都可以对固件部分进行重新(尤其是PHISON群联的主控芯片)。用户根本就看不到固件部分,要隐藏攻击代码自然就非常容易了。? ,计算机上的恶意序就能够对U盘固件进行重新写,U盘主人根本就不会察觉到。 由此甚至可以引发一个问题:USB设备是否已经到了根本就没有安全性可言的地步??其实也不尽然,针对U盘固件,引入不可伪造加密签名机制就是种方案,杜绝恶意序的重新写。 的确有部分USB主控芯片对BadUSB免疫——即无法对固件做重新,免疫的芯片占到抽样总数的一半,但每个品牌的表现都是很不稳定的。

    55980

    基于STM32CubeMX的USB鼠标例

    这次给大家演示一下如何用STM32CUBE的配置,自动生成一个USB鼠标的过。这里多说一句,USB是一套比较复杂的协议,单靠一两个例是不可能完全理解的。 VID和PID分别代表厂商(Vender )号和产品(PID)号,VID不能随便用,要花钱向USB协会申请,所以这里仅供学习使用。PID还好,由厂商自己定义。 8 生成工名称和路径,不用说了,那个是基本的。主要是框住的这两个位置,根据你的代码习惯和译器(KEIL还是IAR)来进行选择。?9 修改代码 打开工,找到main.c,添加一些代码。 其实,你可以理解为,这是官方提供给我们的一个鼠标例。这里简单说下USB设备上电的过:1、设备插入后,USB主机自动对设备进行复位,使设备地址为零。 总结起来,就是个发送数据的过。 还是那句话,USB协议比较复杂,只靠一两篇文章是学不会的。例我放到了后台,回复关键词:USB鼠标例,即可获取下载链接。 打完收工,睡觉去了!?

    30920

    基于FPGA的USB接口控制器设计(VHDL)(下)

    第三篇内容摘要:本篇会介绍FPGA 固件开发,包括固件模块划分、自定义包写、分频器模块的实现、沿控制模块的实现、输入输出切换模块的实现、请求处理模块的实现、设备收发器模块的实现、测试平台的写;USB 驱动和软件开发,包括USB 驱动写、USB 软件写以及总结等相关内容。? 6.1 固件模块划分在本例中,固件开发指的就是 FPGA 开发,也就是使用硬件描述语言(VHDL 或者 VerilogHDL)写 FPGA 内部序。 模块划分完毕之后就可以使用 ISE 创建工了,然后就各个模块分别写实现代码和测试平台,最后将所有模块整合起来作为一个实体并且对其进行仿真、测试,这样就是一次完整的FPGA 开发过。 ISE 14.7 安装教及详细说明?6.2 自定义包写在实际实现各个模块功能之前,首先需要写两个自定义包,分别是 USB 包和 PDIUSBD12包。

    24420

    穿透内网防线,USB自动渗透手法总结

    图5 插入USB设备后自动运行示例序演示视频至此,将制作好的USB插入设置有光盘自动播放的主机上便会自动运行该USB中的exe文件,这个原理就是将USB伪装成一个光盘从而能够实现autorun的功能, 通过以上我们也可以思考既然键盘、鼠标这些设备都是通过USB接口与计算机进行通讯的,那么我们使用的U盘可不可以模拟成鼠标或者键盘,BadUSB就是通过对U盘的固件进行逆向重新,使U盘伪装成一个USB键盘 那么我们通过某宝购买的一个固件可USB模拟攻击者的操作使大家对这种攻击方式有一个大体了解:1. 首先我们需要下载开发软件,这里我使用的是Arduino。?图6 开发软件主界面2. 自己写payload或者到指定的网站下载现成的payload,在此我们写一个窃取wifi密码然后发送到指定ftp服务器的序。?图7 代码部分展示3. 创建任意一个控制面板序的快捷方式并使用二进制辑工具辑好指定字段的内容,此次我们使用键盘的快捷方式为例进行文件构造,将偏移为0x7A到0x7D的二进制数据xx FF FF FF修改为00 00 00

    43470

    相关产品

    • FPGA 云服务器

      FPGA 云服务器

      腾讯FPGA云服务器是基于FPGA硬件可编程加速的弹性计算服务,您只需几分钟就可以获取并部署您的FPGA实例。结合IP市场提供的图片,视频,基因等相关领域的计算解决方案,提供无与伦比的计算加速能力……

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券