磁盘格式与数据恢复

1.1 实验名称

磁盘格式与数据恢复

1.2 实验目的

1)     了解磁盘的物理和逻辑结构

2)     熟悉 FAT32 文件系统

3)     学会使用磁盘编辑软件

4)     了解文件删除、格式化的基本原理

5)     能够利用工具或者手工恢复被删除的文件

1.3 实验步骤及内容

第一阶段:

n 熟悉磁盘工具的使用。

n 利用 WinHex 查看物理磁盘和逻辑磁盘。

n 了解 WinHex 中相关工具的用法。

第二阶段:

 分析本地硬盘的主引导扇区

 利用磁盘编辑工具查看 MBR 磁盘分区并分析: n 主引导扇区由哪些部分组成?

n 四个主分区项的内容各代表什么?

n 分析主扩展分区表的结构。

n 通过分区项来确定每个本地逻辑盘的位置以及大小,并画出本地硬盘的逻辑 结构。

n 每个本地盘的开始扇区位置,总扇区数,结束扇区位置,各扩展分 区表扇区位置,保留空间数量。

 利用磁盘编辑工具查看 GPT 磁盘分区并分析

n GPT 分区结构与 MBR 的具体差异有哪些?

n 主分区头所在扇区包括哪些重要内容,验证这些重要内容的有效性。 n 通过分区节点分析自己硬盘的各分区信息。

第三阶段:

 熟悉 FAT32 文件格式。

n  WinHex 打开某个 FAT32 分区格式的逻辑盘。

n 查看 该逻 辑盘 的起始     析起始       字段(BPB:BIOS Parameter Block)。

n 查看 FAT1  FAT2 的内容和大小。

n 查看该逻辑盘的根目录区。

n 查看某个文件的目录项结构和 FAT 链以及具体存储位置。

n 在根目录下建立文本文件:test-学号后 3 位.txt,其中填充 60K  右的文本字符保存(注意:先行存储其他数据使得该文件的首簇高 位不为 0)。

n 查看该文件的目录项,对其进行分析,并得到该文件所在位置以及 大小。

n 查看首簇位置,并得到簇链表。通过簇链表查看该文件内容。 n 记录首簇位置(14H-15H,1AH-1BH)和文件大小(1CH-1FH)。

第四阶段:

 手工恢复被删除的文件

n 删除前面所建立的文件。(del&shift+del)

n 利用 WinHex在该文件所在盘符查找该.txt 文件的目录项。 n 查看目录项的变化。

n 利用该残余目录项来计算被删除的文件所在的位置。

n 手工恢复该文件(文件名、首簇高位、簇链表修复)。

习题思考:

 在磁盘分区过程中,用户提供了哪些信息?分析分区工具的工作原理。

 高级格式化与低级格式化的具体原理和区别是什么?

 查找资料,对 NTFS 分区的总体结构进行分析,尝试对 NTFS 下删除的文件进行手 工恢复。

 用数据粉碎工具(如金山、360 Strongdisk 等)粉碎指定文件,分析其数据粉碎原 理。

 通过分区表看到的分区字节数为何与资源管理器中看到的分区字节数有差异?

 如果删除的文件是长文件名,如何恢复所有文件名。

 

1.4 实验关键过程、数据及其分析

1.4.1 WinHex 使用

使用管理员模式打开 WinHex ,点击菜单栏工具可以选择想要打开的磁盘, 如图 1. 1 所示。

 1. 1  打开磁盘

点击确定即可打开相应磁盘,包括逻辑盘和物理盘,如图 1.2 所示。上半部 分显示的是磁盘的文件目录,下半部分显示的是磁盘的数据区数据信息。

 1.2  使用 WinHex 查看磁盘

本实验主要是用 WinHex 的跳转功能。点击菜单工具栏可以进入指定的偏移或地址。选择导航可以看到相应的功能,如图 1.3 所示。

 

 1.3 WinHex 导航工具的使用

转到偏移量可以选择基地址以及偏移量跳转到自己想要到达的地址;跳至扇 区可以通过扇区为单位进行跳转。文件记录功能主要用于文件恢复过程中,利用 其跳转到簇链表相应的位置。

