EXT4 二进制文档解析

说明:本文档通过研究ext4文件系统在flash上的摆放格式,做到对一个ext4 file system的二进制档,分析出包含哪些文件,每个文件的名字,大小和内容。如有不对的地方,还望指正。本文主要参考了《数据重现-文件系统原理精解与数据恢复最佳实践》(马林 著)中关于ExtX文件系统章节(第五章)

EXT4文件系统架构:
EXT4 文件系统架构

说明:EXT4文件系统中只有0号块组的超级块和块组描述符表的位置是固定的,其他都不固定。其中,超级块总是开始于偏移位置1024(字节),占据1024个字节,块组描述符表在紧跟超级块后面的一个块(中间是否有空闲填充要根据块大小),块组描述符表整体占用的大小是不定。

不同块大小时详细布局结构有差异,下图为块大小为1024字节时结构:
这里写图片描述
我手头的板子上mmcblk0p3分区已经被格式化为ext4格式,挂载发现里面没有内容,为了验证追踪到了正确数据,先对其创建了文件和子目录并写入了内容,接下来我将对该分区的二进制档分析出里面的文件是否是写入的内容,以验证方法是否正确。
一个ext4格式的文件系统(/dev/block/mmcblk0p3)被挂载在/usr/local/etc目录,查看如下
这里写图片描述
接下来将通过读取元数据一步一步得到文件所在数据块:

1、 查看超级块,找到0号块组起始块号、块大小、每块组所含块数、每块组i节点数、第一个非保留i节点、每个i节点大小。
这里写图片描述
超级块的数据结构如上图所示,下面分析会参照该表:
命令:hexdump -s 1024 -n 1024 -C /dev/block/mmcblk0p3

首先可以看到0x38-0x39是EXT系列文件系统的签名标志:“53 ef”
0x14-0x17是0号块组起始块号:0x01,说明超级块前面有一个块为保留块,用来存储引导程序。
0x18-0x1b是块大小:0x00,这里的值指的是将1024字节左移的位数,移动0位也就是1024字节,移动一位相当于乘以2,就是2048字节。
0x20-0x23是每块组所含块数:0x2000(十进制8192)
0x28-0x2b是每块组所含i节点数:0x07e8(十进制2024)
0x54-0x57是第一个非保留i节点号&#

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值