磁盘存储结构与文件恢复实验(FAT文件系统)
实验地点:主楼A2-412
一、实验室名称:主楼实验室A2-412
二、实验项目名称:磁盘存储结构与文件恢复实验
三、实验学时:6学时
四、实验原理:
在Debug环境下利用基本汇编程序对引导扇区、文件分配表、目录表等结构进行显示,并进行分析;
使用工具软件WINHEX对指定的文件(被删除文件)进行恢复。
五、实验目的:
1)了解文件系统在磁盘上的存储映像和它在系统安全中的地位和作用;
2)了解文件目录结构及其访问方式;
3)掌握使用系统基本汇编程序进行磁盘和文件结构访问的技术和编程方法,为数据恢复奠定基础。
六、实验内容:
1)在DEGUB下,使用汇编指令读取MBS引导扇区,记录并分析说明结构。
2)在DEGUB下,使用汇编指令读取DBS引导扇区,记录并分析说明结构。
3)在DEGUB下,使用汇编指令读取FAT、FDT,记录并分析说明结构。
4)生成一个简单文本文件(*.txt文件),结合FAT,FDT信息,使用汇编指令,在硬盘上查找并读出该文件,记录并说明查找过程。
5)删除生成的文本文件,查看该文件在FAT、FDT所对应的文件存储状态以及该文件在数据区对应扇区的内容,说明文件删除操作的原理。
6)使用WINHEX软件进行文件恢复操作练习。
七、实验器材(设备、元器件):
PC微机一台(至少具有一个FAT格式磁盘分区),VMware Workstation6.0虚拟机软件,DOS7.0,WINHEX软件。
八、实验步骤:
任务一、读取MBS引导扇区
1.在DEGUB下,使用汇编指令读取MBS引导扇区。
2.根据显示的信息,分析说明MBS结构及字节含义和具体数值。
任务二、读取DBS引导扇区和磁盘参数块BPB
1.在DEGUB下,使用汇编指令读取DBS引导扇区。
2.根据显示信息,分析说明引导扇区结构。
3.根据显示信息说明磁盘参数块BPB结构及各段含义和具体数值。
任务三、读取FAT表
1.生成一个简单文本文件(*.txt文件),取“长文件名”。
2.在DEGUB下,使用汇编指令读取FAT表。
3.根据显示信息,说明FAT的作用与格式。
任务四、查找文件
1.以“任务三”所生成的文本文件(*.txt文件)为目标,根据FDT查找该文件。
2.根据BPB中的信息,计算FDT位置。
3.编写代码显示FDT。
4.根据FDT信息,确定文件首簇号,根据公式计算目标文件起始扇区位置。
5.编写代码读取该文件对应的扇区,查看扇区存储的文件内容。
任务五、文件删除原理
1.删除生成的文本文件
2.查看FDT,检查已删除文件在FDT中所对应的状态信息的变化。
3.查看FAT,检查已删除文件在FAT中所对应的状态信息的变化。
4.查看已删除文件在数据区扇区中的内容,理解文件删除原理。
任务六、文件恢复
1.在FAT16(32)格式的磁盘中,使用WINHEX进行文件恢复操作练习。
九、实验数据及结果分析:
任务一:读取MBS引导扇区
1.给出编写的完整DEBUG指令,记录(拷贝屏幕输出)读出的MBS引导扇区内容,并对其进行结构分析和说明。
以上就是代码以及mbs全部内容,1000-11b7为引导程序,11b8-11bb为磁盘签名,11bc-11bd默认为0,11be-11fd为分区表,四个表项,每个16字节。这个例子里只有一个分区,开头一字节为80,表示主活动分区。最后两字节为结束标志。
2.计算当前磁盘空间大小。
当前磁盘空间为保留扇区(包括MBR)加上所有分区大小,这里保留扇区为3f,分区大小看最后4字节(11ca-11cd),即03bf85,总共为03bfc4*0200字节。
任务二:读取DBS引导扇区
1.给出编写完整DEBUG指令,记录(拷贝屏幕输出)读出的DBS引导扇区内容,并对其进行结构分析和说明。
以上为代码及dbr所有内容,1000-1001为跳转指令,1002为nop,1003-100a为OEM代号,100b-103d为bpb,103e-11fd为引导程序,最后两字节为结束标志。
2.说明和计算磁盘参数块BPB的结构及各段含义和具体数值。
每扇区字节数0200(100b-100c),每簇扇区数4(100d),DBR保留扇区数1(100e-100f),FAT个数2(1010),根目录最大目录项数0200(1011-1012),扇区总数0(1013-1014),介质描述符f8(1015),每FAT扇区数0f0(1016-1018),每磁道扇区数3f(1018-1019),磁头数4(101a-101b),隐藏扇区数3f(101c-101f),扇区总数3bf85(1020-1023),BIOS驱动器号80(1024),1025未用,扩展引导标记29(1026),卷序列号2f2f1ceb(1027-102a),卷标202020303137534f44534d(102b-1035),文件系统类型fat16(1036-103d)。
任务三:读取FAT表
给出编写完整DEBUG指令,记录(拷贝屏幕输出)读出的FAT表内容,并说明FAT的作用与格式。
以上为代码和fat1。每个fat项占2字节:0号描述介质类型,f8表示为硬盘;1号为肮脏标志;2号起没两个字节为1fat项:fff7表示坏簇,ffff表示某文件最后一个簇,00表示可用簇,其他表示某文件的下一个簇的簇号。
任务四:查找文件
记录并说明对文本文件进行查找的过程,以及每步产生的结果与分析。
1.根据BPB中的信息,计算FDT位置。
2.编写代码显示FDT,观察长文件名的显示格式,并记录目标文件的首簇号。
3.根据公式计算目标文件起始扇区位置。
4.读取文件在数据区扇区中的内容并记录。
这里分别实验了fat16和fat32:
Fat16:
根据bpb,每fat表占0f0字节,保留扇区为1,则fdt的起始扇区为1+0f0*2=1e1.
以上为fdt内容,个人觉得用l命令简单得多,上面的a代码还要涉及每磁道扇区数等等,下面用l实现相同的功能:
我用的fat16不支持长文件名,所以后面又用fat32重新做了一遍,这里也可以读取文件内容。如1e1(fdt)+20h+4=205h,即fdt起始扇区+fdt大小+(3-2)*每簇扇区数。文件首簇可以从目录项倒数第6字节和第5字节看到。
下面说fat32:
原理基本跟fat16类似:
这里需要说的是bpb肯定不一样,fat表项为4字节,我们现在主要目的是看长文件名,就不赘余了。
上面的是部分根目录项,其他的被我省了。这里看文件LIHUAN~1.TXT,创建长文件名时,也会创建个短文件名,前6字节+~1构成短文件名,另一个长文件名需要多个目录项时,其倒序排列在短文件名目录项之前。现在查找其内容:由于fat32把根目录放在数据区,故而文件位置在:20(保留扇区数)+2*0ff7(fat大小,在1024-1027)+(08b5-2)*8=65a6:
任务五:文件删除原理
1.显示FDT,记录已删除文件在FDT中所对应的状态信息的变化。
2.显示FAT,记录已删除文件在FAT中所对应的状态信息的变化。
3.查看已删除文件在数据区扇区中的内容。
4.根据以上结果,说明文件删除原理。
由以上几个图片可以看出:fat表里对应fat项清0,fdt对应目录项近把第一字节修改为e5,文件内容并不修改。所谓删除,即把fat表项删除,fdt标示e5表示曾被占用,现已删除。
任务六:文件恢复
1.记录并说明使用WINHEX进行恢复操作的过程中所使用的主要磁盘参数。
主要用到的磁盘参数和前面dos里一样,根据bpb找fat,bpb里可以找到根目录首簇号,结合fat大小数量,找到根目录,查找文件首簇,定位,截取内容,粘贴到新文件里,搞定。
2.简要叙述使用WINHEX进行恢复操作的主要步骤。
下面用winhex处理下xp下一个磁盘fat32分区内容:
创建一个文件:
在winhex里看:
先彻底删除文件:
同前面dos原理,用winhex找到根目录:
再根据首簇3号找到内容(这里说一下,这里文件其实地址已修改,只是首簇号高位本就是0,清0看不到效果,低位不修改)。把文件内容截取出来保存在d盘一个新建文件下:
然后打开,和源文件内容一样,恢复成功。
十、实验结论:
充分了解了mbr,dbr,bpb,fat,fdt等结构,由于同时操作了fat16和fat32,可以看出各结构的异同,熟悉了长文件名的存储,并亲自恢复了一个文件,收获很多。
十一、总结及心得体会:
通过本实验,了解了文件是怎样存储在磁盘上的,通过什么途径和方法能够在磁盘上找到它们,对文件和数据的读写和删除在磁盘上会产生什么样的改变和结果,为下一步理解文件和数据的恢复奠定基础。掌握使用系统基本汇编程序(Debug汇编)进行磁盘和文件结构访问的技术和编程方法。
磁盘存储结构与文件恢复实验(FAT文件系统)的更多相关文章
- 在XC2440的uboot中挂载U盘,利用FAT文件系统读写U盘文件
转:http://blog.chinaunix.net/uid-22030783-id-3347608.html 在XC2440的uboot_V1.3版本中已经支持USB HOST驱动和FAT文件系统 ...
- MySQL 利用frm文件和ibd文件恢复表结构和表数据
文章目录 frm文件和ibd文件简介 frm文件恢复表结构 ibd文件恢复表数据 通过脚本利用ibd文件恢复数据 通过shell脚本导出mysql所有库的所有表的表结构 frm文件和ibd文件简介 在 ...
- 分区恢复和NTFS文件恢复试验
一.实验室名称:主楼实验室A2-412 二.实验项目名称:分区恢复和NTFS文件恢复试验 三.实验学时:6学时 四.实验原理: 借助fdisk.diskgen软件对磁 ...
- Linux 目录结构及文件基本操作
Linux 目录结构及文件基本操作 实验介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux ...
- FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- Linux文件系统简介一(磁盘分区、开机过程、目录结构、文件权限、文件扩展名、目录管理)
Linux:就是一组软件,一套操作系统=核心+系统呼叫接口层. 1.操作系统 操作系统 = 核心(内核) + 系统呼叫(接口) 操作系统其实也是一组程序,重点在于管理计算机的所有活动以及驱动系统中的所 ...
- MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据
记录通过.frm和.ibd文件恢复数据到本地 .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per ...
- FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
随机推荐
- Webroot SecureAnywhere AntiVirus 2014 – 免费6个月
Webroot SecureAnywhere 是由webroot推出的一款云安全软件,除了能够清除病毒外,特点是体积小.强力查杀木马.间谍软件.Rootkit 等等,为你的个人私隐信息提供全面的保护. ...
- react 拖拽排序---原生
定义css, 两个动画 .drag-up { -webkit-animation: dragup ease 0.2s 1; animation: dragup ease 0.2s 1; -webkit ...
- C# 序列化详解,xml序列化,json序列化对比
本文讲讲一些纯技术的东西.并且讲讲一些原理性的东西,和一般的百度的文章不一致,如果你对序列化不清楚,绝对可以很有收获. 技术支持QQ群(主要面向工业软件及HSL组件的):592132877 (组件的 ...
- Codeforces 1009C: Annoying Present
C. Annoying Present time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- C# 根据twitter的snowflake算法生成唯一ID
C# 版算法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- Armadillo安装及使用
以下转载自http://www.cnblogs.com/youthlion/archive/2012/05/15/2501465.html Armadillo是一个C++开发的线性代数库,在vs201 ...
- c++交叉#include问题
这个问题会引起莫名其妙的编译错误, 碰到类里有其他类的指针的话,不要#include,提前声明下即可 class_a.h #ifndef CLASS_A_H #define CLASS_A_H cla ...
- DFS&&BFS
DFS DFS搜索是按照深度的方向搜索,它类似于树的先根遍历,是树的先根遍历的推广. 1.从图的某个顶点v0出发,首先访问v0, 2.找出刚访问过的顶点的第一个未被访问过的邻接点,然后访问该结点,以该 ...
- php 取数组最后一个元素
可以用end()函数取出数组的最后一个元素, $rList = array( array('id'=>1,'txt'=>'a'), array('id'=>2,'txt'=>' ...
- MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法
MySQL开启bin-log后,调用存储过程或者函数以及触发器时,会出现错误号为1418的错误: ERROR 1418 (HY000): This function has none of DETER ...