FAT 文件系统

FAT 文件系统分为 5 个部分:

MBR区

MBR(Main Boot Record 主引导记录区) 位于整个硬盘的 0磁道 0柱面 1扇区,占用 512 字节。

  • ① MBR 引导程序占用其中的前 446 个字节
  • ② 随后的 64 个字节为硬盘分区表(DPT)。每一个分区为 16 个字节,故共可以划分 4 个主分区。
  • ③ 最后 2 个字节是分区的阶数标志 0x55AA
DBR区

DBR(Dos Boot Record 操作系统引导记录区)通常位于硬盘的 0磁道 1柱面 1扇区,是操作系统可以直接访问的第一个扇区。

它包括一个引导程序和一个被称为 BPB(BIOS parameter) 的本分区参数记录表。

  • 引导程序的主要任务是:当 MBR 将系统控制权交给它时,判断本分区根目录前两个文件是不是操作系统的引导文件,以 DOS 为例,即是 IO.SYS 和 MSDOS.SYS。低版本的 DOS 要求这两个文件必须是前两个文件,而高版本的没有这个限制。如果确定存在,就把 IO.SYS 读入内存,并把控制权交给 IO.SYS。
  • BPB 参数记录块记录着本分区的:起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT 个数。
FAT 区

FAT(File Allocation Table 文件分配表)。同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干段,像一条链子一样存放,这种存储方式称为文件的链式存储。

硬盘上的文件常常要进行创建、删除、增长和缩短等操作,这样的操作做的越多,硬盘上的文件就可能被分得越零碎。但是硬盘上会保存着 段与段之间的连接信息(即 FAT),故操作系统可以准确的找到各段的位置并正确读出。
这种以簇为单位的存储方式有一定的缺陷:每个文件的最后一簇都有可能有未被完全利用的空间(Slack 空间)。

为了实现文件的链式存储,硬盘上记录着 哪些簇已经被文件占用,且必须为每个已经占用的簇致命存储后继内容的下一个簇的簇号,对于一个文件的最后一簇,则要指明本簇无后继簇。这些信息都由 FAT 来记录,表中的每个项 记录 1 个簇的信息。由于 FAT 很重要,所以在原 FAT 的后面会再建一个同样的 FAT 做备份。

DIR区

DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

DATA区

DATA(数据)区,是真正意义上数据存储的地方。位于DIR区之后,占据硬盘上的大部分数据空间。


Windows 的文件删除和恢复

Windows 文件删除分为逻辑删除物理删除

  • 逻辑删除:将文件删除到回收站,它只是在系统的文件分配表 FAT 中被删除的文件目录条目的相关位置上做上删除标记,并未将文件从硬盘上彻底删除
  • 物理删除:物理删除相当于 清空回收站,文件的目录条目被破坏,但是在硬盘中的数据依然还在,但是若是重新写入文件将这些空间覆盖则无法找回

当文件被物理删除时,会将该文件的目录条目中的文件名的第一个字符替换成删除标记:E5;其后面的簇都会被标记成未被分配,从而使操作系统无法识别该文件,但是磁盘中的文件数据依然还在。

基于文件目录的数据恢复

当执行“删除文件”操作时,系统做了两件事:

  • 将目录区中该文件的第一个字符改为 “E5H” 来表示该文件已经删除
  • 将文件所占的 文件簇 在 文件分配表 中的对应表项设为 0

系统在文件分配表(FAT)中相应位置检测到 0 就认为该文件簇处于空闲状态,可以写入其他文件,而实际上硬盘的数据并没有被删除,除非新的数据被写进那些扇区,才会把原来的数据覆盖,从而真正删除。

所以在 Windows 中,删除文件可以说仅仅只改变了某些状态。

基于文件数据特征的数据恢复

如果文件删除后,某些存放文件内容的簇被重新分配使用,这将可能导致无法使用文件的目录信息来恢复数据。但是存放文件内容的簇不一定完全被分配到,所以 某些残余的碎片数据 可能该存在。虽然文件的目录数据被破坏后,无法确定哪个数据簇原本属于哪个文件,但是各种类型的文件都有一定的特征,所以可以依据不同文件类型的数据特征来从数据区直接恢复文件数据。

逻辑分区恢复

数据恢复 还包括分区表和 BPB 的恢复 等内容。
文件管理是通过目录来完成的,而目录是建立在分区基础上的,一个物理磁盘通过分区表划分成为若干个逻辑分区,分区表损坏就不能定位逻辑盘。但是每个分区的开头都有其特征,根据这些特征可以恢复分区表,重新分区后也能找到先前的分区。


