BOT CBW和CSW的校验
2021-09-29
2905
1
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。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936