切换到宽版
  • 3082阅读
  • 2回复

硬盘数据恢复 文件分配表 [复制链接]

上一主题 下一主题
离线Manboo
 

只看楼主 倒序阅读 0 发表于: 2010-05-03
本部分内容设定了隐藏,需要回复后才能看到
有压力,更努力!
离线Manboo

只看该作者 1 发表于: 2010-05-03
注意:
不要把表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号。.高字节在后,低字节在前是一种存储数字方式,读出时应对其进行调整。是如两字节12H,34H,应调整为3412H。
文件分配表与文件目录(FDT)相配合,可以统一管理整个磁盘的文件。它告诉系统磁盘上哪些簇是坏的或已被使用,哪些簇可以用,并存储每个文件所使用的簇号。它是文件的“总调度师”。
当DOS写文件时,首先在文件目录中检查是否有相同文件名,若无则使用一个文件目录表项,然后依次检测FAT中的每个表项对应的簇中,同时将该簇号写入文件目录表项相的26-27字节,如文件长度不止一簇,则继续向后寻找可用簇,找到后将其簇号写入上一次找到的表项中,如此直到文件结束,在最后一簇的表项里填上FFF8H,形成单向链表。
DOS删除文件时只是把文件目录表中的该文件的表项第0个字节改为E5H,表此项已被删除,并在文件分配表中把该文件占用的各簇的表项清0,并释放空间。其文件的内容仍然在盘上,并没有被真正删除,这就是undelete.exe,unerase.exe等一类恢复删除工具能起作用的原因。
文件分配表在系统中的地位十分重要,用户最好不要去修改它,以免误操作带来严重的后果。
FAT表的定位
 硬盘分区的主要结构说明:
(Cylinder柱面/磁道-Side磁头-Sector扇区地址以下简称为?-?-?)
《主分区》
名称 地址  长度(扇区)
主引导记录(Main Boot Record) 0-0-1 1
系统扇区(System Secotrs)  0-0-2,0-0-63  62
引导扇区(Boot) 0-1-1 1
  FAT16系统中,此扇区包含BPB(BIOS Parameter Block)表,描述逻辑盘结构组成,包含隐藏扇区数目(从0-1-1开始计算)、FAT扇区数、FAT拷贝数、硬盘磁头总数、根目录表项最大值等。
    FAT32系统中,BPB表的偏移与FAT16不同,但表项基本相同。整个隐藏扇区部分都作为逻辑盘的描述区域。
隐藏扇区(Hidden Secotrs):
    FAT16              0-1-1          1
    FAT32              0-1-1          32
文件分配表(File Allocation Table):
    FAT16              0-1-2          根据逻辑盘容量变化   
    FAT32              0-1-33          根据逻辑盘容量变化
    说明:
    FAT16的每个表项由2字节(16位)组成,通常每个表项指向的簇包含64个扇区,即32K字节。
        逻辑盘容量最大为2047MB。
    FAT32的每个表项由4字节(32位)组成,通常每个表项指向的簇包含8个扇区,即4K字节。
        逻辑盘容量最小为512MB。
    对于C分区,在MBR的偏移01c2H处,FAT16为06H,FAT32为0CH。
        有关计算公式为:
        每个扇区长度=512字节
        总簇数=逻辑盘容量/簇容量
        总簇数=FAT表长度(字节)/每个表项长度(字节)-2
        FAT表长度=逻辑盘容量/簇容量*每个表项长度
    FAT表的开始由介质描述符+一串“已占用”标志组成:
        FAT16硬盘----F8 FF FF 7F
        FAT32硬盘----F8 FF FF 0F FF FF FF 0F
    每个有效的FAT结构区包含两个完全相同的拷贝:FAT1、FAT2
文件目录表(File Directory Table),即根目录区,又称为ROOT区:
    紧跟在FAT2的下一个扇区,长度为32个扇区(256个表项)。如果支持长文件名,则每个表项
    为64个字节,其中,前32个字节为长文件链接说明;后32个字节为文件属性说明,包括文件长
    度、起始地址、日期、时间等。如不支持长文件名,则每个表项为32个字节的属性说明。
数据区(Data Area):
    紧跟在FDT的下一个扇区,直到逻辑盘的结束地址。
《扩展分区》
名称 地址 长度(扇区)
扩展分区(Extend Partition) ?-y-1 1
系统扇区(System Secotrs) ?-y-2,?-y-63 62
引导扇区(Boot) ?-(y+1)-1  1
其后各项与主分区相同……


