课后作业7.1:文件的删除与恢复

问题描述

  1. 在提供的硬盘镜像文件 rootimage-0.11中,有一个文件/etc/magic,其尾部包含字符串"XENIX 8086 relocatable or 80286 small model"。请按照文件系统静态结构来手工分析硬盘映像文件,找出该字符串。
  2. 先挂载硬盘镜像文件并通过操作系统来删除文件/etc/magic,然后通过直接修改硬盘镜像文件来恢复该文件,并验证恢复的正确性。

实验过程

查看/etc/magic尾部字符串

挂载镜像文件并查看/etc/magic:
在这里插入图片描述
在这里插入图片描述

取消挂载,转用十六进制的方式直接查看该硬盘镜像文件的数据:
在这里插入图片描述

查看根目录对应的0x13号区块(数据区的起始地址是0x4c00(=0x13*0x400)):
在这里插入图片描述

根目录的第5个目录描述的是子目录“etc”,其索引节点编号是0x19,在索引节点区(起始地址0x1000)中的偏移是0x300(=0x20*(0x19-1)),索引查看其值:
在这里插入图片描述

可见目录/etc只有一个区块,编号是0x18d,其起始地址是0x63400(=0x18d*0x400),查看其值:
在这里插入图片描述

可见目录/etc中包含9个可见文件,其中magic文件的索引节点号是0x25。0x25索引节点在索引节点区中的偏移是0x480(=0x20*(0x25-1)),查看其值:
在这里插入图片描述

可见文件magic包含8个块区,第一个数据块的起始地址是0x93c00(=0x4000x24f),最后一个数据块的起始地址是0x95800(=0x4000x256),分别查看:

在这里插入图片描述
在这里插入图片描述

找到尾部字符串:
在这里插入图片描述

可见/etc/magic文件尾部字符串"XENIX 8086 relocatable or 80286 small model"。
接下来分析/etc/magic文件的索引节点位图和区块位图,索引节点位图(地址区间[0x800,0xc00])的状态如下所示:
在这里插入图片描述

分析可知文件/etc/magic的索引节点号是0x25,对应到第5(=0x25/8+1)字节(地址0x804)的第6(=0x25-(0x25/8)*8+1)位,当前值为1,可见已经被占用。区块位图(地址区间[0xc00,0x1000])的当前状态如下:
在这里插入图片描述

同样的,分析可知,文件/etc/magic的第一个数据块号是0x24f,对应到第0x48(=0x24f/8-1)个字节(地址0xc47)的第6(=0x24f-(0x24f/8)*8-1)位,可见也已被占用。

删除文件/etc/magic

再次挂在硬盘映像文件,然后删除/etc/magic,再解挂:
在这里插入图片描述

在这里插入图片描述

现在再次查看目录/etc的第一个数据块:

123
在这里插入图片描述

可见在magic所在目录项里,最前面两个字节的索引节点号已经被替换为了全0,而文件名依然还在;再查看原magic文件的第一个数据块的内容:
在这里插入图片描述

可见内容未变,再查看原magic的索引节点:
在这里插入图片描述

可见除最前面的两个字节(i_mode)由ed 81变为全0外,其他字段都没变。
再看索引节点位图:
在这里插入图片描述

可见对应到0x25号索引的二进制位(0xdf=110111112的从低到高第 6 位)已经从1变为了0,即现在变空闲了。接下来看看区块位图:
在这里插入图片描述

可见对应到0x24f号数据块的二进制位(0x1f=00011111的从低到高第 6位)已经从1变为了0,即现在也变空闲了。

恢复/etc/magic

用二进制编辑器Bless打开硬盘镜像文件:
在这里插入图片描述

首先将magic的索引节点重新改为0x25:
在这里插入图片描述

进一步,用同样的方法恢复magic的索引节点,将 0x25号索引节点的最前面两个字节(i_mode,地址区间[0x1480,0x1481])复原:
在这里插入图片描述

现在重新挂载硬盘镜像文件,并查看文件/etc/magic:
在这里插入图片描述

可见文件magic已经恢复,再查看文件内容:
在这里插入图片描述

在这里插入图片描述

可见文件magic的内容也恢复了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值