如何编码实现NTFS格式下删除文件的恢复
主要内容
一、NTFS系统结构原理
二、编码实现NTFS磁盘删除文件扫描
三、编码实现NTFS磁盘删除文件恢复
(编码实现的磁盘文件恢复小工具下载地址)
工具截图
第一部分 NTFS系统结构原理
NTFS是Windows 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 Table,MFT):它记录了卷上所有的文件,每一个文件对应表中的一条记录。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号。这个ID从0开始。我们知道MFT自身是NTFS系统的第一个文件,所以文件$MFT的ID号为0。
l MFT和其他23个文件一起(共24个),组成所谓的“Metafiles”(元文件,也是之前提到的System files,系统文件)。这24个文件中,前16(ID为0-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
如何编码实现NTFS格式下删除文件的恢复相关推荐
- 如何编码实现NTFS格式下删除文件的恢复(结束)
写完"如何编码实现NTFS格式下删除文件的恢复"和"如何编码实现NTFS格式下删除文件的恢复(续一)"后,好多朋友询问下文,但是最近忙着写别的东西,实在是没工夫 ...
- 如何编码实现NTFS格式下删除文件的恢复(续一)
上节地址:http://blog.csdn.net/A00553344/archive/2009/12/18/5031993.aspx 7. 主文件列表(MFT)记录详解 了解了NTFS的基本结 ...
- FAT32下和NTFS下永久性删除文件的恢复
FAT32下和NTFS下永久性删除文件的恢复 查看文件系统类型 FAT32下永久性删除文件的恢复 NTFS下永久性删除文件的恢复 注意事项 总结 查看文件系统类型 右键磁盘点击属性,就可以看到文件系统 ...
- yuv编码成h264格式写成文件
yuv编码成h264格式写成文件 (使用ffmpeg 编码yuv420p编码成h264格式) #include <stdio.h> #include <stdlib.h> #i ...
- linux 下删除文件的 操纵
linux 下删除 文件的 方法::: 1- remove remove(删除文件) 相关函数 link,rename,unlink 表头文件 #include<stdio.h> 定 ...
- del rd命令行下删除文件不需要确认
del rd命令行下删除文件不需要确认发布:dxy 字体:[增加 减小] 类型:转载 - del命令参数说明 /F 强制删除只读文件. /S 从所有子目录删除指定文件. /Q 安静模式.删除全 ...
- 用Winhex手工定位NTFS文件系统下的文件
用Winhex手工定位NTFS文件系统下的文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off ...
- shell下删除文件末尾的空行
shell下删除文件末尾的空行 文章目录 shell下删除文件末尾的空行 你能看懂几个? sed方式 sed -r -n '1h;1!H;${x;s/(.*[^\n])\n*$/\1/p}' /etc ...
- Linux下 删除文件夹下的所有文件
Linux下 删除文件夹下的所有文件,而不删除文件夹本身 的命令: 1.先进入要删除的文件夹 切记 不管用什么命令: cd /app/www/test 2.删除此文件下的文件 rm -f /app/ ...
最新文章
- django之BBS需求分析和orm设计-71
- 06--swift之闭包
- macOS Mojave Version 10.14 新系统字体问题和修改MAC中Launchpad启动器图标行列的数量
- android 按钮动画效果_【css特效】按钮动画 - 按压效果
- 一个能极大提高生产率的Chrome新建标签页扩展
- Blazor University (5)组件 — 字面量、表达式和指令
- Oracle统计信息中的Pending Statistics
- MySQL tips (日期时间操作/concat 等)
- Windows7安装PowerShell5.1方法(Flutter新版本需要)
- div旋转45度_一看就会,一做不废的旋转楼梯建模
- entware mysql 5.5_分享包--K3 基于 entware 构建 debian+宝塔面板+nginx+php+mysql 备份包
- Python接口自动化测试
- 微信公众号开发者模式工作的开发
- 【腾讯开发者大会】天刀手游开发历程(笔记)
- Windows环境下修改redis默认端口和密码,以及启动方式
- 数据结构--栈--两栈共享空间
- 土地利用覆被变化的概念_土地利用/覆被变化(LUCC)研究现状与展望
- Java排序算法——插入排序(Insertion Sort)
- Fedora23 引导修复
- java创建的对象存储到什么地方?