daedalus/hdd-toolkit

GitHub: daedalus/hdd-toolkit

一个跨厂商的 Python 硬盘固件研究工具包,集固件解析、JTAG 调试、热补丁、漏洞利用与取证检测于一体,支持 WD/Seagate/Samsung/Toshiba/NVMe 等多种平台。

Stars: 2 | Forks: 0

# HDD 固件工具包 一个全面的 Python 工具包,用于通过 ATA passthrough 和 JTAG (OpenOCD) 转储、分析、修补和热部署 HDD/SSD 固件。 支持 WD、Seagate、Samsung (840 EVO MEX)、Toshiba、NVMe、SAS 和 USB 桥接平台。 ## 功能特性 - **固件解析器:** WD LZHUF、Samsung 半字节交换、Seagate .lod、Toshiba 固件镜像 - **ATA Passthrough:** Linux sg_io 和 Windows DeviceIoControl,用于直接驱动器通信 - **WD VSC 协议:** 读写 RAM,转储 overlay 模块,通过 SMART LOG 0xBE 部署热补丁 - **JTAG (OpenOCD):** 内存转储、断点、寄存器检查、GPIO/MCU 交互 - **Samsung MEX (840 EVO):** 完整的 MEX 内存映射、GPIO、NCQ、AES 密钥插槽、DMA 数据窃取、安全模式 UART、闪存通道访问 - **NVMe Admin:** Identify、SMART、固件下载/激活、擦除、厂商特定命令 - **USB 桥接检测:** 通过 INQUIRY 字符串和 VID/PID 识别 USB-SATA 桥接芯片 - **数据恢复:** 读取重试升级、坏道处理、缺陷扇区模式生成 - **HPA/DCO:** Host Protected Area 和 Device Configuration Overlay 检测与命令构建 - **NVMe 侧信道:** 时序分析、争用检测、隐蔽信道建模 - **eNVMe:** DMA 攻击描述符构建、平台兼容性、内核模块注入建模 - **NVMe-oF:** CVE-2023-5178 double-free PoC、PDU 解析、内核漏洞检查 - **固件检测:** 电流消耗分析、时序异常检测、校验和验证、完整性报告 - **固件漏洞利用:** DOWNLOAD-MICROCODE 偏移量溢出、ASM2362 XRAM 注入、Service Area 隐藏/提取 - **补丁模板:** NOP sleds、数据陷阱、数据窃取钩子、SMART 日志重定向 - **32 个 CLI 命令:** 所有功能均可从命令行访问 ## 安装 ``` # 基础安装(无可选 deps) pip install hdd-firmware-toolkit # 包含所有可选依赖 pip install "hdd-firmware-toolkit[all]" # 可选依赖组 pip install "hdd-firmware-toolkit[serial]" # pyserial (SAFE mode UART) pip install "hdd-firmware-toolkit[asm]" # keystone-engine (Thumb-2 assembly) pip install "hdd-firmware-toolkit[disasm]" # capstone (disassembly) pip install "hdd-firmware-toolkit[yaml]" # PyYAML (hot-patch config) ``` ## 快速开始 ``` # 解析 WD 固件镜像 hdd-firmware-toolkit parse-firmware firmware.bin --format wd # 解码 Samsung nibble-swap 混淆 hdd-firmware-toolkit decode-samsung firmware.bin -o decoded.bin # 扫描 ASCII 字符串 hdd-firmware-toolkit scan-strings firmware.bin # 检查 NVMe-oF 内核漏洞 hdd-firmware-toolkit nvmeof-check-kernel --kernel 6.7 ``` ## CLI 命令 | 命令 | 描述 | |---------|-------------| | `parse-firmware` | 解析并提取固件段 | | `decode-samsung` | 移除 Samsung 半字节交换混淆 | | `scan-strings` | 查找固件中的 ASCII 字符串 | | `scan-fptables` | 启发式 ARM 函数指针表扫描 | | `diff` | 对两个固件镜像进行字节级差异对比 | | `list-vscs` | 从 WD 驱动器请求 VSC 列表 | | `read-ram` | 通过 WD VSC 读取驱动器 RAM | | `write-ram` | 通过 WD VSC 将文件写入驱动器 RAM | | `hot-patch` | 向活动驱动器 RAM 部署延迟钩子 | | `benchmark` | 计时读取基准测试 | | `dump_overlay` | 转储 WD 服务区 overlay 模块 | | `dump-all-overlays` | 将所有 overlay 模块转储到目录 | | `jtag-shell` | 交互式 OpenOCD shell | | `jtag-dump` | 通过 JTAG 转储内存 | | `jtag-bp` | 通过 JTAG 设置硬件断点 | | `jtag-regs` | 通过 JTAG 读取 CPU 寄存器 | | `samsung-memory-map` | 打印 MEX 内存映射 | | `samsung-fw-history` | 打印固件版本历史 | | `samsung-gpio` | 通过 JTAG 读取 GPIO 状态 | | `samsung-ncq` | 通过 JTAG 转储 NCQ 缓冲区 | | `samsung-aes-info` | 通过 JTAG 读取 AES-XTS 密钥插槽 | | `samsung-dma-dump` | 通过 DMA 将 RAM 传输至 SATA | | `samsung-ftl-preload` | 预加载 FTL 映射 | | `samsung-safe-shell` | 交互式安全模式 UART shell | | `samsung-safe-read` | 通过安全模式 UART 读取 | | `samsung-safe-write` | 通过安全模式 UART 写入 | | `parse-seagate` | 解析 Seagate .lod 固件 | | `sa-probe` | 探测 Service Area 大小 | | `sa-dump` | 完整 Service Area 转储 | | `sa-hide` | 在 SA 模块中隐藏数据 | | `sa-extract` | 从 SA 模块提取隐藏数据 | | `fwexploit-send` | 通过偏移量溢出注入固件 | | `fwexploit-activate` | 激活注入的固件 | | `nvme-bridge-sanitize` | 通过 ASM2362 XRAM 注入 Sanitize | | `patch-template` | 生成预构建的 patch shellcode | | `toshiba-parse` | 解析 Toshiba 固件镜像 | | `toshiba-nand` | 显示 Toshiba NAND 配置 | | `sat-cdb` | 构建 SCSI-ATA Translation CDB | | `patcher-apply` | 应用补丁并修复校验和 | | `patcher-fix` | 自动修复固件校验和 | | `ata-sec-status` | 检查 ATA 安全状态 | | `nvme-identify` | NVMe Identify Controller | | `nvme-smart` | NVMe SMART / Health 日志 | | `nvme-fw-download` | NVMe 固件下载 | | `nvme-fw-activate` | NVMe 固件激活 | | `nvme-vendor` | NVMe 厂商特定命令 | | `usb-identify` | 识别 USB-SATA 桥接芯片 | | `usb-list` | 列出已知的 USB-SATA 桥接芯片 | | `dr-smart` | SMART 快速测试 (数据恢复) | | `dr-identify` | 识别设备参数 | | `dr-native-max` | 读取 Native Max Address | | `dr-pattern` | 生成缺陷扇区模式 | | `hpa-detect` | 从 IDENTIFY 数据检测 HPA | | `hpa-build-cmd` | 构建 HPA/DCO ATA 命令 | | `hpa-parse-dco` | 解析 DCO 功能集描述符 | | `nvme-timing-baseline` | NVMe 读取延迟基线 | | `nvme-timing-detect` | 检测 NVMe 时序争用 | | `nvme-timing-gc` | 分析 NVMe GC 事件 | | `envme-dma` | 构建 eNVMe DMA 攻击描述符 | | `envme-scan` | 建模主机内存扫描 | | `envme-compat` | 检查 eNVMe 兼容性 | | `nvmeof-check-kernel` | 检查 CVE-2023-5178 漏洞 | | `nvmeof-build-icreq` | 构建 NVMe-oF TCP ICReq PDU | | `nvmeof-poc` | 生成 double-free PoC PDU | | `fwdetect-current` | 通过电流消耗检测固件 | | `fwdetect-timing` | 通过时序分析检测固件 | | `fwdetect-verify` | 验证固件校验和 | | `fwdetect-report` | 综合完整性报告 | ## 环境要求 - **Python** >= 3.11 - **可选:** pyserial、keystone-engine、capstone、PyYAML ### 特定平台 - **Linux:** 通过 sg_io 的 ATA passthrough 需要 root 权限 + `/dev/sdX` 或 `/dev/sgX` - **Windows:** ATA passthrough 需要管理员权限 ## 开发 ``` pip install -e ".[all]" pre-commit install pytest ruff check src/ ``` ## 许可证 MIT
标签:ATA直通, C++, CISA项目, CVE-2023-5178, DMA攻击, Google搜索, HDD工具包, HPA/DCO, HTTP工具, JTAG调试, NVMe, OpenOCD, Python, Samsung, Seagate, SMART监测, SSD固件, Toshiba, WD, 云资产清单, 侧信道攻击, 固件分析, 固件提取, 固件漏洞, 固件补丁, 固件解析, 坏道处理, 底层硬件交互, 恶意代码分类, 数据恢复, 数据擦除, 无后门, 硬件安全, 硬盘固件, 硬盘维修, 逆向工具, 逆向工程, 隐蔽通道