Linux 系统的文件删除和恢复

组成 Linux 文件系统的数据通常分为两大部分:文件的信息和文件的数据。

  • 文件的信息包括:超级块、索引节点、目录文件等,被称为元数据
  • 文件的数据:即文件的内容

文件的数据存储在磁盘上的数据块中;
数据块的状态(空闲/已分配)信息存储在数据块位图中;
通过索引文件、目录文件等元数据,文件系统才能将一个或多个数据块中的数据组合成抽象的文件。

Linux 中删除一个文件

① 首先将索引节点文件所占用的数据块的状态信息标记为空闲
② 然后增大目录文件中相应目录项的前一项中记录项长度的值
③ Linux 文件的删除过程中 知识释放了索引节点表和所占用的数据块,只要该数据块没有被覆盖,其数据还是存在于磁盘中的

1. 知道文件内容的文件恢复方法

若不小心删除了某个文件,并且知道该文件的部分内容,首先要停止该文件所在分区上的所有 I/O 操作:可以卸载该分区、或者是系统处于单用户状态。

可以将该文件所在分区以只读方式重新挂载:
mount -o ro -n /dev/hda /mnt

下面假设是 /etc/passwd 被删除了,演示恢复步骤:
① 查看挂载情况
df

② 使用 dd 命令将 /etc/passwd 所在分区进行拷贝到一个文件中
dd if=/dev/xxx of of=/home/test.dsk

③ 使用 cat 命令和 grep 命令来查找 /etc/passwd 文件中所知道的文件内容
cat -n test.dsk | grep "root:x:0:1"

④ 使用 grep -A 命令来查找 “root❌0:1” 该行和后面 10 行的内容,并重定向输出
grep -A 10 "root:x:0:1" test.dsk > passwd

⑤ 这样数据就恢复到了 passwd 文件中

2. 根据文件的类型来恢复文件

文件被删除后,文件内容一直保留在磁盘上知道文件被覆盖为止。一旦文件被删除,被删除文件所在的数据块成为未分配空间的一部分。可以通过在未分配空间中寻找文件头的方法来手工恢复文件

用这种方法必须满足以下 3 个条件:

  • 可以识别文件头信息
  • 文件没有被覆盖
  • 文件是连续存储的,如果文件不是连续存储的,则只能恢复部分文件

假设有一个含有被删除的 .jpg 文件的磁盘映像,演示恢复步骤
① 首先通过查找字符 “JFIF” 来确定每个 .jpg 文件的第一个扇区
(JFIF 是 JPG 文件的标注信息,且 JPG 文件的前三个开始字符是 ffd8ff)

② 假设得出被删除文件的起始扇区地址是 0x5e400;将其转换成 10 进制数为 386048;再除以每个扇区的字节数(假设为 512B),即 386048 / 512 = 754.
则 754 就是该文件的起始扇区号

③ 在大多数情况下不知道被删除文件的确切长度,所以只能猜测。
如果猜少了,则只能恢复部分文件,图像就不完整;
如果猜多了,则依旧可以显示完整的图像。

④ 利用 dd 命令来恢复被删除的文件
dd 命令的输入 if 是我们准备好的 磁盘映像文件输出文件则是要恢复出的图像文件。

指定开始扇区号为 754,文件大小猜测为 15KB(30个扇区)
dd if=image.dd of=recover.jpg skip=754 count=30

