win10下PyUSB访问USB驱动

news2024/9/23 3:28:47

目录

一、安装pyusb

二、下载工具zadig

三、确认目标USB设备

四、为目标设备安装USB驱动

五、测试代码

六、小结

1. 关于环境搭建

2. 关于总线上的数据


环境:

Win10专业版+Python3.8.7

一、安装pyusb

命令

pip install pyusb

二、下载工具zadig

Zadig是一个图形化工具,可以为USB设备一键选择所需安装的所有驱动。

下载链接:Zadig - USB driver installation made easy (akeo.ie)

下载得到的应该是一个可执行文件zadig-2.7.exe

三、确认目标USB设备

设备管理器中的目标USB设备应该是“其他设备”,且驱动应该是没有在安装的。

四、为目标设备安装USB驱动

双击打开zadig-2.7.exe,选中目标设备,可核对设备名称以及设备PID和VID。

单击“Install Driver”

安装中

安装结束,关闭对话框即可。

 这时候PC上的USB设备状态发生了改变

 

五、测试代码

USB设备有两个端点,且属于Bulk端点,端点描述符如下:

===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0200 = 0x200 max bytes
bInterval:                         0x00


===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x03  -> Direction: OUT - EndpointID: 3
bmAttributes:                      0x02  -> Bulk Transfer Type
wMaxPacketSize:                  0x0200 = 0x200 max bytes
bInterval:                         0x00

要进行数据通信,需要关注三个字段:(1)端点号(2)端点类型(3)端点最大包长

文件:bulk_ep_wr.py

#!/usr/bin/python
# -*- coding:utf-8 -*- 
import usb.util
import sys

dev =  usb.core.find(idVendor= 0x0000, idProduct= 0xFF00)
if dev is None:
    raise ValueError('Device not found')
#print(dev) #USB设备的枚举信息

#设备配置,使能端点
dev.set_configuration()

#定义端点写函数
def write_bulk_out_ep(data):
        while(True):  
            try:
                data = dev.write(0x03, data, 1000)  #write(endpoint, data, timeout = None)
                print(data)
                break
            except Exception as e:
                print(e)
	
#定义端点读写函数		
def read_bulk_in_ep(len):
        while(True):  
            try:
                data = dev.read(0x82, len, 3000)  #read(endpoint, size_or_buffer, timeout = None)
                print(data)
                break
            except Exception as e:
                print(e)

#数据写测试	
data = [0x02] * 512
write_bulk_out_ep(data)

#数据读测试
#read_bulk_in_ep(512)

脚本的功能就是数据读写,即往OUT端点写512个字节,从IN端点中读出512字节。

数据通信设计USB协议内容,USB硬件端点FIFO要被数据接收方读走(且读完)才能继续进行下一笔数据通信,可以理解为Device与Host之间的数据传输是同步操作的。比如:HOST往OUT端点写一笔512字节的数据,Device要先读走,否则Host无法发出下一笔。

总线上数据如下:

 

六、小结

1. 关于环境搭建

单独安装libusb-win32没法解决问题,会有如下错误:

usb.core.USBError: [Errno 2] Entity not found

或者:

permission denied 等等错误。

这是因为,除了libusb-win32还需要安装libusbK等库,我们可以看zadig安装了哪一些:

 所以单独去安装这些东西,就会有各种各样的问题(漏安装,版本不兼容等),最好的做法就是直接使用zadig一次性安装完毕。

2. 关于总线上的数据

Bushound工具可以下发数据,但是没法读数据。包括一些大型的协议分析仪设备,当HOST端读走IN端点FIFO里面的数据后,总线上才能抓到数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69162.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计Django疫情背景下社区互助服务系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数据库索引分裂 问题分析

1、背景描述&#xff1a; 某客户反馈在 18 点 30 分左右出现性能问题&#xff0c;活动会话飙升&#xff0c;业务卡顿。 2、问题分析 通过awr 可以看到大量的索引分裂等待&#xff0c;和并发的事务槽等待&#xff0c;事务槽的并发等待是由于索引分裂阻塞大量会话导致的并发加剧…

测试gitlab-runner

上一篇&#xff1a;Docker安装Gitlab-ruuner_素心如月桠的博客-CSDN博客https://blog.csdn.net/m0_47010003/article/details/127997515 总结&#xff1a; 上一篇中操作到&#xff1a; &#x1f4cc;安装了gitlab-runner&#xff0c;在gitlab中创建一个项目&#xff08;testci&…

Java匿名内部类

Java匿名内部类\huge{Java匿名内部类}Java匿名内部类 匿名内部类 ①. 概念&#xff08;定义&#xff09; 通俗一点来讲匿名内部类就是没有名字的局部内部类。 注意这里的两点&#xff1a; 没有名字局部内部类 ②. 作用 方便创建子类的对象&#xff0c;最终的目的是简化代…

Linux内核Hook系统调用execve

在Linux系统中&#xff0c;用户层程序无法直接控制系统内核&#xff0c;只能通过系统调用。 一般调用顺序为: 用户进程->execve()->syscall()->stub_execve()->sys_execve()-> do_execve()..... 本文章使用的是国产uos-Linux&#xff0c;内核为 4.19.0-amd64-…

数组实现单链表和双链表

