当前位置: 首页 > article >正文

USB MSC SCCI

🔍 ​数据包完整内容

0000   1b 00 10 09 22 8b 8b 9b ff ff 00 00 00 00 09 00   
0010   00 02 00 02 00 02 03 1f 00 00 00 55 53 42 43 10   
0020   09 22 8b 00 02 00 00 80 00 0a 28 00 00 00 00 00   
0030   00 00 01 00 00 00 00 00 00 00

⚙️ ​一、READ(10) 命令结构解析

READ(10) 是 SCSI 协议中的标准读命令,用于请求存储设备(如 U 盘)返回指定扇区的数据。其结构如下:

字段偏移值 (十六进制)​含义
操作码 (Opcode)​0x2A28READ(10) 命令标识符 

9

LBA 地址0x2B-0x2E00 00 00 00起始扇区号(LBA 0,即 MBR)
传输长度0x2F-0x3000 01读取 1 个扇区(512 字节)
控制码0x3100保留字段

✅ ​关键点​:

  • 0x28 是 READ(10) 的固定操作码,明确标识此命令为读取请求 。
  • ​LBA 地址 00 00 00 00 表示从磁盘的第一个扇区(MBR 位置)读取数据 。
  • ​传输长度 00 01 表示读取 1 个扇区(即 512 字节的 MBR 数据)。

🔧 ​二、数据包上下文分析

此数据包是 ​USB Bulk-Only Transport (BOT) 协议中的 CBW(Command Block Wrapper)结构,用于封装 SCSI 命令:

  1. CBW 签名​:
    • 偏移 0x1C-0x1F55 53 42 43(ASCII "USBC"),标识 CBW 结构 。
  2. 数据方向​:
    • 偏移 0x2480 表示数据从设备传输到主机(即读操作)。
  3. SCSI 命令长度​:
    • 偏移 0x280A 表示后续 SCSI 命令长度为 10 字节(即 READ(10))

      9


📂 ​三、MBR 读取机制

  1. MBR 位置​:
    存储设备的第一个扇区(LBA 0),包含引导代码和分区表 。
  2. 主机请求流程​:
    • 主机通过 Bulk-OUT 端点发送此 CBW 包,内含 READ(10) 命令。
    • 设备通过 Bulk-IN 端点返回 MBR 的 512 字节数据 。
  3. MBR 结构​:
    • 前 446 字节:引导代码。
    • 中间 64 字节:分区表(4 个分区条目)。
    • 最后 2 字节:结束标志 0x55AA 。

💎 ​总结

  1. 数据包性质​:
    ✅ 此包是 ​READ(10) 命令的 CBW 封装,用于请求读取 U 盘的 MBR 数据。
  2. 核心字段验证​:
    • 操作码 0x28、LBA=0、长度=1 扇区,符合 MBR 读取标准 。
  3. 后续响应​:
    设备需返回 512 字节的 MBR 数据,包含引导代码、分区表及结束标志 0x55AA 。

SCSI命令分类与功能表

命令类型操作码 (Hex)​命令名称功能描述适用标准
读写命令0x08READ(6)读取指定逻辑块地址(LBA)的6字节寻址数据块SBC-3
0x28READ(10)读取10字节寻址数据块(支持更大容量设备)SBC-3
0x88READ(16)扩展至16字节寻址,适用于超大容量存储设备SBC-4
0x0AWRITE(6)写入6字节寻址数据块SBC-3
0x2AWRITE(10)写入10字节寻址数据块SBC-3
控制命令0x1BSTART/STOP UNIT启动或停止设备(如光驱托盘弹出/关闭)SPC-4
0x35SYNCHRONIZE CACHE将缓存数据强制写入物理介质,确保数据持久化SBC-3
0x04FORMAT UNIT低级格式化设备(清除所有数据并重置参数)SBC-3
查询命令0x12INQUIRY获取设备基本信息(厂商、型号、固件版本等)SPC-4
0x25READ CAPACITY(10)查询设备容量(总块数和块大小)SBC-3
0x9EREAD CAPACITY(16)扩展容量查询,支持超过2TB的设备SBC-4
诊断与测试0x00TEST UNIT READY检测设备是否就绪(常用于设备状态检查)SPC-4
0x1DSEND DIAGNOSTIC执行设备自检或返回诊断信息SPC-4
模式管理0x1AMODE SENSE(6)读取设备工作模式参数(如缓存设置、错误恢复策略)SPC-4
0x5AMODE SELECT(6)设置设备工作模式参数SPC-4
扩展功能0x9FREPORT LUNS报告逻辑单元号(LUN)列表(用于多LUN设备管理)SPC-4
0x85PERSISTENT RESERVE管理设备访问权限(如集群环境中的共享存储控制)SPC-4
流媒体设备0x0BERASE(6)擦除磁带设备上的数据SSC-3
0x8BERASE(16)扩展擦除命令,支持长磁带设备SSC-3
光存储设备0xA3READ CD读取光盘内容(如CD/DVD/蓝光)MMC-6
0x2BSEEK(10)定位光驱读写头到指定位置MMC-6

