Bri*_*ore 11 drivers usb scsi kali-linux
我正在尝试将原始数据写入连接到我的计算机的 USB 设备。我正在使用 Kali Linux,我找到了正确的文件路径: "/dev/usb/003/013" 。但是,当我尝试向其中写入数据时,出现错误。
root@kali:~/usb# printf "test" > /dev/bus/usb/003/013
bash: printf: write error: Invalid argument
Run Code Online (Sandbox Code Playgroud)
我也试过用猫:
root@kali:~/usb# cat test > /dev/bus/usb/003/013
cat: write error: Invalid argument
Run Code Online (Sandbox Code Playgroud)
在前一种情况下,文件“test”确实存在并且其中包含数据。似乎系统无法写入文件描述符,即使它在那里。
经过研究,我得出的结论是,您要么:
A. 需要一个可以与设备连接的 USB 驱动程序。
B. 使用 SCSI Pass Through 将数据直接写入设备上的端点。
我是 USB 编程的新手,虽然我很想尝试,但我以前从未编写过驱动程序。任何建议或帮助将不胜感激。
是否可以像我最初尝试的那样将原始数据写入设备?如果没有,你能解释一些可供我使用的选项吗?
Edw*_*alk 19
USB 设备远比您读写的简单管道复杂得多。您必须编写代码来操作它们。您不需要编写内核驱动程序。请参阅http://libusb.info (née libusb.org) 和http://libusb.sourceforge.net/api-1.0。这声称适用于 Linux、OSX、Windows、Android、OpenBSD 等。在 Mac OS X 下,I/O Kit中有用户级功能可以让您访问 USB。在 Windows 下,您也许可以使用 WinUSB,但它很复杂。
这是我曾经画过的一张小图,帮助我理解USB的架构:
??????????????????????????????????????
???????? ? device ??????? ??????????? ?
? Port ???? ? ??? EP0 ???? control ? ?
???????? ? ? ?????????? ? ??????? ??????????? ?
??????addr = 2??? ??????? ? ? ?
? ? ?????????? ??? EP1 ????interface? ?
? ? ? ??????? ? #0 ? ?
? ? ? ??????? ??????????? ?
? ? ??? EP2 ???? ? ?
? ? ? ??????? ?interface? ?
? ? ? ??????? ? #1 ? ?
? ? ??? EP3 ???? ? ?
? ? ??????? ??????????? ?
? ??????????????????????????????????????
?
?
:
Run Code Online (Sandbox Code Playgroud)
执行摘要:每个设备都有一个地址(由 O/S 分配,可能会更改),最多(我认为)32 个端点。
设备内有一个或多个“接口”。例如,网络摄像头可能提供“摄像头”界面和“麦克风”界面。多功能打印机将提供多个接口。
端点 0 用于设备的控制和配置,其他端点用于访问各种接口。每个接口都有零个或多个(通常更多)端点。
端点可以是以下几种传输类型之一:
同样值得注意的是:一个 USB 设备可以有多种配置,这些配置控制哪些接口可用等等。更改设备配置几乎就像拔掉设备并在其位置插入不同的设备。
所有这些信息都放在设备描述符、配置描述符、接口描述符、端点描述符等中,可以通过端点零查询。
(在内部,数据不是字节流,它被打包成数据包,其确切格式是 USB 规范的一部分。在大多数情况下,您无需担心这一点,因为控制器和驱动程序将管理这部分你。)
在实践中,根据您的 API 库和操作系统,您需要检测设备,读取各种描述符以找出您正在处理的内容,可选择设置其配置(如果操作系统允许),打开界面,并打开端点。
对于批量端点,您可以向它们读取和写入原始数据。对于控制传输,API 库将提供函数调用。我从未使用过中断或同步传输;我相信你的 API 库会有相关的文档。
更多信息:“函数”是一组协同工作的接口。它最初不是 USB 规范的一部分,由设备驱动程序决定应该将哪些接口组合在一起。USB 工作组定义了支持功能的设备类。这是通过接口关联描述符 (IAD) 完成的。
归档时间: |
|
查看次数: |
20469 次 |
最近记录: |