取证——硬盘数据恢复相关推荐

  1. 硬盘数据恢复经验(转)

    硬盘作为用户存储数据的主要场所,其最大的用途莫过于存储数据,但有时往往由于用户操作不当,造成用户数据的丢失.如果对于普通用户,数据对用户相对而言并不重要,那么丢了就丢了,没有太大关系:但如果数据对用户 ...

  2. 超级硬盘数据恢复软件v2.7.2.6_超级硬盘数据恢复软件的U盘存储卡删除文件的恢复方式...

    我觉得大家不论是学生党还是职业人,现在基本是人手一个备份式存储U盘吧.但是我们日常使用总会遇到不小心的时候,或许会造成U盘的文件被我们不小心误删除,或者想要存储更大的内容,不得不删除现在的一些内容,想 ...

  3. 光盘中删除数据如何恢复_电脑硬盘数据恢复教程,EasyRecovery软件讲解,恢复删除数据...

    你好,我是老盖,下面开始详细讲解教程. 首先我们下载和打开EasyRecovery这个软件. 这是主界面,这里有好几个选项,有高级恢复,有删除恢复,格式化恢复和原始恢复,高级恢复可以自己设置恢复的选项 ...

  4. 删除的数据还能恢复吗?硬盘数据恢复,试试这2个方法

    有时候为了扩展电脑的容量,我们会定时清理一些电脑硬盘里的数据,但是有时候我们会误删文件,删除的数据还能恢复吗?可以的.硬盘数据恢复其实可以通过电脑修复功能和专业的数据恢复软件恢复,下面小编给大家介绍下 ...

  5. EasyRecovery免费电脑硬盘数据恢复软件使用教程

    EasyRecovery硬盘数据恢复软件采用最新的数据扫描引擎,从磁盘底层读出原始的扇区数据,经过高级的数据分析算法,把丢失的目录和文件在内存中重建出原分区和原来的目录结构,数据恢复的效果非常好.操作 ...

  6. 硬盘数据恢复原理与方法(一)

    硬盘数据恢复原理与方法(一) 2006-3-21 12:46:00 们大家可能都遇到过这样的事情,上午刚刚清空垃圾站,下午却突然想起其中有个文件特别重要,这可怎么办?还有可能系统被病毒破坏,硬盘的分区 ...

  7. 硬盘坏了可以修复吗?硬盘数据恢复方法来了

    硬盘坏了可以修复吗?回答这个问题之前,我们首先需要了解的是什么情况导致的硬盘故障,一般情况下,硬盘故障可以分为两类,分别是硬件故障和软件故障,这两者修复方法也不一样,具体内容如下. 硬件故障也就是物理 ...

  8. xboxone硬盘坏的表现_硬盘数据恢复方法实测:硬盘坏了能恢复数据吗?

    硬盘坏了能恢复数据吗?这个问题是大家在使用电脑的时候,经常遇到的一个常见问题.当计算机被病毒侵害时,除了电脑系统瘫痪.个人信息安全受到威胁等表现,还有个让人烦恼的问题--磁盘受到损害,硬盘数据丢失. ...

  9. 固态硬盘数据恢复商家梳理

    在淘宝上整理了几家固态硬盘数据恢复商家联系方式,分享给大家. 淘宝店名 联系时间 地址 联系人 联系方式 价格 成功率 备注 ccbccr服务旗舰店 2020年5月16日 北京市海淀区中关村中科大厦A ...

最新文章

  1. #ifndef 在头文件中的作用
  2. 大疆没有边界:刚拳打GoPro,又脚踢优必选
  3. tensorflow 之tensorboard 对比不同超参数训练结果
  4. 《Adobe Illustrator CC经典教程》—第0课0.1节简介
  5. ionic 添加地图定位功能
  6. python大文件排序_python实现按创建时间对文件排序
  7. 路由器设置虚拟服务器王者人生,路由器设置虚拟服务器王者人生
  8. 95-860-045-源码-定时器-InternalTimerService
  9. vmware不能resume问题,Collect Support Data,vmware.log
  10. ps html css 工具,Photoshop之CSS切图时ps软件常用工具
  11. 对象的可访问性(C++)
  12. CV领域的国际国内期刊会议介绍
  13. visio2003 数据表模型中显示字段类型和注释
  14. 华三ap设置无线服务器,H3C无线控制器V5版本配置AP上线的方法
  15. c语言程序 实现简单计算器功能,C语言实现简单计算器功能(2)
  16. python嗅探m3u8_python通过m3u8下载视频
  17. java 判断手机运营商_如何用java判断手机号运营商?
  18. Python - 各类赋值语句
  19. Oracle——删除用户以及用户下数据
  20. 舒伯特小夜曲(钢琴版)

热门文章

  1. 使用bat脚本完成关机、滑动关机和重启
  2. 5_9 ___2 mc函数
  3. 西门子PLC 发那科机器人案例 西门子PLC触摸屏以及三菱伺服应用
  4. 计算机视觉中的十万个[为]什么(1)
  5. uefi启动linux过程_【转载】简述Linux的启动过程
  6. 电商直播”“国潮”火到国外 这些中式表达用英语怎么翻译?
  7. 20190111 | 期末笔记博文汇总
  8. 【明解C语言】选择语句之if else
  9. 《道德经》全文和译文(经典版本)
  10. Android软件权限知识普及