在对磁盘进行修改之后,由于 WinHex  没有更新磁盘信息,需要重新对磁 盘进行快照,如图 1.4  所示。

 1.4  重新对磁盘进行快照

 

1.4.2  分析本地硬盘的主引导扇区

1.4.2.1 MBR 分区类型

使用 Winhex 打开一个 MBR 分区形式的磁盘,这里我打开的是插入电脑的、 2T 大小的 U 盘,分配分区为 F。

 2. 1 F 盘的主引导扇区

如图 2.1 所示,从偏移为 0  512 字节(图中前 32 行)是硬盘的主引导扇 区。它是硬盘第一个扇区,由主引导记录(MBR)、硬盘主分区表(DPT)和引导 扇区标记(ID)三部分组成。

其中,主引导记录 MBR:从 0 开始占用 446 个字节,存放系统主引导程序; 硬盘主分区表 DPT:占用 64 个字节(446-510),它有四个分区项,每个项 16  字节,最后 8=4+4 个字节存放相对扇区地址和该分区占用的扇区数量。

通过 WinHex 自带的分区表-模板,查看物理硬盘的结构,如图 2.2 所示

 

 2.2 WinHex 的分区表-模板查看 MBR 分区表结构

 446 个字节是其引导代码,从 446 开始是硬盘分区表,最后以标志 55AA 结尾。每一个分区表项的长度是 16 个字节,如图 2.3 所示。

 2.3  硬盘分区表 DPT  内容

1.4.2.2 GPT 分区类型

使用 Winhex 打开一个 GPT 形式的硬盘,这里我打开的是电脑的本地磁盘, 如图 2.4 所示。

 

 2.4 GPT 磁盘信息

利用 WinHex 自带的分区表模板,查看 GPT 磁盘的分区表信息(这里使用 的是 16 进制表示),如图 2.5 所示。

 2.5 WinHex 的分区表-模板查看 GPT 分区表结构

可以看到 1BEH-1CAH 是磁盘保护性的主引导记录 MBR,从 200H(512)-258H 是磁盘的分区表。从 0x400H(1024)开始是 GPT 磁盘的第一个分区表项。

分区表项中存储了对应分区的起始 LBA,LBA 即逻辑地址块,是 GPT 分区形 式的基本单位,每一个 LBA 的大小也是 512 个字节。

 

分区表项 1 中,起始 LBA 块是 34,终止 LBA 块是 262177,这意味着分区 1 共有 262177-34+1=262334  LBA 块,即大小为 262334*512/1024/1024=128MB, 计算结果与分区 1 大小相符。

GPT  MBR 分区的具体差异:

1、MBR 分区表最多只能识别 2TB 左右的空间,大于 2TB 的容量将无法识别 从而导致硬盘空间浪费;GPT 分区表则能够识别 2TB 以上的硬盘空间。

2、MBR 分区表最多只能支持 4 个主分区或三个主分区+1 个扩展分区(逻辑分 区不限制);GPT 分区表在 Windows 系统下可以支持 128 个主分区。

3、在 MBR 中,分区表的大小是固定的(4*16=64 个字节); GPT 分区表 头中可自定义分区数量的最大值,也就是说 GPT 分区表的大小不是固定的(在本 系统中最大是 0x200H=512 个字节)。

1.4.3 FAT32 文件系统格式

 WinHex 打开一个 FAT32 格式的逻辑盘,如图 3.1 所示。

 3. 1 FAT32 磁盘

通过 WinHex 自带的引导扇区-模板,查看该逻辑盘的起始扇区,分析起始扇 区中的相关字段,如图 3.2 所示。

 

 3.2 WinHex 引导扇区模板

其中,0-3 是其固有的字段,从 0xBH 开始,到 0x20H 是该逻辑盘对应的 BPB (BIOS Parameter Block,BIOS 参数块)字段。通过 BPB 可以查看这个磁盘的 基本信息。如每个扇区的字节数为 512 字节,每个簇有 8 个扇区。

FAT32 Selection 是该 FAT32 文件系统的一个表,从表中可以看到每一个 FAT 的扇区数是 5105,最后在偏移量 1FE 处也是以 55AA 标志结尾

接着,往 FAT 分区中添加两个新文件,如图 3.3 所示。

 

 3.3 FAT 文件系统

