ext3 文件恢复
Ext3 是 Ext2 的日志增强版,通过添加日志机制提高了文件系统的可靠性和恢复能力。相较于 Ext2,Ext3 的日志在恢复过程中既是挑战也是机遇
一方面,日志记录了元数据变更,可用于回滚或重放操作;另一方面,删除文件后日志可能已经覆盖了某些元数据,增加了恢复难度
与 Ext2 的关键差异
| 特性 | Ext2 | Ext3 |
|---|---|---|
| 日志 | 无 | 有,三种模式:journal、ordered、writeback |
| 元数据结构 | 基本相同(超级块、GDT、inode) | 增加了日志超级块和日志描述符 |
| 删除文件时的行为 | 直接修改元数据和位图 | 操作先记入日志,再提交到主文件系统 |
| 恢复难度 | 取决于元数据残留 | 日志可能记录删除操作,也可能被覆写 |
日志模式(影响恢复的途径):
journal模式:所有数据和元数据写入前都先记入日志。恢复时日志中有完整的旧数据副本ordered模式(默认):元数据变更记入日志,数据先于元数据写入,确保数据一致性writeback模式:仅元数据记入日志,数据与元数据的写入顺序不做保证,可能造成文件空洞
日志结构
Ext3 日志存储在一个特殊 inode(通常是 inode 8)指向的文件中,或者也可以存储在外部的日志设备上。日志由多个固定大小的块组成,包含:
日志超级块 (Journal Superblock):记录日志的参数,如块大小、最大长度、起始序号等
描述符块 (Descriptor Block):描述即将进行的事务(操作类型、块号等)
数据块 (Data Block):实际被修改的块在日志中的副本
提交块 (Commit Block):标记一个事务的结束
恢复时,可以通过分析日志事务找到被删除文件的历史元数据(如 inode 表、目录项)的副本,从而重建文件
实战案例
文件恢复(ext3 文件恢复)

用 Sleuth Kit 识别文件类型
1 | FILE SYSTEM INFORMATION |
使用 fls 查看递归查看被删除的文件

Flag.txt 对应的 inode 为 16,还没有被删除
但是使用 icat 查看缺为空

文件名还在目录项残留里,但 inode 数据块信息已经丢失
因此要换思路,去未分配空间里搜残留数据
blkls 可以提取文件系统中未分配的数据块,也就是删除文件可能残留的位置

打开文件搜索关键字拿到 flag