关键说明

  1. 命令版本差异

    • READ/WRITE命令的变体(如6/10/16字节)主要区别在寻址范围。例如,READ(6)仅支持32位LBA,而READ(16)支持128位LBA。
    • 模式管理命令​(MODE SENSE/SELECT)用于调整设备缓存策略、错误恢复机制等高级参数,直接影响性能与可靠性。
  2. 专用设备命令

    • MMC标准​(MultiMedia Commands)定义了光存储设备的操作,如READ CDSEEK
    • SSC标准​(SCSI Stream Commands)用于磁带驱动器,提供流式数据读写与擦除功能。
  3. 扩展应用场景

    • PERSISTENT RESERVE用于集群存储环境,防止多主机同时写入导致数据损坏。
    • REPORT LUNS支持多路径存储设备(如SAN)的逻辑单元管理。

完整命令参考

由于SCSI命令集包含数百条指令(涵盖SPC、SBC、MMC、SSC等子协议),上述表格仅列出核心命令。若需完整列表,可参考以下资源:

  • SCSI Primary Commands (SPC-5)​​:定义通用控制与查询命令。
  • SCSI Block Commands (SBC-4)​​:块设备(如硬盘、SSD)的读写与格式化操作。
  • SCSI Stream Commands (SSC-3)​​:磁带驱动器的流式数据管理。
http://www.lryc.cn/news/2393223.html

相关文章:

  • 解决Acrobat印前检查功能提示无法为用户配置文件问题
  • 华为OD最新机试真题-反转每对括号间的子串-OD统一考试(B卷)
  • 电商平台 API、数据抓取与爬虫技术的区别及优势分析
  • 领域驱动设计 (Domain-Driven Design, DDD)
  • 单卡4090部署Qwen3-32B-AWQ(4bit量化)-vllm
  • 漫画Android:Handler机制是怎么实现的?
  • 多部手机连接同一wifi的ip一样吗?如何更改ip
  • 飞牛fnNAS的Docker应用之迅雷篇
  • C++中指针与引用的区别详解:从原理到实战
  • SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南
  • inviteflood:基于 UDP 的 SIP/SDP 洪水攻击工具!全参数详细教程!Kali Linux教程!
  • 软件工程:关于招标合同履行阶段变更的法律分析
  • mysql一主多从 k8s部署实际案例
  • Visual Studio 2022 设置自动换行
  • 沉浸式 “飞进” 鸟巢:虚拟旅游新体验​
  • Ubuntu 下同名文件替换后编译链接到旧内容的现象分析
  • 【Linux网络篇】:简单的TCP网络程序编写以及相关内容的扩展
  • 22.代理模式:思考与解读
  • Scratch节日 | 粽子收集
  • stl三角面元文件转颗粒VTK文件
  • Java String的使用续 -- StringBuilder类和StringBuffer
  • Android学习之定时任务
  • WEB安全--RCE--webshell HIDS bypass4
  • 基于python+Django+Mysql的校园二手交易市场
  • 从零打造算法题刷题助手:Agent搭建保姆级攻略
  • Oracle 12c新增的数字转换验证VALIDATE_CONVERSION函数
  • 参数/非参数检验和连续/离散/分类等变量类型的关系
  • 懒人云电脑方案:飞牛NAS远程唤醒 + 节点小宝一键唤醒、远程控制Windows!
  • 【Python】第一弹:对 Python 的认知
  • 直播预告 | 聚焦芯必达|打造可靠高效的国产 MCU 与智能 SBC 汽车解决方案