如何编码实现NTFS格式下删除文件的恢复

主要内容

一、NTFS系统结构原理

二、编码实现NTFS磁盘删除文件扫描

三、编码实现NTFS磁盘删除文件恢复

 

(编码实现的磁盘文件恢复小工具下载地址)

 

 工具截图

 

第一部分 NTFS系统结构原理

 

NTFSWindows NT引入的新型文件系统,由于NTFS的结构复杂,内容繁多,这里仅对NTFS卷上的底层结构做分析。

 

1.     基本概念

 

NTFS格式中,文件以簇的形式分配。最小的单位为扇区,N个扇区为一簇。其中,N的值由引导扇区规定。卷与簇的关系如下表。

卷大小(分区大小)

每簇的扇区

缺省的簇大小

小于等于512MB

1

512字节

513MB~1024MB(1GB)

2

1024字节(1KB)

1025MB~2048MB(2GB)

4

2048字节(2KB)

大于等于2049MB

8

4KB

 

2.    基本结构

 

NTFS格式磁盘的数据分为4大部分。

 

 

引导区主文件列表系统文件文件数据区

 

 

l         引导区(Partition boot sector):所有的磁盘格式都有这个区,占用了磁盘的第一个扇区。

l         主文件列表(Master File TableMFT):它记录了卷上所有的文件,每一个文件对应表中的一条记录。NTFS中目录也是以文件的形式存在的。因此,每一个目录也可以看作一个文件。

l         系统文件(System files)NTFS系统一共有16个系统文件,和8个保留文件。

l         文件数据区(File area):存放文件数据。

 

3.    引导区

 

字节偏移

长度(字节)

常用值

意义

0x00

3

0xEB5290

JMP指令

0x03

4

“NTFS”

文件系统 ID

0x0B

2

0x0200

每扇区字节数

0x0D

1

0x08

每簇扇区数

0x0E

2

 

保留扇区

0x10

3

 

总为0

0x13

2

 

NTFS未使用,为0

0x15

1

 

介质描述 

0x16

1

 

总为0

0x18

2

 

每磁道扇区数 

0x1A

2

 

磁头数

0x1C

4

 

隐含扇区

0x20

4

 

NTFS未使用,为0

0x24

4

 

NTFS未使用,为0

0x28

8

 

扇区总数

0x30

8

 

$MFT的逻辑簇号

0x38

8

 

$MFTMirr的逻辑簇号

0x40

4

 

MFT记录簇数

0x44

4

 

每索引簇数

0x48

8

 

卷标

0x50

4

 

校验和

0x54

430

 

引导代码

0x1FE

2

0x55AA

引导扇区标志

 

 

4.    主文件列表(MFT)

 

l         MFT是一个对应的数据库,由一系列的文件记录组成。卷中每一个文件都有一个文件记录(对于大型文件还可能有多个记录与之相对应)。主文件表本身也有它自己的文件记录。

l         实际上,MFT自身也是一个文件,因此,主文件列表的第一个记录就是它自身。MFT的每个记录都有一个编号,这里我们称它为ID号。这个ID0开始。我们知道MFT自身是NTFS系统的第一个文件,所以文件$MFTID号为0

l         MFT和其他23个文件一起(共24个),组成所谓的“Metafiles”(元文件,也是之前提到的System files,系统文件)。这24个文件中,前16ID0-15)个文件是固定的,剩下的8个文件为保留文件。

l         用户的文件(也包括目录)的MFT中的ID号从24开始排。用户每添加一个文件ID号加1,当某文件被删除时,与之对应的MFT记录将被空出来,如果此时再次添加文件,系统会优先填充ID小的空位。

l         无论簇的大小,文件记录大小都是1K。理论上MFT在卷中的分配空间(占12%)。
逻辑上,MFT在卷中会占用一块连续的空间,但实际情况$MFT可能会被分散在磁盘的几个不同的区域。甚至,可能在元文件的部分就被拆分开。

 

5.    系统文件(System files)

 

序号(ID

元文件

功能 

0

$MFT

主文件列表本身

1

$MFTMirr

主文件表的部分镜像 

2

$LogFile

日志文件

3

$Volume

卷文件

4

$AttrDef

属性定义列表

5

$Root

根目录

6

$Bitmap

位图文件,文件$Bitmap标识的是该卷中簇的占用情况。它用一位代表一簇。为0代表此簇空闲,为1代表此簇已使用

7

$Boot

引导文件

8

$BadClus

坏簇文件

9

$Secure

安全文件

10

$UpCase

大写文件

11-15

$Extend

扩展文件(一共5个文件)

16-23

保留 

 

 

下节地址:http://blog.csdn.net/A00553344/archive/2009/12/19/5039884.aspx 

  • 0
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值