由于权限,无法使用libusb读取usb字符串描述符

时间:2013-09-09 09:34:08

标签: 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位的情况下执行它。

1 个答案:

答案 0 :(得分:1)

我也遇到了这个问题。似乎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设备都可读/写,解决了这个问题,但从安全角度来看,这绝对不是最佳选择(键盘记录器等)......