FAT表引起的读写故障

硬盘文件分配表庞大无法手工修复,只能依靠工具。
FAT表记录着硬盘数据的存储地址,每一个文件都有一组FAT链指定其存放的簇地址。FAT表的损坏意味着文件内容的丢失。庆幸的是DOS系统本身提供了两个FAT表,如果目前使用的FAT表损坏,可用第二个进行覆盖修复。但由于不同规格的磁盘其FAT表的长度及第二个FAT表的地址也是不固定的,所以修复时必须正确查找其正确位置,一些工具软件如NU等本身具有这样的修复功能,使用也非常的方便。采用DEBUG也可实现这种操作,即采用其m命令把第二个FAT表移到第一个表处即可(不建议这样做)。如果第二个FAT表也损坏了,则也无法把硬盘恢复到原来的状态,但文件的数据仍然存放在硬盘的数据区中,可采用CHKDSK或SCANDISK命令进行修复,最终得到*.CHK文件,这便是丢失FAT链的扇区数据。如果是文本文件则可从中提取出完整的或部分的文件内容。

软盘文件分配FAT表修复

在运行某个程序时,有时会在屏幕上看到:File allocation table bad,drive A(文件分配表坏)的错误信息,导致程序不能正常运行。
  我们知道,在磁盘中有两个文件分配表:FAT1和FAT2。FAT1用于日常工作,FAT2备用。因此,在FAT1损坏时,可用FAT2表修补。
  具体方法是:运行DEBUG,将FAT2读入缓冲区,用缓冲区的FAT2数据覆盖磁盘中的FAT1。
  例:修复3寸1.44M软盘,在A驱
  在DOS环境下进入debug环境
  在“-”提示符下进行如下操作:
        -L 100 0 0A 9
        -W 100 0 1 9
        -q
  其它类型的软盘的修复方法参照下表进行。
起止逻辑扇区 5.25"低密 5.25"高密 3.5"低密 3.5"高密
BOOT区 0 0 0 0
FAT1 1-2 1-7 1-3 1-9
FAT2 3-4 8-0EH 4-6 0A-12H
  例如我们要修复5.25"高密软盘的FAT,则需将上述参数改为:
        -L 100 0 8 7
        -W 100 0 1 7
        -q
●硬盘数据恢复,二分区表的推算
Master Boot Record

The Master Boot Record is located at the physical beginning of a hard disk, editable using the Disk Editor. It consists of a master bootstrap loader code (446 bytes) and four subsequent, identically structured partition records. Finally, the hexadecimal signature 55AA completes a valid Master Boot Record.


硬盘的主引导记录在硬盘的0磁头0柱面1扇区。
主引导记录由三部分组成:
(1)主引导程序;
(2)四个分区表;
(3)主引导记录有效标志字。
有压力,更努力!
离线Manboo

只看该作者 2 发表于: 2010-05-03
详见表1。
[表1主引导记录结构]

位   置 内   容
0000H -00D9H 主引导记录代码区
00DAH -01BDH 空闲区
01BEH -01CDH 分区1结构信息
01CEH -01DDH 分区2结构信息
01DEH -01EDH 分区3结构信息
01EEH -01FDH 分区4结构信息
01FEH -01FFH 55 AAH 主 引 导 记 录 有 效 标 志

说明:
A,分区表自偏移1BEH处开始,分区表共64个字节,表中可填入四个分区信息,每十六个字节为一个分区说明项,这16个字节含义详见表2。
B,必须注意:扇区号的高二位占用柱面号所在字节的最高二位,即柱面号为10位,扇区号6位。
The format of a partition record is as follows:

Offset Size Description
0  8 bit A value of 80 designates an active partition.

1  8 bit Partition start head
2  8 bit Partition start sector (bits 0-5)
3  8 bit Partition start track (bits 8,9 in bits 6,7 of sector)
4  8 bit Operating system indicator
5  8 bit Partition end head
6  8 bit Partition end sector (bits 0-5)
7  8 bit Partition end track (bits 8,9 in bits 6,7 of sector)
8  32 bit Sectors preceding partition
C  32 bit Length of partition in sectors

Operating system indicators: (hexadecimal, incomplete list)