其中,FAT1  FAT2 的用途是存储簇链表,由于簇链表至于 FAT 分区十分重 要,所以存放两个用于备份。

在根目录区可以看到 FAT 文件系统为每个文件建立了索引,每个索引中记录 了对应文件的相关信息。如图 3.3、图 3.4 所示,可以使用 WinHex 根目录-模板 查看文件。

 3.3 hello-2.5.exe 的索引信息

 3.4 ctf 竞赛指南 pwn.pdf 的文件信息

可以发现,其中 hello-2.5.exe 的文件名 HELLO-~1,扩展名是 EXE,创建 时间是 2022/9/28-16:48:04,簇高位号为 0,文件大小是 2560Bytes=2.5KB。

 

在根目录下新建文本文件,命名为 test-204.txt,并在其中填充 60KB 左右 的文本保存。更新磁盘快照,利用 WinHex  txt 文件的簇,如图 3.4 所示。

 3.4  右击文件-导航-列出的簇可以查看文件的簇信息

可以看到该 txt 的簇首号是 589826,共包含 16 个簇。如图 3.5  G 盘查看 文件属性,文件实际大小是 61.6KB,但占用 64.0KB 的空间。由之前的引导扇 区模板可以得到,当前系统一个簇含 8 个扇区,每个扇区 512 个字节,总大小就  16*8*512/1024=64KB。

 3.5  本地查看 txt 文件的大小

下面根据文件占用的簇跳转到文件内容的位置。

首先找到首簇位置并查看簇链表。在 WinHex 中选择导航-跳转到 FAT 记录- 填写首簇 589826,跳转到簇链表对应位置。由于是 FAT32 系统,簇链表中每个 结点大小是 4 个字节,文件占用 16 个簇,在簇链表中便占据 64 个字节,如图  3.6 所示,高亮部分即 txt 文件的占用的簇链表。

 3.6 txt 文件的簇链表

 

其中,簇链表首节点值是 0x00090003H=589827,可以发现访问首簇号节点 对应的值默认是首簇号+1。原因是在 FAT32 文件系统中 FAT 表使用的存储方式是 连续存储。

接着,通过簇链表查看该文件内容。记录下文件的簇链表, WinHex 中选 择导航-跳至扇区-填写簇 589826,可以发现跳转到了 txt 文件存储处,如图 3.7 所示。

 3.7  通过簇链表查看文件内容

根据目录项的定义,一个目录项占据 32 个字节,00H-07H 字节表示文件名, 1CH-1FH(0x0000F692=63122)是文件的占据的字节大小,打开 WinHex,利用模 板跳转到 test-204.txt 的目录项所在的位置,如图 3.8 所示。

 3.8 txt 文件目录项

目录项中第 14H-15H 字节是 0009,表示簇高位为 9,1AH-1BH 字节是 0002, 两者组成的首簇号是 0x00090002A=589826,正是该文件之前查看的首簇号。

 

1.4.4  手工恢复被删除的文件

在本地 shift+del 删除 txt 文件,更新立磁盘快照。虽然在 WinHex 中无法 查看到文件,且 FAT 记录(簇首链)被清 0 如图 4.1 所示,但其对应的数据仍然 存在,如图 4.2 所示。

 4. 1  彻底删除后 FAT 记录被清 0

 4.2  彻底删除后数据依旧存在

进一步找到原来文件在目录表中对应的位置,如图 4.3 所示。发现目录项首 字节在文件删除后被进行了修改成 E5,表示被删除标记。

 

 4.3  文件首字节被改为 E5 标志删除

选择 E5 所在字节,右键编辑-填充选块,将 E5 随便修改成任意数据,选择  文件-保存扇区,可以发现文件已经可以在本地查看到了,如图 4.4 所示,但是  文件名会根据修改数据改变首字母(修改 E5 需要为有效字符,否则看不到文件)。

 4.4  本地可以查看到该文件

但此时打开 txt 文件会报文件损坏错误,因为 shift+del 会清除簇链表,现 在文件目录中的文件并没有与相应的 FAT 分区相关联。因此,还需要修改 FAT  记录相应位置,如图 4.5 所示。应该注意的是,簇链表第一项的值应该为首簇号 +1。

 4.5  修复簇链表

 

 4.6  文件恢复成功

1.5 拓展思考

