dc3dd 与 dd 的差别
dc3dd 是从 dd 派生的、面向取证的块级采集工具,保留了 if/of 与块大小语义,同时把采集过程本身记录成文件:可指定哈希算法在采集时同步计算输入哈希,可写出操作日志记录起止时间、扇区数与读取错误计数。对需要「过程可复核」的场景,这比原生 dd 更适合,因为事后不必再凭记忆补记录。
基本信息
| 适用平台 | Linux/Unix(部分发行版需单独安装 dc3dd 包) |
|---|---|
| 核心参数 | if= 输入、of= 输出、bs= 块大小 |
| 取证向参数 | hash= 指定哈希算法、log= 写操作日志、hlog= 单独保存哈希记录(视版本支持) |
| 产物 | 镜像文件、操作日志、(可选)哈希记录文件 |
| 替代工具 | dcfldd、原生 dd 加 sha256sum 手工记录 |
| 版本差异 | 不同版本参数命名与支持范围不同,执行前用 dc3dd --help 核对 |
典型使用场景
- 需要采集与哈希在同一步完成,减少遗漏步骤
- 要求采集过程有独立日志,便于他人复核时间与错误统计
- 多块介质批量采集,每块都保留独立日志便于归档
- 交付场景下随镜像一并提供哈希与操作记录
- 遇到读错误时需要留下错误计数证据,而不是只给一个镜像文件
- 内部流程要求工具版本可追溯时的规范化采集
采集与核对
采集与核对
# 采集:同时计算 SHA-256 并写出操作日志
dc3dd if=/dev/sdb of=/evidence/sdb.dd hash=sha256 log=/evidence/sdb.log
# 确认产物结构与日志内容
ls -l /evidence/sdb.dd /evidence/sdb.log
head -20 /evidence/sdb.log # 含起止时间、扇区数、错误计数
# 独立复核镜像哈希,与日志中记录的值比对
sha256sum /evidence/sdb.dd | tee /evidence/sdb.sha256
# 需要同时保留两种算法时按版本文档写法指定
# dc3dd if=/dev/sdb of=/evidence/sdb2.dd hash=md5 hash=sha256 log=/evidence/sdb2.log参数与产物逐项
| 项 | 含义 | 注意点 |
|---|---|---|
| if=/of= | 输入与输出对象 | 写错方向会覆盖源设备,执行前核对设备名与序列号 |
| bs= | 块大小 | 影响速度与错误定位粒度,机械盘常用 1M-4M |
| hash= | 采集时计算的哈希算法 | 默认作用于输入数据,产物哈希仍需单独校验 |
| log= | 操作日志文件 | 含起止时间与错误计数,属于过程记录材料 |
| hlog= | 单独的哈希记录文件 | 是否支持视版本而定,以 --help 输出为准 |
| 错误计数 | 读取过程中出现的错误次数 | 不为零时报告要说明缺口与处理方式 |
操作日志记录了起止时间、扇区数与读取错误计数,归档时与镜像放在同一目录并一并计算校验值,避免日志与镜像脱节。
哈希默认作用于输入数据流,镜像文件本身的完整性仍要单独校验一次。把「采集时算出的哈希」直接当作镜像校验值,会掩盖写出环节可能出现的问题。