00 Empty partition-table entry
01 DOS FAT12
04 DOS FAT16 (up to 32 MB)
05 DOS 3.3+ extended partition
06 DOS 3.31+ FAT16 (over 32 MB)
07 OS/2 HPFS, Windows NT NTFS, Advanced Unix
08 OS/2 v1.0-1.3, AIX bootable partition, SplitDrive
09 AIX data partition
0A OS/2 Boot Manager
0B Windows 95+ FAT32
0C Windows 95+ FAT32 (using LBA-mode INT 13 extensions)
0E DOS FAT16 (over 32 MB, using INT 13 extensions)
0F Extended partition (using INT 13 extensions)
17 Hidden NTFS partition

1B Hidden Windows 95 FAT32 partition
1C Hidden Windows 95 FAT32 partition (using LBA-mode INT 13 extensions)
1E Hidden LBA VFAT partition
42 Dynamic disk volume
50 OnTrack Disk Manager, read-only partition
51 OnTrack Disk Manager, read/write partition
81 Linux
82 Linux Swap partition, Solaris (Unix)
83 Linux native file system (ext2fs/xiafs)
85 Linux EXT
86 FAT16 volume/stripe set (Windows NT)
87 HPFS fault-tolerant mirrored partition, NTFS volume/stripe set

BE Solaris boot partition
C0 DR-DOS/Novell DOS secured partition
C6 Corrupted FAT16 volume/stripe set (Windows NT)
C7 Corrupted NTFS volume/stripe set
F2 DOS 3.3+ secondary partition


[表2分区结构信息]
偏移 长度    含义
00H  1   活动分区指示符,该值为80H表示为可自举分区(仅有一个),该值为00H表示其余分区。
01H  1   分区起始磁头号。
02H  1   低6位是分区开始的扇区,高2位是分区开始的柱面的头两位。
03H  1   分区开始的起始柱面号的低8位。
04H  1   系统标志,该值为01H表示采用12位FAT格式的DOS 分区,该值04H表示采用16位FAT格式的DOS分区,该值为05H表示为扩展DOS分区,为06H表示为DOS系统。
05H  1   分区终止头号
06H  1   低6位为分区结束的扇区号,头2位为结束柱面号的前2位。
07H  1   分区结束柱面号的低8位。
08H  4   本分区前的扇区数,低位字节在 前。
0CH  4   本分区总的扇区数,低位字节在前。

重要公式:
02H为X,03H为Y。柱面=(X>>6)*16^2+Y;
以我的硬盘为例:
有九个可用分区,二个不可用分区;
两个Primary NTFS分区,第二个为active;
七个Extened 分区,第五个为NTFS其他为FAT32.
.
主分区表数据:位置cylinder0, head 0,sector1
偏移 0 1 2 3 4 5 6 7  8 9 A B C D E F
0 33 C0 8E D0 BC 00 7C FB  50 07 50 1F FC BE 1B 7C
1 BF 1B 06 50 57 B9 E5 01  F3 A4 CB BE BE 07 B1 04
2 38 2C 7C 09 75 15 83 C6  10 E2 F5 CD 18 8B 14 8B
3 EE 83 C6 10 49 74 16 38  2C 74 F6 BE 10 07 4E AC
4 3C 00 74 FA BB 07 00 B4  0E CD 10 EB F2 89 46 25
5 96 8A 46 04 B4 06 3C 0E  74 11 B4 0B 3C 0C 74 05
6 3A C4 75 2B 40 C6 46 25  06 75 24 BB AA 55 50 B4
7 41 CD 13 58 72 16 81 FB  55 AA 75 10 F6 C1 01 74
8 0B 8A E0 88 56 24 C7 06  A1 06 EB 1E 88 66 04 BF
8 0A 00 B8 01 02 8B DC 33  C9 83 FF 05 7F 03 8B 4E
9 25 03 4E 02 CD 13 72 29  BE 59 07 81 3E FE 7D 55
A AA 74 5A 83 EF 05 7F DA  85 F6 75 83 BE 2E 07 EB
B 8A 98 91 52 99 03 46 08  13 56 0A E8 12 00 5A EB
C D5 4F 74 E4 33 C0 CD 13  EB B8 00 00 80 24 45 00
D 56 33 F6 56 56 52 50 06  53     
1B                00 00
1C 01 46 07 FE 7F 1E C6 28  11 00 99 31 35 00 80 00
1D 41 30 07 FE 7F B2 30 85  4A 00 C3 1C 20 00 00 00
1E 41 B3 0F FE FF FF F3 A1  6A 00 08 FE F7 01 00 00
1F 00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 AA
有压力,更努力!
快速回复
限100 字节
欢迎来到中国数据恢复技术联盟,请勿发表暴力、色情、广
 
上一个 下一个