最近接觸到一個(gè) 0 磁道損壞的硬盤,做數(shù)據(jù)恢復(fù),有機(jī)會(huì)學(xué)習(xí)了一下分區(qū)表的結(jié)構(gòu)。在這里簡(jiǎn)要的做點(diǎn)筆記。
MBR ( Main Boot Record )位于硬盤第一個(gè)物理扇區(qū)(絕對(duì)扇區(qū))柱面 0 ,磁頭 0 ,扇區(qū) 1 (簡(jiǎn)化成( 0 , 0 , 1 ))處。由于 DOS 是由柱面 0 ,磁頭 1 ,扇區(qū) 1 開始,故 MBR 不屬于 DOS 扇區(qū), DOS 不能直接訪問。 MBR 中包含硬盤的主引導(dǎo)程序和硬盤分區(qū)表。分區(qū)表有 4 個(gè)分區(qū)記錄區(qū),這也就是我們?yōu)槭裁粗荒茉谟脖P里最多擁有 4 個(gè)主分區(qū)的原因了。記錄區(qū)就是記錄有關(guān)分區(qū)信息的一張表。它從主引導(dǎo)記錄( MBR )偏移地址 01BEH 處連續(xù)存放,每個(gè)分區(qū)記錄區(qū)占 16 個(gè)字節(jié)。
下面用我的硬盤的分區(qū)表來詳細(xì)解釋一下分區(qū)表各區(qū)段的具體含義。
偏移位置
|
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
0a |
0b |
0c |
0d |
0e |
0f |
00000000 |
33 |
c0 |
8e |
d0 |
bc |
00 |
7c |
fb |
50 |
07 |
50 |
1f |
fc |
be |
1b |
7c |
…………
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
000001b0 |
00 |
00 |
00 |
00 |
00 |
2c |
44 |
63 |
60 |
65 |
50 |
65 |
00 |
00 |
80 |
01 |
000001c0 |
01 |
00 |
07 |
fe |
bf |
fc |
3f |
00 |
00 |
00 |
7e |
86 |
bb |
00 |
00 |
00 |
000001d0 |
81 |
fd |
0f |
c5 |
fe |
ff |
bd |
86 |
bb |
00 |
43 |
3b |
6b |
01 |
00 |
00 |
000001e0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
000001f0 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
00 |
55 |
aa |
要說明的是:這里講的“分區(qū)”,確切說是:主分區(qū)。擴(kuò)展分區(qū)也當(dāng)成主分區(qū),擴(kuò)展分區(qū)內(nèi)部的分區(qū)信息不在 MBR 里面。
要注意的是,在這里出現(xiàn)的數(shù)字均是 16 進(jìn)制數(shù)。
下面就分區(qū)記錄這 16 個(gè)字節(jié)再詳細(xì)解釋一下,以我的第一個(gè)分區(qū)為例:
偏移位置
|
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
0a |
0b |
0c |
0d |
0e |
0f |
000001b0 |
?
|
?
|
?
|
?
|
?
|
|
|
|
|
|
|
|
|
|
80 |
01 |
000001c0 |
01 |
00 |
07 |
fe |
bf |
fc |
3f |
00 |
00 |
00 |
7e |
86 |
bb |
00 |
|
|
80??????????? 分區(qū)狀態(tài)( 80H 表示為激活分區(qū), 00H 表示為非激活分區(qū))
01???? ???? 分區(qū)的開始磁頭
01 00 ???? 分區(qū)的開始柱面和扇區(qū)(這個(gè)地方有點(diǎn)玄機(jī),等會(huì)再詳細(xì)解釋)
07???? ??? 分區(qū)的類型( 0c 表示為 FAT32 , 07 為 NTFS , 0f 代表擴(kuò)展)
fe??????????? 分區(qū)的結(jié)束磁頭
bf fc ????? ?????? 分區(qū)的結(jié)束柱面和扇區(qū)(表示同開始磁頭,等會(huì)詳解)
3f 00 00 00 ??? 從 MBR 到第一個(gè)分區(qū)扇區(qū)的扇區(qū)個(gè)數(shù)(分區(qū)前的扇區(qū)數(shù))
7e 86 bb 00???? 分區(qū)的總扇區(qū)數(shù)
也就是說我的第一個(gè)分區(qū)是一個(gè)從( 0,1,1 )位置開始的可引導(dǎo)的 NTFS 格式的分區(qū)。結(jié)束位置是( 764,254,63 )容量為: 5.86G 。
下面說一下這些數(shù)據(jù)具體是怎么得來的。
1b00e 位置的 80 是分區(qū)狀態(tài),上面已經(jīng)說清楚了,這里就不再多說。
1b00f 位置的 01 是分區(qū)開始的磁頭數(shù),磁頭數(shù)是從 0 到 254 的整數(shù),這里用的是 2 位的十六進(jìn)制數(shù)表示。 (01)HEX=(1)DEC 。
1c000-1c001 位置的 01 00 合在一起,表示的是分區(qū)開始的柱面和磁頭數(shù)。我們知道,一位的 16 進(jìn)制數(shù)可以轉(zhuǎn)換成 4 位的二進(jìn)制數(shù)。那么,將這兩個(gè)兩位的 16 進(jìn)制數(shù)轉(zhuǎn)換分別轉(zhuǎn)換成 2 進(jìn)制數(shù)就是: (01)HEX? =? (0000 0001)BIN ?(00)HEX=(0000 0000)BIN 。然后,取前面的 (01)HEX 的二進(jìn)制的后六位,也就是 (000001)BIN ,他就代表了分區(qū)開始的扇區(qū)數(shù),也就是 1 。這樣取了以后, (01)HEX 還剩下高位的兩個(gè)數(shù),這兩個(gè)數(shù)放到 (00)HEX 轉(zhuǎn)成的二進(jìn)制數(shù)的前面,就構(gòu)成了一個(gè) 10 位的二進(jìn)制數(shù),表示的是分區(qū)開始的柱面數(shù)。到這里,分區(qū)開始位置就確定了。
1c002 位置的 07 表示分區(qū)類型—— NTFS
1c003-1c005 位置的 fe bf fc 表示分區(qū)的結(jié)束位置, fe 代表磁頭數(shù)。 (fe)HEX = (254)10 。然后, (bf)HEX = (1011 1111)BIN ?(fc)HEX = (1111 1100)BIN ,按照前面說的,取 1011 1111 的后六位,得到 (11 1111)BIN = (63)DEC 也就是說結(jié)束的扇區(qū)是 63 。最后, (10 1111 1100)BIN = (764)DEC ,即表示結(jié)束柱面為 764 。 ( 表示開始和結(jié)束位置的這幾位,可以說是分區(qū)表中最復(fù)雜的地方了,看了很多文章,都沒怎么講清楚,希望我這里講的比較清楚了。 )
1c006-1c009 位置的 3f 00 00 00 表示的是分區(qū)前面的扇區(qū)數(shù),我們需要倒過來看這串?dāng)?shù)字,也就是看成 (00 00 00 3f)HEX = (63)DEC ,說明分區(qū)開始前的扇區(qū)數(shù)是 63( 這個(gè)分區(qū)從 (0,1,1) 位置開始,前面當(dāng)然就是一個(gè)磁頭的扇區(qū)數(shù) 63 了 ) 。
1c00a-1c00d 位置的 7e 86 bb 00 表示的是分區(qū)內(nèi)的扇區(qū)總數(shù),和上面一樣,倒過來看成是 (00 bb 86 7e)HEX = (12289662)DEC 。扇區(qū)總數(shù)=(結(jié)束柱面-起始柱面+ 1 )×磁頭數(shù) (255) ×每柱面扇區(qū)數(shù) (63) 。分區(qū)容量=扇區(qū)數(shù)×每扇區(qū)字節(jié)數(shù) (512) 得到單位為字節(jié),再每除以 1024 ,就向 KByte 、 MByte 、 GByte 轉(zhuǎn)換。