全文目录&#x1f600; 数组实现的优势&#x1f914; 单链表&#x1f615; 初始化&#x1f615; 头插&#x1f615; 在下标 k 后面插入元素&#x1f615; 删除下标 k 后面的元素&#x1f615; 遍历&#x1f635;‍&#x1f4ab; 双链表&#x1f928; 初始化&#x1f928; 插入&…

利用Python自制一个批量图片水印添加器

前段时间写了个比较简单的批量水印添加的python实现方式&#xff0c;将某个文件夹下面的图片全部添加上水印。 今天正好有时间就做了一个UI应用的封装&#xff0c;这样不需要知道python直接下载exe的应用程序使用即可。 下面主要来介绍一下实现过程。 首先&#xff0c;还是老…

WebDAV之葫芦儿·派盘 + PDF Expert

PDF Expert 支持WebDAV方式连接葫芦儿派盘。 推荐一款备受称赞的PDF阅读工具PDF Expert,一款超简单的PDF编辑器。 PDF Expert是一款macOS上的办公软件,它具有专业的PDF编辑功能,可以快速从邮件、网页支持PDF打开,支持用户进行阅读、批注等功能,用户可以直接在PDF上进行…

机器学习10线性回归法Linear Regression

文章目录一、线性回归算法简介二、简单线性回归的实现三、向量化运算四、衡量线性回归法的指标&#xff0c;MSE,RMS,MAEMSE均方误差&#xff08;Mean Squared Error&#xff09;RSE均方误差&#xff08;Root Mean Squared Error&#xff09;平均绝对误差MAE&#xff08;Mean Ab…

在职场,如何克服拖延症?

在职场&#xff0c;你遇见过这样的情况吗&#xff1a;领导让你写一份方案&#xff0c;你一拖再拖&#xff0c;直到最后一天才打开电脑。 这就是拖延症的表现。很多人做一件事常常拖到截止时间的临界点&#xff0c;才被压力所迫开始做事。 也有的人是因为觉得自己解决不了事情&…

PXE + Kickstart 服务器批量安装Linux系统

一、无人值守安装服务 使用光盘镜像来安装Linux系统的方法,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用PXE + TFTP +HTTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人…

vue中提示框 this.$confirm如何让提示框换行

let confirmText [案件号为response.businessInformation.claimNo, 点击确认跳转到查勘继续操作该案件,点击取消跳转到新建赔案查询页面] const newDatas [] const h this.$createElement for (const i in confirmText) { newDatas.pu…

「Whale 帷幄」SpaceSight 产品升级 | 打造门店数智化未来

11月&#xff0c;「帷幄数智空间 Whale SpaceSight」迎来新的功能更新&#xff0c;一起来看一看&#xff0c;它将为您的门店数字化带来哪些强大助力。 我们将通过三篇系列文章&#xff0c;为您介绍 SpaceSight 在出入口客流分析、店内客流分析、门店巡检三大场景下&#xff0c;…

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

HTML学生中秋节日网页设计模板 DIV布局大学生中秋节网页作业制作 八月十五中秋静态网页成品代码下载 中秋节日网页设计作品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Laravel Valet - macOS 极简主义者的开发环境

1. Lar**el Valet 介绍2. Lar**el Valet 安装3. 测试 Lar**el Valet4. PHP 版本5. 服务站点6. 定制 Valet 驱动7. Valet 常用命令 1. Lar**el Valet 介绍 Lar**el Valet 是 macOS 极简主义者的开发环境。Lar**el Valet 将您的 mac 配置为在您的机器启动时始终在后台运行 Nginx&…

超实用的日志分析工具——Flightplot,你不会还没用过吧

在上一篇文章中已经为大家介绍过Flight Review分析日志工具的具体使用&#xff0c;但是该工具在使用过程中难免存在一些问题&#xff0c;例如&#xff1a;Flight Review工具需要在线浏览&#xff0c;很多时候受制于电脑网络延迟等问题&#xff0c;导致日志信息加载失败&#xf…

win11摄像头黑了用不了的七个解决办法

目录 前言必读 方法一、重置和隐式设置摄像头 方法二、更新windwos驱动 方法三、检查串行总线控制器 方法四、下载驱动精灵来安装驱动 方法五、驱动精灵里面修复 方法六、检查键盘上面有没有物理摄像头按键 方法七、使用万能摄像头 前言必读 读者手册&#xff08;必读&…

职场经验:为什么要学习自动化测试?过来人告诉你答案

学习自动化这个想法&#xff0c;其实自己在心里已经琢磨了很久&#xff0c;就是一直没付诸实践&#xff0c;觉得现在手工测试已经能满足当前的工作需要&#xff0c;不想浪费时间去学习新的东西&#xff0c;有点时间还不如刷刷视频、看看小说等。 为什么要进行自动化测试&#x…

大量节省实施解决方案的时间和成本——AI vision生态系统

AI Vision是一款对用户友好的工具包 基于AI图像处理可以提高各个行业中的竞争力&#xff0c;已经测试并实现应用的用户无不惊讶于这一系统的速度以及出色成效。但不幸的是&#xff0c;AI Vision尚未得到全面评估&#xff0c;可以理解为黑盒&#xff0c;它不像制造商常常声称的…