USB大容量存储BOT
+ -

BOT CBW和CSW的校验

2021-09-29 17 0

Bulk-Only Protocol传输是通过主机向设备发送CBW请求,设备响应CBW返回CSW响应。
Bulk-Only Protocol传输开始是从设备复位(MASS_STORAGE_RESET)之后开始的,设备在接收到CBW请求和主机收到CSW回应后,是需要对CBW和CSW进行拆包解析。

CBW

主机通过CBW向设备发送请求。设备对接收到的每个CBW执行两次验证。首先,设备验证接收到的是有效的CBW。接下来,设备确定CBW内的数据是否有意义。

设备不得以任何方式使用dCBWTag的内容,除非将其值复制到相应CSW的dCSWTag

CBW有效条件

  • 接收CBW的时机是设备返回了一个CSW之后(即完成上一个CBW请求之后)或设备复位(MASS_STORAGE_RESET)之后。
  • CBW的数据总长度为31字节,即0xF1.
  • dCBWSignature的值为43425355h。

CBW有意义条件

  • CBW结构体中的保留位没有被置位,即为0。
  • bCBWLUN包含一个设备支持有效的LUN.
  • bcbwcb的长度和内容都符合bInterfaceSubClass

CSW

设备通常通过CSW传递其尝试满足主机请求的结果。主机对接收到的每个CSW执行两次验证。首先,主机验证接收到的是有效的CSW。接下来,主机确定CSW中的数据是否有意义。

CSW有效条件

  • CSW总数据长度为13字节,即0x0d.
  • dCSWSignature的值为53425355h
  • dCSWTag与相应CBW中的dCBWTag相匹配。

CSW有意义条件

  • bCSWStatus值为00h或01h,且DCSWData残留物小于或等于dCBWDataTransferLength
  • bCSWStatus值为02h。

0 篇笔记 写笔记

BOT 数据传输过程
按照USB规范,Bulk-Only 传输规范是系统也是通过默认管道(地址0 、端点 0 )进行枚举,枚举后重新分配地址,再次枚举。枚举后,实际工作仅仅使用批量( Bulk )端点传送数据 / 命令 / 状态,批量传输方式不受时间限制并能保证数据的完整性。在取得的端点描述符中包含了 Bulk-In 和......
BOT 命令块包CBW
CBW即Command Block Wrapper,命令块包)是从 USB 主机发送到设备的命令包,它由 31 个字节构成,其中包含的命令遵从接口描述表中的 bInterfaceSubClass 域所指定的命令集,一般采用 SCSI 传输命令集。 USB 设备从 CBW 中取出并执行相应命令,......
BOT 命令状态包CSW
CSW 应从包的边界开始,在传输了 13 个字节以后结束, CSW 的说明如下表:struct CSW{ DWORD dCSWSignature; // CSW的标识,固定值:53425355h (小端模式) DWORD dCSWTag; //主机发送的一个命令块标......
BOT CBWCSW数据例解析
读写数据抓包USB传输中:每一个传输包含一笔或多笔事务,每一笔事务又包含一个、两个或三个信息包。事务:Setup(设置)事务、IN(输入)事务、OUT(输出)事务信息包:令牌信息包、数据信息包、联络信息包传输|——>事务——>令牌信息包+数据信息包+联络信息包|——>事务——&......
BOT CBWCSW的校验
Bulk-Only Protocol传输是通过主机向设备发送CBW请求,设备响应CBW返回CSW响应。Bulk-Only Protocol传输开始是从设备复位(MASS_STORAGE_RESET)之后开始的,设备在接收到CBW请求和主机收到CSW回应后,是需要对CBWCSW进行拆包解析。CBW......
作者信息
USB中文网
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!