如图所示,我电脑的磁盘分区格式是 GPT。共有 4 个分区,其中 CDE 的文件 系统格式都是 NTFS,只有 G 盘的文件系统格式是 FAT。

新建一个超过 100KB  DOCX 文件,其目录表如下图所示。簇首是 0x00000024H。

如图所示是为其分配的簇链表,共 65 项,  65*8*512/1024=260KB。

 

通过分区表看到的分区字节数为何与资源管理器中看到的分区字节数有差  异是因为我的电脑系统一个簇是 8 个扇区,4KB,65 个簇正是 260KB,这就是文 件实际的占用大小。257KB 文件需占用 65 个簇才可以存下。

NTFS  FAT32 是两种不同的磁盘文件系统格式,它们之间的差异有以下几 点。

1、磁盘分区容量区别

NTFS 可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到 2TB (2048GB),而 Windows  2000 中的 FAT32 支持分区的大小最大为 32GB。 2、单个文件容量区别

FAT32 在实际运行中不支持单个文件大于 4GB 的文件,一旦超过容量限制那 么系统就会提示磁盘空间不足。

NTFS 就目前来说已经突破了单个文件 4GB 的容量限制, 目前来说似乎没容 量限制,只要硬盘空间容量有多大,那么就 NTFS 就可以分到多大。

因为现在的很多应用程序以及游戏大作都超过了 4GB 容量,因此用户必须将 大程序安装的磁盘改成 NTFS 格式。

3、安全方面区别

可以针对电脑用户对该格式下所有的文件夹、文件进行加密、修改、运行、 读取目录及写入权限的设置。此外,在磁盘分区下任意文件夹或文件上右键属性, 在高级属性窗口中勾选中加密内容以便保护数据即可做到加密。

FAT32 文件安全设置:不支持;

NTFS 文件安全设置:支持。

4、磁盘配额的区别

 

在一台电脑有多个用户使用时,而作为系统管理员,可以给用户设置不同的 磁盘空间容量,被设置用户只能使用这个被限额的磁盘空间。

如:管理员设置用户 A  D 盘磁盘配额为 1GB,那么用户 A 在使用电脑时, E 盘他只能用 1GB 的空间,多的用不了。

FAT32 磁盘配额:不支持;

NTFS 磁盘配额:支持。

5、磁盘利用率区别:

在Windows2000  FAT32 文件系统的情况下,分区大小在 2GB~8GB 时簇的大 小为 4KB;分区大小在 8GB~16GB 时簇的大小为 8KB;分区大小在  16GB~32GB 时,簇的大小则达到了 16KB。

 Win  2000  NTFS 文件系统,当分区的大小在 2GB 以下时,簇的大小都比 相应的 FAT32 簇小;当分区的大小在 2GB 以上时(2GB~2TB),簇的大小都为 4KB。

相比之下,NTFS 可以比 FAT32 更有效地管理磁盘空间,最大限度地避免了 磁盘空间的浪费。

6、系统文件压缩的区别

在磁盘分区中任意文件中右键属性,我们在高级属性窗口中可以设置给单个  文件或整个文件夹压缩,压缩之后可以一定程度上节省占用磁盘空间的容量大小。 而且当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自定对  文件进行压缩。

FAT32 系统文件压缩:不支持;

NTFS 系统文件压缩:支持。

7、磁盘碎片方面的区别

 FAT16 的文件系统格式,到之后的 FAT32 然后再到现在的 NTFS 文件系统 格式,我们就会发现从磁盘分区的格式不同,那么所产品的磁盘碎片也是越来越 小。

FAT32 磁盘碎片:产生的磁盘碎片一般;

NTFS 磁盘碎片:产生的磁盘碎片较少。

8.、现实应用中区别

NTFS 目前多用于电脑、移动硬盘等各种大中型空间容量的磁盘。 FAT32 却多用于 U 盘、内存卡等小型磁盘。

综上,我们可以看出:NTFS 文件系统 FAT 文件系统相比,功能更强大, 适合更大的磁盘及分区,且磁盘利用率还很高,安全性与稳定性也杠杠的,想较 FAT32 是更为完善和灵活的文件系统。

文件名过长时恢复文件后需要手工查看文件数据区的文件名进行恢复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值