python - 由于权限原因,无法使用 libusb 读取 USB 字符串描述符

标签 python libusb pyusb

我只是不能做读取字符串描述符这样的简单事情。这是使用 pyusb 包装器的简单代码(只是为了简化代码),但即使使用 le libsub 原始库,问题仍然存在。

import usb.core
import usb.util
devs = usb.core.find(find_all=True)
for dev in devs:
    try:
        print usb.util.get_string(dev, 255, dev.iManufacturer)
    except usb.core.USBError:
        pass

如果我在没有 root 权限的情况下执行此操作,我什么也得不到(所有循环迭代都会引发异常)。如果我使用 root 权限执行,我会得到一些字符串描述符和一些异常。在这种情况下,我知道异常是正常的,因为管道错误意味着设备不提供任何字符串描述符。

问题是:如何在没有 root 权限的情况下获取字符串描述符?命令lsusb检索所有信息,并且在没有启用suid位的情况下执行此操作。

最佳答案

我也遇到这个问题了。看来 pyusb 默认情况下会以读写方式打开设备,而 lsusb 会以只读方式打开设备,如 $ strace lsusb 摘录所示:

...
open("/sys/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1:1.0/uevent", O_RDONLY|O_CLOEXEC) = 6
...

我通过使所有 USB 设备都可读写来解决了这个问题,但从安全角度来看(键盘记录器等)这绝对不是最佳选择...

关于python - 由于权限原因,无法使用 libusb 读取 USB 字符串描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695338/

相关文章:

python - 点亮大容量存储器的 LED

c++ - 如何将成员函数指针传递给 libusb?

python - PyUSB 无法识别特定的 USB 设备

python - Python中的凸包区域?

python - Python 是否有更简洁的方式来表达 "if x contains a|b|c|d..."?

c# - 如何在 Linux 中使用 libusb 获取设备路径

linux - 使用 libusb 从设备读取问题

python - PyUSB 1.0 : NotImplementedError: Operation not supported or unimplemented on this platform

python - 使用 BeautifulSoup 解析 HTML 和复杂的表格

python - Beautiful Soup - 选择没有类的下一个跨度元素的文本