bodyfile 时间中间格式
bodyfile 是 Sleuth Kit 系工具使用的行式文本格式,每条记录由管道符分隔为 11 个字段,可被 mactime 直接渲染成时间线。它的价值在于把不同来源的文件时间统一成一种中间格式,便于与其它工具的输出合并;通用性是它的优点,固定的字段顺序则是使用时的硬约束。
基本信息
| 字段顺序 | MD5|name|inode|mode|UID|GID|size|atime|mtime|ctime|crtime |
|---|---|
| 时间单位 | Unix 秒(以 UTC 为基准),部分工具输出毫秒需先换算 |
| 生成工具 | fls -m 等 TSK 工具,也可按格式手工拼接 |
| 消费工具 | mactime 渲染时间线,或导入其它分析脚本 |
| 格式约束 | 固定 11 段,字段内容中不能出现管道符 |
典型使用场景
- 把文件系统层面的事件并入统一时间线
- 与日志、执行痕迹按时间对齐后排布事件顺序
- 批量处理镜像时生成中间格式,便于脚本消费
- 复核他人时间线时读取其 bodyfile 输入
- 作为可读的中间产物随分析过程一并归档
生成与消费
生成与消费
fls -o 2048 -r -m '/' /evidence/disk.dd > bodyfile.txt # 生成 bodyfile
head -3 bodyfile.txt # 确认字段数与分隔符
mactime -b bodyfile.txt -d -z UTC > timeline.csv # 渲染为时间线
grep -c '|' bodyfile.txt # 粗略检查每行是否具备分隔符
mactime -b bodyfile.txt -d 2026-01-01..2026-01-05 | head # 只渲染指定日期范围字段读法
| 字段 | 含义 | 注意点 |
|---|---|---|
| MD5 | 文件内容摘要 | 多数工具默认输出 0,表示未计算 |
| name | 文件完整路径 | 镜像内路径,注意大小写与编码 |
| inode 与 mode | 节点号与权限模式 | 用于关联节点与判断权限 |
| size | 文件大小(字节) | 与镜像中该文件的属性一致 |
| 四个时间 | atime、mtime、ctime、crtime | crtime 为 0 表示该来源不可得 |
crtime 为 0 表示该文件系统或该工具不提供创建时间,这是正常情况:解读时不要把它当成 1970 年,也不要据此判断文件被篡改,只需在说明里标注该字段不可用。
bodyfile 是中间产物,本身不携带来源信息。生成时要在文件名或伴生说明中记录镜像路径、分区偏移与时区设置,否则多份文件混在一起后,无法回溯每条记录究竟来自哪个证据。