2 0 1 1 年第O 5 期嬲文件系统@ 陈潮 ,靳慧云 ( 浙 江警察 学院 ,浙 江杭 州310053) 摘要:FAT32文件 系统 的DBR扇区中存储 着文件 系统 的重要信 息,由于各种原 因会 引起 D B R 的损坏 , 为了恢复 DB R信息,通过分析 F A T 3 2文件系统的结构体 系,研究寻找 F A T表和根 目录的位置的方法,提出 了一种计算DB R重要参数的方法.通过对 F A T 3 2 文件 系统的D B R信息的恢复实验 ,证明该方法可行. 关键词 :F A T 3 2 ;DOS 引导记录;F A T表 ;恢复技术 中图分类号 :T P 3 9 3 . O 8 文献标识码 :A 文章编号:1 6 7 1 — 1 1 2 2( 2 0 1 1 )0 5 — 0 0 8 1 — 0 3 St ud y o n t he Re c o v e r y Te c hno l o g y o f DOS Bo o t Re c o r de r o n F AT32 Fi l e S ys t e m CHEN Ch a o J I N Hu i — y u n ( Z h e j i a n gPo l i c eC o l l e g e , Ha n g z h o u , Zh e j i a n g 3 1 0 0 5 3 , C h i n a) Abs t r a c t :The r e i s muc h i mpo r t a n t i nf or m a t i o n o n t h e DOS Bo o t Re c o r d e r o f F AT3 2 f il e s y s t e m , DBR m a y be d a ma g e d by v a r io us r e a s o n. By a na l y z i n g t h e s t r u c t u r e o fF AT3 2 f il e s ys t e m a nd s t u d yi n g t h e me t ho d of po s i t i o n of Fi l e A l l o c a t i o n Ta b l e a nd Roo t ,we p u t f o r wa r d a me t ho d t o r e bu i l d DBR. The r e c o ve r y e x p e r im e nt o f DBR o n F AT3 2 f il e s y s t e m h a s pr o v e d t h a t t h e me t ho d i s r ig h t . K e y w o r ds :Fi l e Al l oc a t i o n T a b l e 32 ; DO S Bo o t Re c o r d e r ; Fi l e Al l o c a t i o n T a bl e ; Re c o ve r y T e c h n o l o g y 0引言 在 日常使用计 算机的过程中,由于病毒 、断电、误操作 、振动等原 因会导致硬盘 中采用 F A T 3 2文件系统 的分区的 D B R扇区 信息损坏,一旦 DB R信息丢失或损坏 ,分区表现为未格式化,无 法访 问分 区中的信息 ,而一旦重新格式化分区,很难 再恢 复分 区中的数据 .文章通过研究 F A T 3 2文件系统的结构体系,针对不同的情况 ,采用不 同的方法来恢复 DB R的信息 ,主要研究 了通 过分析 F A T表和根 目录来计算出 D B R的重要参数 ,来重 建DBR扇 区,恢 复分 区信息 ,从而成功访问分区中的数据 . 1 F AT 3 2文件 系统 F A T ( F i l e Al l o c a t i o n T a b l e ,文件分配表 ) 文件系统是一种 比较常见的文件系 统,常见于 Wi n d o w s 操作系统 ,根据 F A T项大小的不同,分为 F A T 1 2 、F A T 1 6和FAT32三种文件系统,F A T 1 2和FAT16文件系统适用于早期容量较小的存储介质, 0 号 已经被淘汰,F A T 3 2 文件系统 目前在硬盘、u盘等存储介质 中得到广泛应用 . 图1 F A T 3 2 文件系统的结构示意图 图l所示为 F A T 3 2文件系统的结构示意图,一个 F A T 3 2 文件系统 由四个 部分组成 : 保 留区、F A T表区域 、根 目录和数据 区. 在FAT32文件系统 中,同时使 用"扇区地址"和"簇地址"两种地 址管理方式 ,保 留区和 F A T表采用 " 扇区地址"管理 ,数 据区 采用 " 簇地址"管理 ,根 目录属于数据 区." 簇"作为 F AT 3 2 文件系统的最小数 据单元 ,一个 " 簇" 由一组连续 的扇区组 成,簇所含的扇区数必须是 2的整数 次幂 ,簇 的最 大扇区数为 6 4个,即32KB,所有的簇从 2 号开始编号. 保 留区位于文件系统 的前部 ,一般占用 3 2 、3 4或38个扇区,保留区的第 1 个扇区,即文件系统的 0号扇区,称为 D B R( D o s B o o t R e c o r d e r ,D o s 引导记录 ) 扇区,存储 着文件系统在硬 盘上的每簇 扇区数、保留扇区数 、总扇区数 、根 目录起始簇号、F . A T表 个数和大小等重要信息,具体的数据结构见表 1 .文件系统 的1号扇区是 F S I N F O信息扇区,用来记录文件系统 中空闲簇 的数量 以及下一个可用簇的簇号.6号扇区是 D B R扇区的备份,7 号扇区是 F I I N F O扇区的备份. 收稿时 间: 2 0 1 1 -0 4 — 1 5 作者简介:陈潮 (1 9 8 0 一) , 男,浙江,讲师,硕士,主要研 究方向 :信 息安 全、计算机 犯 罪侦察 ;靳 慧云 ( 1 9 5 8 一) ,女 ,浙 江,教授 ,主要 研 究方向 :网络安 全监管. 一\一表1FAT32文件 系统的DB R的数据结构 字节偏移量 一(1 6进制 ) 字节数 含义 0 0 - 0 2 3 跳转指令 O 3 一OA8文件系统标志 ,A S C I I 码0B-0C2每扇区字节数,一般为 5 1 2 0 D 一0D1每簇 扇区数 O E - O F 2 保留扇区数,F A T 3 2文件系统一般为 1 1 0 - 1 0 1 F A T表个数 ,F A T 3 2 文件系统一般为 2 分区前已用扇区数 ,指DB R扇区相对于硬盘 0号扇 】 C - 1 F 4 b ( 的扇区偏移 2 0 - 2 3 4 文件系统的总扇区数 2 C 一2F4根目录起始簇号,一般为 2 ~ 3 2 - 3 3 2 备份 D B R扇区的位置 ,一一般为652-598文件系统格式,A S C I I 码5A一 1 FD 4 1 ( ) 末使用 J F E — l F F 2 J 签名值 " 5 5 A A " F A T表 区域 由两个大小 相同的 F A T表组 成 ,即 F A T 1 和FAT2,F A T表用 来描述 数据区中簇 的分 配状 态及 为文件或 目录分配的簇 的前后连接 关系.F A T表南一系列大小相 等的 F A T表项组成 ,如图 2所示,每个 F A T表项由 4个字节组成, 记 录的是 数据 区中每 个簇 的地址 ,由 0开始编 号,0号 表项 与1号表项被 系统保 留用 来存储特 殊标 志,2号表项 开始每 个表项对 应一个 数据区的簇号,F AT表 的表项编号与数 据区 的簇号相同,2 号 表项对应 2号簇 ,0号表项的 1 6进制字节为 " F S F F F F O F " ,1 号表项为 " F F F F F F O F "或"FFFFFFFF".若 某个簇 未被分配 ,那么它所对应 的FAT表项值为 … 0' .若某 个簇 已被分配 ,那 么它所对应的 F A T表项值 为该 文件 或 目录 的下一个 簇 的编 号,如果该 簇是分 配给文件或 目录 的最 后~ 个簇 ,那么该 簇所对应 的FAT表项为 " F F F F F F O F " ,表示~ 个文件或 目录的结束标记 . O f f0et O 1 2 3 4 5 6 7 B 9 A B C 0 E F O 0 0 B E O : 聂 簪窭 匿::::::: : O 0 0 0 B E 2 0 O 0 o 导硕O 0 O 0 1 号瑚OOOO2号! 吝I 薨.D. 0 O 0 O O D O 0O 0O BE 3Q 0 O 0O OO O 0 0 0 0 O OO OO 0 0 O 0 00 O0 OO 0O 0 0 O0 图2FAT32文件系统的F A T 表 数据 区包含根 目录,被 划分成一个个 连续 的簇 ,用来存 储用户的数据,簇从2号 开始编号,一般情况 下根 目录放在 数 据区的最前面,因此 ,根 目录的簇号为 2 .在根 目录下建立 文件或 目录时,在分配给根目录的簇 中建 立相应文件或 目录的 目录项 ,目录项的数 据结 构如表 2 所示,记录文件或 目录存储 位置的起始簇 号等信息.若是建 立 目录 的话,在分 配给 目录 使用 的簇的第 1 个 目录项用来描述该 目录本身的信息,第2个目录项用来描述该 目录的父 目录的信息,从而建立父 目录与子 目录的链接有关 系[1-3102FAT32文件 系统的 DB R信息恢复方法 根据 F A T 3 2 文件系统的 D B R扇区的数据结构,在文件系 统的 6号扇区存在一个 DB R扇区的备份 ,因此 ,若 6号扇区 没有损坏, 那么可以通过 6 号扇区来完全恢复 D B R扇区的信 息. 若DBR扇区和备份 D B R扇区的信息都被破坏 ,那么需要 重建 D B R扇区,根据 表j,要重 建DB R需要 的关键参 数有: I 8 2 表2FAT 3 2 的目录项的数据结构 ( 省略部分 ) 字 节偏移量 字节数 含义 ( 1 6进制 ) 文件名或目录名的第一个 A S C I I 码字符,若是 O x 0 0 ,表00-001示目录项未被分配使用,若是 O x E 5 ,表示曾经 分配过 , 但 已经删除 0 1 - 0 A 1 0 文件名或 目 录名的第 2 到第 1 1 个ASCII码字符 1 4 一l52文件或 目录的起始簇号的高两个字节 1 A一1B2文件或 目录的起始簇号的低两个字节 保 留区扇区数 、F A T表个数 、每个 F A T表 总扇区数、根 目录簇 号、每簇扇区数等信息. 2 . 1确定F A T 表的位置、扇 区数和保 留区扇 区数 通过寻找 F A T表的特征信息来定位 F A T表的位 置,根据 图2,F A T 3 2文件系统的 F A T表的 0号表项为 " F 8 F F F F O F " , 因此可以通过 1 6进制编辑软件 Wi n He x 在 整个 文件系统中搜 索前4个 字节 为"F8FFFFOF"的扇 区,这个 扇区是 F A T表 的起 始扇区,分别 找到两个 F A T表 的起 始扇区,而FAT1与FAT2是连续的,两个起始扇区编号相减便可以得到 F A T表的 总扇区数. 2 . 2确定根 目录的位置 一 般情况下,根 目录位于 F A T 2 表的后面,那么根据前面计 算出的 F A T表 的位置和扇区数,便可以确定根 目录的位置.但是FAT32文件系统并不要求根 目录必须在 F A T 2 表 的后面,根 目录可以在数 据区域的任何一个簇中.通过研究发现 ,有两种 方法来确定根 目录的位 置,一种是通过搜索回收站的方法,在FAT32文件系统刚刚建立的时候,根 目录中没有 " R e c y c l e d "回 收站的目录项 ,当第一次将数 据删除至 回收站时,文件系统才 会在根 目录下建立该 目录,因此,可以通过搜索 " R e c y c l e d "来 寻找根 目录,若在分配给根 目录的第 1 个簇装满 目录项前没有 进行过删除操作 ,那么回收站 目录会建立在根目录的第 2 个簇以后,而分配给根 目录使用的簇往往是不连续 的,因此,在这 种情况下找到的簇并不是根 目录所在的簇.另一种方法是搜索 较早建立于根 目录下的目录或文件,通过搜索 目录或文件名的方 法找到对应目录项所在的扇区,便是根 目录所在的起始扇区. 2 . 3确定每簇扇区数 在FAT32文件系统中,扇区号和簇号是连续编号 的,因此 只要找到两个 目录的起始扇区号和簇号,用扇区号之差除簇号之 差 ,便可以得到每簇扇区数.大多数情况下'在根下往往存在子 目录,只要找到一个子 目录的起始扇区号和簇号,再加上前面已 经确定的根目录信息 ,便可以计算m每簇扇区数.为子 目录分配 的簇空间中,第一个 目录项~定是一个 " . " 目录项 ,用来描述该 子 目录本身.其中一个参数描述了它现在所处的扇区的簇号,因为"."后面是 1 0空格,故搜 索一个子 目录,可以通过 Wi n H e x 搜索位于扇区起始处的 1 6 进制值 " 2 E 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 " , 便可以找到一个子目录的起始扇区号,并根据表 2分析扇区第 1 个目录项的数据结构计算出子 目录的簇号 J . 2 0 1 1 年第0 5 期 3实验 本文采用 I n s D i s k软件生 成一块 4 9 4 M的虚 拟硬盘 ,对于 操作系统而言,跟真 实硬 盘没有区别,分 区结构如 图3所示, 第一 个分 区的文件系统为 F A T 3 2 ,以该分 区作为实验的分区, 后面简称为 " 实验分区" , 并在实际分 区根 目录下建立两个 目录: TE S T 1 、T E S T 2 ,以营造数 据存储 环境,然后使用 " O x 0 7 "值 填充实验分区的 DB R扇 区及保 留扇区,造成 D B R扇区损坏的 实际环境,保存后实验分 区因 DB R扇区损坏,分 区表现 为未 格式化 .下面根据前面的方法 ,来重 建DBR扇区的信息. ' j l ,{ _ J 1 ^} I ,1 t ! j'r l ' 1 …0 2 M ; 篓图3 实验硬 盘分区示意图 3 . 1计算F A T 表大小和个 数 使用 Wi n He x 软件在每 个扇区的第 0个 偏移量处 开始搜 索16进制字节 " F 8 F F F F O F " ,找到的第 1 个扇区如图 4所示 , 显然,这是一个 F A T 3 2文件系统 的FAT表的起始扇区,因此, F A T 1 的起始扇 区编 号为 9 5 ,建立 实验分 区结构见 示意 图5,再向下搜 索,找到的第 2 个扇区如图 5 所示 ,与FAT1的起 始 扇区完全相同, 显然这个扇区是 F A T 1 的备份 F A T 2 的起始扇区, 因此,F A T 2的起始扇区编号为 9 6 0 ,而FAT1与FAT2是连续 的,F A T表的总扇区数 为960—95=865,F A T 2的结束扇区编号 为960+865—1=1824,更新实验分区结构见示意图 7 . 0 ff6 e t 0 l 2 3 4 5 6 7 8 9 A B C D E F 0000BE00 8 FF FF OFI FF FF FF FF FF FF FF 0F FF FF FF OF : … O 0 0 … B E I : — 串::器.0.0.O.0.O0.:0.0.::.O.0.O.0.O.0.O.000 00 BE 30 0 0 00 0 0 0 0 0 0 0 0 00 00 00 0 0 00 00 0 0 00 00 0 0 … … … n ~ n n n… n n nn ~ n n n n ~ nn 麻匠鲢 2 蛙量j扁 区慵 号 御睁地址 图4 F A T 1 的起始扇 区图5 实验分 区结构示意 图offet 0 i 3 4 5 6 7 oo 07 8o oo I F 8 F F FF 0 F J FF FF F F F F . 0 0 0 o 0 7 7 8 8 o 0 2 1 0 0 I . FF o F A T 待征 串: :o O 0 0 0 O 0 0 0 O o 0 0 00 78 030 00 00 0 0 0 0 0 0 0 0 00 0 0 8 9 A B c D E F FF F F FF 0F F F FF FF 0 F 00 0 0 00 00 0 0 00 0o o o 00 0 0 00 O0 O 0 D0 0o 0 o 口0 0 0 00 oo o 0 o0 00 o o n n ~ ~ n n n n 几nnn}i I 穆地址图6 F A T 2 的起始扇区 图7 实验分区结构示意图 3 . 2寻找根 目录 一般情况下,根 目录的簇号 为2,也 就是 F A T 2表的后面 扇区为根 目录的起 始扇区,定位到 1 8 2 5号扇 区,如图 8 所示 , 显然前面建立 的目录 T E S T 1 和TEST2的目录项就在该扇区中, 因此根 目录的簇号为 2 ,起始扇区编号为 1 8 2 5 ,更新 实验分 区结构见示意 图9.3.3计算每簇扇区数 使用Wi n H e x搜索位于每个扇区起始处的16进 制值of e… o l 2 3 4 6 7 8 9 A B c D E F 一』00OE^200 DO C - 2 Be D 3 8E ED 00 20 20 20 20 08 0O 00 A 4 59 0A 6 1 一Y1210OE{210 B e 3 C B8 ac oo o0 ^4 59 1 3 8 3c oo oo oo oo oo oo ( ~ Y 、 . 0ooE422o £5 B O 6 s F^ 5E B7 65 F6 4E 39 59 0F 00 75 0O 00 u 、1 日0 N 00OE423o F F FF FF FF FF FF PF FF FF FF 00 0O FF FF FF F F ' ' ,、 , · Vyw 000£424O E 5 C 2 BD A 8 cE c4 7E 3 1 20 2O 2O 10 OO 日D B4 A 2 6A IA~ 1 000 42SO B9 3C B9 31 2 0O 0O B5 A2 B9 3c 03 O0 OO OO 0 1 2 O 0 ' ( . ue ( . 0 0 0 ~ 4 2 6 0 5 4' 5 5 3 5 4 3 1 2 0. 0 2 0 . 0 2 0 2 0 1 0 0 0 B D日4A2[ j 重j 3 k c 000£427O I B 9 3 c B9 3c 00 00 B5 A2 B9 3C 03 00 e0 00 O0 0 0 … u ' 000E4Ze0 E5 B0 65 F^ SE 97 65 F6 4E 39 59 0F 00 75 0 0 0 0 a ed 洲9u000E 90 FF FF FF FF FF FF FF FF FF FF 00 00 F F FF F F FF y y y1 w w w 01 30E42 ^ 0 E5 C 2 BI D A日c£ c' 7E 3 1 20 20 20 l0 0O 74 B8 A 2 ^^H IA 1 t 000~42 B O B9 3C B0 3c O0 O0 89 A 2 B9 3 c 04 0 0 O0 00 0 0 00 … c 、 0 0 0 E 4 2 C0 5 4 4 5 5 3 5 4 3 2 2 0 2 0 2 0 2 0 2 0 2 0 1 0 o 0 7 4 B 日A2E固t0OOE42 u 0 B9 3c B9 3C O0 00 B9 A2 Bq 3C 04 00 O 0 00 0 0 00 … ( e'( 0OOE42 E 0 0 0 00 00 00 00 00 O0 O0 00 00 O0 O0 O 0 O0 O 0 00 麝E匝垂面豇固描蝙昌潮,地址 E 4 2 0 0 图8 根 目录的起始扇 区rMT1 F AT 2 f 95 96 0 1 825 n ' h 图9 实验分区结构示意图 " 2 E 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 " ,找到 的扇 区如 图l0所 示 ,分 析得出这是分 配给 目录 T E S T 1 的簇 的起 始扇区,根据目录项 的数据结构, 偏移量 0 x 0 0 0 E 4 4 1 4 — 0 x 0 0 0 E 4 4 1 5 为簇号的高位, 偏 移量 0 x 0 0 0 E 4 4 1 A — O x O O O E 4 4 1 B为 簇号 的低 位,D OS分区中采用 L i t t l e — e n d i a n 顺 序存储 ,即低位在 前,高位在后,因此TEST1的簇号为 0 x 0 0 0 0 0 0 0 3 ,即为 3 号簇号,扇区编 号为 1 8 2 6 ,而根 目录的簇号为 2 ,扇区编号为 1 8 2 5 ,所以每簇扇区 数为(1826—1825)/ ( 3 - 2 )= 1 ,即每簇 扇区数为 1 . … o f … f s e t 一未砉一菩茹1l:. : : A … o o o … E 4 4 ~o s 嚣;;襞舄: :器器j:O:OE443i0i0薰i O i O 噩iiiiii羞iiii;g::''…_…'二l呐…… … ' … 图1 0 T E S T1 目录的起始扇 区3.4重建D B R 扇区根据主分 区表 区域 的分区表项 ,得到实验分 区的起始扇 区编号为 6 3 ,总扇区数 为112392,另外由前面几步计 算得到 的重 要参 数 :保 留扇 区数 9 5 — 6 3 = 3 2 、F A T表个 数为2、F A T 表扇 区数 为865、每簇 扇 区数 为l.复制一个 D B R扇 区到实 验分区的 D B R扇区,将上面的几个 参数填入相应位置 ,便可以重 建DBR扇 区, 文件系统恢 复正常, 可以访 问分区中的数据 . 4结论 文章分析 了FAT32文件 系统 的结 构 ,针对 DB R扇区信 息 的损 坏导致分 区表现为未格 式化 的情 况,提f { { 一种 通过搜 索FAT表和根 目录 的信息 ,计 算出 F A T 3 2文件系统的保留扇 区数 、总扇 区数 、每 簇扇 区数 、F AT表个 数 和大小 等参 数,来重建 DB R扇区,从 而恢 复文 件系统 ,通过实验 ,证 明该 方法可行. ( 责编 杨晨 ) 参考文献 : … 戴士剑 ,涂彦辉 数 据恢 复技 术(第2版 )【 M】北京 :, Eq - 7 - ~ 出版 .2 0 0 5:1 1 7 ~1 4 0 . 【 2 1马林 . 数据重现 :文件 系统原理精解与数据恢复最佳 实践 【 M】 . 北京:清华 大学出版社 ,2 0 0 9:9 4 —1 3 5 【 3 】NTF S . MB P .i s d a ma g e d [ E B / OL 】 . h t t p : / / www. n t f s c o m/ mb r — d a ma g e d , h t m , 2 0 1 1 —0 2—1 0 . 8 3 | r _