debugfs 直读 inode 结构
debugfs 是 ext2/ext3/ext4 文件系统的调试工具,也能以只读方式打开镜像文件,把文件系统内部的 inode 结构直接读出来。它的 stat 命令会列出某个 inode 的完整时间戳(atime、mtime、ctime、crtime)以及数据块分布,适合做深层核验:当 istat 之类工具的输出需要交叉验证,或者要看文件碎片与块映射细节时使用。
默认只读,写入要显式打开
debugfs 默认以只读模式打开镜像,要写操作必须显式加 -w 参数。取证场景下这条规则很重要:一次误加 -w 就可能改动原始镜像,导致哈希变化、证据失效。稳妥做法是在副本上操作,原始镜像保持只读挂载或只做哈希校验。
基本信息
| 适用平台 | Linux(ext2/ext3/ext4 文件系统与对应镜像) |
|---|---|
| 典型用法 | debugfs -R '命令' 镜像文件 |
| 核心命令 | stat <inode 号> 查看 inode 详情与块映射 |
| 模式 | 默认只读;写入需显式加 -w |
| 配套命令 | ls -l、cat、dump 等可辅助定位与导出 |
典型使用场景
- 核验 inode 时间:把四个时间戳与 istat 结果交叉比对
- 查看数据块分布:判断文件是否被追加或在碎片区域写入
- 确认 inode 是否被标记删除:结合块位图与目录项看有无残留
- 检查根目录与关键目录项:核对被隐藏或伪造的文件名
- 镜像只读复核:在不挂载镜像的前提下读取文件内容
只读查看 inode
只读查看 inode
# 只读打开镜像,查看指定 inode 的完整信息
debugfs -R 'stat <12845>' /evidence/root.dd 2>/dev/null | sed -n '1,20p'
# 列出根目录条目,确认目标文件的实际 inode 号
debugfs -R 'ls -l /' /evidence/root.dd 2>/dev/null | head -20
# 按 inode 导出文件内容(不挂载镜像)
debugfs -R 'dump <12845> /mnt/ev/out.bin' /evidence/root.dd 2>/dev/null
# 分析前记录镜像哈希,保证后续可验证
sha256sum /evidence/root.ddstat 输出要点
| 字段 | 含义 | 取证用法 |
|---|---|---|
| Inode | inode 号与文件类型 | 确认对象类型与唯一标识 |
| Size | 逻辑大小 | 与实际内容长度对照 |
| crtime | 创建时间(部分工具显示) | 判断文件最早出现时刻 |
| mtime / ctime / atime | 内容修改、属性变更、访问时间 | 三者差异可推断操作类型 |
| BLOCKS | 数据块清单 | 看碎片与追加写入痕迹 |
debugfs 加 -w 打开后即可写:取证过程中一律对副本操作,并在操作前后分别计算哈希,证明原始镜像未被改动。
stat 命令的 inode 号需要用尖括号包裹(如 stat <12845>),直接写数字会被当成路径处理。