1、数据恢复系列教程(一)知识准备计算机中数据的记录方法一、二进制逢二进一。计算机中的数都用二进制表示。在数字后面加表示。优点:1、技术容易实现在电路中可以用两种不同的状态(低电平和高电平)表示 0 和 1。2、运算规则简单3、逻辑运算方便0 和 1 能很容易的表示 “否”和“是”,或者是“ 假”和“真” 。二、八进制逢 8 进 1。常用在编写程序或是指令时。在数字后面加字母表示。三、十六进制逢 16 进 1。常用在编写程序或是指令时。在数字后加表示。四、进制间的相互转换由于书写不方便请大家参考“百度文库” 。五、数值数据表示方法1、数据的单位(1)位( Bit):计算机中最小的数据单位,是二进制
2、中的一个数位。(2)字节( Byte):表示 8 位二进制数。简写 B。1B=8bit两者之间的区别:位是计算机中最小的数据单位,字节是计算机中的基本信息单位。(3)字( Word):在计算机中作为一个整体被使用的二进制数字符串叫做一个“ 字”,每个字中二进制位数的长度叫做字长。一个字由若干个字节组成,不同的计算机系统的字长是不同的,常见的由 8 位、16 位、32位、64 位等。字长越长计算机一次处理的信息位就越多,精度就越高。目前大部分计算机都是 64 位的了。2、定点数、浮点数、原码、补码、反码、移码、BCD 码表示方法由于书写不便就不再敖述了,有兴趣的可以上网查查。数据存储的字节序与位
3、序一、Little-endian:小头位序。是一种小值的一端存储在前的顺序。即低字节放在最低位,最高字节放在最高位,反序排列。例如:45CF12H 如果是以小头位序表示就是:12CF45H二、Big-endian:大头位序。是一种大值的一端存在前面的顺序。即最高字节在地址最低位,最低字节在地址最高位。例如:上面的例子如果是大头位序表示就是:45CF12H。字节序与 CPU 架构的关系一、CPU 架构1、x86 架构( IA32)是 Intel 为其第一块 16 位 CPU 专门开发的。x86 指令集和 x87 指令集统称为 x86 架构。目前基本上所有 x86 架构的 CPU 对数据的处理都是
4、采用 Little-endian 字节序。2、x86-64 架构由 AMD 公司设计的,也叫 AMD64.可以同一时间内处理 64 位的整数运算,并兼容于 x86-32 架构。也采用 Little-endian 字节序。3、IA-64 架构是 Intel 为了全面提高以前 IA-32 处理器的运算性能,和 HP 公司共同开发的 64 位 CPU 架构,是专门针对服务器市场开发的全新处理器,放弃了以前的 x86 架构。其字节序适可配置的,两种位序都可以采用。二、CPU 指令集1、CISC 指令集复杂指令集。x86 架构的 CPU 属于此范畴,基本上都采用 Little-endian 字节序。2、
5、RISC 指令集精简指令集。是高性能 CPU 的发展方向,目前中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器几乎全部采用 RISC 指令集的 CPU。两种指令集的 CPU 在软件和硬件上都不兼容。大部分采用 Big-endian 字节序。数据的逻辑运算包括与、或、非、异或运算1、逻辑或运算:也叫逻辑加运算,当输入变量中有一个满足条件时,输出就有效。只有当所有输入变量均不满足条件时,输出才无效。0+0=0;0+1=1;1+0=1;1+1=12、逻辑与运算:也叫逻辑乘运算,当所有输入都同时满足条件时,输出才有效;否则无效。00=0;01=0;10=0;11=13、逻辑非运算:也叫逻辑
6、反运算。0 的非是 1;1 的非是 0.4、逻辑异或运算:0 异或 0=0;0 异或 1=1;1 异或 0=1;1 异或 1=0。注:逻辑异或运算在中是一种很重要的算法,要熟练掌握。数据结构数据结构是计算机学科中的一门专业课程,在此只针对数据恢复中能用到的一些数据结构简单介绍一下。1、分类(1)按照数据结构的关系分类:线性结构、树结构、图结构、集合结构。(2)按照数据结构的层次分类:数据的逻辑结构和物理结构。逻辑结构又分为线性关系和非线性关系。数据的物理结构是数据逻辑结构在计算机中的表示和实现,又叫“存储结构” 。存储结构有四种方法:顺序、链式、索引、散列。(1)顺序:把逻辑上相邻的节点存储在
7、物理位置相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。FAT 文件系统中对于子目录的管理用到了顺序结构。(2)链式:不要求逻辑上相邻的节点在物理位置上也相邻,节点间的逻辑关系是由附加的指针字段表示的。FAT 文件系统中对文件所占用簇的管理就是这种结构。(3)索引:除了建立节点存储信息外,还建立了附加索引表表示节点的地址。NTFS 文件系统中对目录结构的管理就是这种结构。(4)散列:根据节点的关键字直接计算出该节点的存储地址。EXT3 文件系统中对目录结构的管理用到了此结构。树结构一、硬盘的物理 C/H/S硬盘厂家会在硬盘的每张盘片上划分出一个个的磁道(Track,简写 T) ,
8、每个磁道划分为若干个扇区(Sector,简写 S) ,硬盘就是以扇区为单位来存放数据的。硬盘中每个盘片包含两个面,每个面对应一个磁头(Head,简写 H)每个盘面上都同样被划分成相同的磁道和扇区并进行编号。所有盘片上的同一个编号的磁道构成一个圆柱结构,称为柱面(Cylinder,简写 C) 。这样硬盘中某一个具体扇区地址就由该扇区所在的磁头号H 柱面号 C 和扇区号 S 三个数值构成,即物理 C/H/S。二、硬盘的逻辑 C/H/S一中介绍的是硬盘的内部地址,对于计算机系统和程序来讲,要用逻辑 C/H/S 访问硬盘。在计算机系统 BIOS 中断 13H 的入口参数中,磁头寄存器占 8 位,其值为
9、0HFEH(0254),柱面地址占 10 位 01023,其低 8 位单独使用一个寄存器,高两位与扇区地址共用一个寄存器,占其中的高两位。扇区占其中的低 6 位,编号 163。所以逻辑 C/H/S 最大取值为 1023/254/63,其初始值为 0/0/1,那么可以表示的最大空间就是1023*254*63=16450560 约等于 8GB。三、硬盘的 LBA 地址即扇区的逻辑块地址。由于 INT13 的限制,逻辑 C/H/S 地址能访问的最大硬盘空间大约为8GB,于是就引入了 LBA 概念。在 LBA 方式下,系统把所有的物理扇区都按照某种规则看做是一线性编号的扇区,即从 0 到某个最大值。最
10、初被定义为 28 位大小,能够访问大约137GB 空间,后来又做了些修改,扩展为 48 位,可以访问的空间大约为 144PB注:当我们买回一块硬盘后,发现系统显示的容量要比硬盘上标注的少,这主要是换算方法不一致造成的,硬盘厂商按 1MB=1000000 字节计算的,但是按照计算机表示数据的特点、数制的表示方法和计算机本身的运算方式,硬盘的容量单位是以 2 的 n 次方表示的。所以会不一致。1KB=210B=1024B1MB=210KB=1048576B1GB=210MB=220KB=230B=1073741824B1TB=210GB1PB=210TB1EB=210PB1ZB=210EB1YB=
11、210ZB数据恢复系列教程(三)工具简介数据恢复工作中应用最多的是对介质底层数据的分析和编辑,所以要有好的磁盘编辑工具如:DiskEdit,UltraEdit,WinHex,DiskExplorer 等。其中 WinHex 是数据恢复时常用的大名鼎鼎的工具。另外在做练习的时候如果没有专用的硬盘,那么还需要有硬盘虚拟工具如:InsPro。有需要工具的可以在这里把信箱留下,我发给你们。WinHex:是由 X-Ways 软件公司(www.x- )开发的一套专业的磁盘编辑工具。支持 windows98、Windows2000、xp、2003、Win7 。该软件功能非常强大,有完善的分区管理功能和文件管
12、理功能,能自动分析分区表链和文件簇链,并能以不同方式进行不同程度的备份,直至克隆整个硬盘。可以编辑物理磁盘或是逻辑磁盘的任一扇区,内存编辑器可以直接编辑内存。MBR 磁盘分区MBR 磁盘分区是使用十分广泛的一种分区结构,也叫 DOS 分区,Linux 系统、基于 x86 架构的 Unix 系统都支持 MBR 磁盘分区。一、MBR 磁盘分区结构它是硬盘上的第一个扇区。即 LBA 地址描述的 0 号扇区。MBR 扇区由四部分构成1、引导程序占用 512 字节中的前 440 字节,即偏移 0偏移 1B7H 处。2、Windows 磁盘签名位于引导程序之后的 4 个字节,即偏移 1B8H偏移 1BBH
13、 处。是 Windows 系统对硬盘初始化时写入的一个磁盘标识。3、分区表位于偏移 1BEH1FDH 处,共有 64 个字节,是 MBR 中非常重要的一部分。4、结束标志是扇区的最后两个字节,固定值“55 AA”如下图:二、MBR 的作用1、引导程序作用主板 BIOS 在自检通过后,会将 MBR 读取到内存中,然后将执行权交给内存中 MBR 扇区的引导程序,然后判断扇区最后两个字节是否是“55 AA”,如果不是就报错,如果是,程序会查找分区表中是否有活动分区,若有就找到其地址并将该引导扇区读入内存并判断是否合法,如果是就将引导权交个该引导扇区去引导操作系统。2、磁盘签名作用是 MBR 中一个不
14、可或缺的部分,Windows 系统依靠这个签名识别硬盘。3、分区表作用分区表是用来管理分区的,如果分区表被破坏,则硬盘分区就会丢失。具体作用会在后面讲述。4、结束标志作用这是个判断标志,如果不是“55 AA”则程序就无法进行下去。数据恢复系列教程(五)分区结构磁盘分区结构简介包括主磁盘分区和扩展磁盘分区。一、主磁盘分区MBR 分区一般有三种:主分区、扩展分区、非 DOS 分区。1、主分区:也叫主 DOS 分区(Primary DOS Partition) 也叫主磁盘分区。2、扩展分区:扩展 DOS 分区(Extended DOS Partition)。3、非 DOS 分区:一般供其他操作系统使
15、用(非 Windows 系统)。一块硬盘最多只能有 4 个主磁盘分区,被激活的叫主分区,主分区在一块硬盘中只能有一个。二、分区表分区表共占 MBR 扇区中的 64 个字节,以 16 个字节为一个分区表项来描述一个分区的结构。其各项含义如下:起始偏移地址 长度 含义1BEH 1 字节 引导标志(80 为主磁盘分区标志)1BFH 1 字节 起始磁头1C0H 1 字节 起始扇区(占用其中的低 6 位,高两位被柱面使用)1C1H 1 字节 起始柱面(柱面共 10 位,其中高两位保存在上一字节中)1C2H 1 字节 分区类型描述符1C3H 1 字节 结束磁头1C4H 1 字节 结束扇区(同起始扇区)1C
16、5H 1 字节 结束柱面1C6H 4 字节 隐藏扇区数1CAH 4 字节 分区总扇区数(本分区扇区总数)注:分区表是采用的小头位序。三、扩展分区由于 MBR 只给分区表保留了 64 个字节,每个分区参数占用 16 个字节,所以只能描述 4个分区,那么如果分区多于 4 个该如何描述呢,于是就引入了扩展分区的概念。但扩展分区严格的讲并不是一个实际意义的分区,它只是一个指向下一个分区参数的指针,其形成一个单项链表。这样在 MBR 中除了主磁盘分区外,就只需要存储一个叫扩展分区的分区信息,通过这个信息来找到下一个分区的起始位置,以此类推找到所有分区。扩展分区中每个逻辑驱动器的信息都保存在一个类似于 M
17、BR 的扩展引导记录(EBR),但是其没有引导代码部分只包括分区表和结束标志。如下图:数据恢复系列教程(六)文件系统简介 文件系统概论文件系统是为了长久的存储和访问数据而为用户提供的一种基于文件和目录的存储机制。一个新买回来的硬盘首先要进行分区,然后对分区格式化,格式化的过程就是在分区内建立一定的文件系统的过程。一个文件系统由系统结构和按一定规则存放的用户数据组成,以便计算机可以找到并访问它们。文件系统种类繁多,这里只介绍一下文件系统中的一些基本概念和共性1、数据单元数据在写入磁盘或从磁盘读取时每次操作的数据量称为数据单元,其大小是在建立文件系统时就确定的。在不同的文件系统中称呼也不同,在 F
18、AT 和 NTFS 中叫做“ 簇”,ExtX 中叫做“ 块” 。一个数据单元由若干个连续的扇区组成,大小总是 2 的整数次幂个扇区。存储数据是,系统以数据单元为单位为其分配空间。2、坏数据单元就是包含缺陷扇区的数据单元。3、逻辑文件系统地址文件系统建立后,每个数据单元都被分配一个逻辑文件系统地址。4、分配策略位文件分配存储单元时的方法或算法叫做“分配策略” ,一般有三种。(1)第一可用分配策略:当为一个文件分配了一个存储单元后还要继续为其分配时,操作系统会重新从文件系统起始处搜索可以使用的空间。这种方式很容易是文件片段化,并且使被删除的数据的恢复性大大降低。(2)下一可用分配策略:当为文件分配
19、了一个存储单元后还要继续为其分配时,系统不再回到起始处寻找可用空间,而是直接向后搜索。这种方式较为有助于数据恢复。(3)最佳分配策略:当为一个文件分配空间时,系统尽可能的找到足够的连续的空间以避免文件片段化。5、文件更新策略有的程序对文件更新时,直接打开原文件,更新后,直接用新文件覆盖原文件。有的是先产生一个原文件的副本,对副本进行更新,然后将副本以原文件名保存在新的位置并删除原文件。6、松弛空间7、压缩和稀疏文件8、加密文件9、元数据数据恢复系列教程(七) FAT32 文件系统之 DBR FAT 文件系统这是 Windows 系统使用的一种文件系统包括 FAT12、FAT16、FAT32、e
20、xFAT。1、FAT 文件系统用 “簇” 作为数据单元。一个“ 簇”由一组连续的扇区构成,所含扇区数是 2的整数次幂。簇的最大值是 64 个扇区(exFAT 除外)2、FAT 文件系统中的簇由 2 号开始。一、FAT32 文件系统这是大家常用的,重点介绍一下。FAT32 文件系统是从 Windows95 OSR2 版开始使用的,可以支持大于 32MB 小于 32GB 的分区(有第三方软件可以把超过 32GB 的分区格式化成 FAT32,但是微软自己的系统是不可以的) 。1、系统构成包括四部分,它们顺序存放。(1)DBR 及其保留扇区。即 DOS 引导记录,也叫操作系统引导记录。(2)FAT1。
21、文件分配表,也是主 FAT。(3)FAT2。FAT1 的备份。(4)DATA 区(数据区) 。存放用户数据的区域。二、DBR 分析由 5 部分组成:跳转指令、OEM 代号、BPB 参数块、引导程序、结束标志(55 AA) 。如图所示:以下是后面的部分数据结构:起始地址 字节长度 含义00H 3 跳转指令(2 位)后跟一个空口令03H 8 文件系统标志0BH 2 每扇区字节数0DH 1 每簇扇区数0EH 2 保留扇区数10H 1 FAT 表个数11H 2 未使用13H 2 未使用15H 1 介质描述符16H 2 未使用18H 2 每磁道扇区数1AH 2 磁头数1CH 4 隐藏扇区数20H 4 该分区的总扇区数24H 4 每 FAT 扇区数28H 2 标记2AH 2 版本号2CH 4 根目录首簇号30H 2 文件系统信息扇区号32H 2 DBR 备份扇区号,通常为 6 号扇区34H 12 未使用40H 1 BIOS Int13H 设备号41H 1 未使用42H 1 扩展引导标识43H 4 卷序列号47H 11 卷标52H 8 文件系统类型5AH 420 未使用1FEH 2 标识( 55 AA)固定值