• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    exFAT文件系統(tǒng)分析及DBR手動(dòng)修復(fù)

    2018-09-06 10:34:44
    山西電子技術(shù) 2018年4期
    關(guān)鍵詞:扇區(qū)大寫字節(jié)

    王 赟

    (山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)

    0 引言

    隨著信息化的不斷發(fā)展,閃存中單個(gè)大文件的存儲(chǔ)需求越來越高,F(xiàn)AT32文件系統(tǒng)的閃存很多時(shí)候已不能滿足需求,NTFS文件系統(tǒng)則不適用于閃存介質(zhì)(執(zhí)行每一個(gè)讀寫操作都需要對(duì)介質(zhì)進(jìn)行多次訪問,對(duì)閃存芯片損傷較大)。exFAT(Extended File Allocation Table File System)文件系統(tǒng)的出現(xiàn)有效解決了這一難題,同時(shí)exFAT文件系統(tǒng)下數(shù)據(jù)恢復(fù)需求也隨之增加,只有深入了解exFAT文件系統(tǒng)結(jié)構(gòu),才能有效恢復(fù)丟失數(shù)據(jù),減少用戶損失。

    1 exFAT文件系統(tǒng)簡介

    1.1 exFAT文件系統(tǒng)結(jié)構(gòu)

    exFAT文件系統(tǒng)是由DBR、FAT表、位圖文件(BITMAP)、大寫文件(UPCASE)、數(shù)據(jù)區(qū)(DATA)組成[1]。結(jié)構(gòu)示意圖如圖1所示。

    DBRFAT表位圖文件大寫文件數(shù)據(jù)區(qū)(包括目錄存放區(qū)以及用戶數(shù)據(jù))

    圖1 EXFAT結(jié)構(gòu)示意圖

    1.2 DBR參數(shù)信息標(biāo)注圖(如圖2所示)

    下面對(duì)這些參數(shù)做詳細(xì)的分析。

    1) 跳轉(zhuǎn)指令:固定值。

    2) 銘文標(biāo)志:EXFAT。微軟將此處設(shè)置為EXFAT。

    3) MBR保留:MBR到當(dāng)前位置的扇區(qū)數(shù)。

    4) 分區(qū)大小:分區(qū)所占用扇區(qū)數(shù)。

    5) FAT表起始扇區(qū):FAT表開始的扇區(qū)號(hào)。

    6) FAT表大?。篎AT表所占用扇區(qū)數(shù)。

    7) 首簇起始扇區(qū)號(hào):首簇即第二簇(位圖文件)開始的扇區(qū)號(hào)。

    8) 分區(qū)內(nèi)總簇?cái)?shù):分區(qū)內(nèi)一共有多少個(gè)簇(也是從二號(hào)簇開始計(jì)算)。

    9) 根目錄首簇號(hào):根目錄位于第幾簇。

    10) 卷序列號(hào):無意義。

    11) 每扇區(qū)字節(jié)數(shù):2的9次,512。

    12) 每簇扇區(qū)數(shù):2的6次,64。

    圖2 DBR信息標(biāo)注

    在exFAT文件系統(tǒng)下0-8扇區(qū)都是作用分區(qū),即結(jié)尾都寫55 AA結(jié)束標(biāo)志,一旦55AA被破壞,分區(qū)則提示未格式化。

    1.3 FAT表分析

    exFAT文件系統(tǒng)和FAT32有極大的相似性,數(shù)據(jù)都從第二簇開始記錄,也都有FAT表[2]。在FAT32中,有兩個(gè)FAT表,用來記錄簇的占用情況。而在exFAT中,只有一個(gè)FAT表,并且只有產(chǎn)生碎片文件時(shí),才會(huì)在FAT表中記錄[3]。FAT表的位置在DBR中偏移50H-53H位置中指定[4]。在圖2中,F(xiàn)AT表的開始位于2048。FAT表的搜索標(biāo)志為F8 FF FF 0F。FAT表的第一項(xiàng)記錄了FAT表的開始標(biāo)志。第二項(xiàng)緊接著就寫了它的結(jié)束,用4個(gè)FF表示,所以第0簇和第1簇都被占用。數(shù)據(jù)就從第二簇開始記錄了(這個(gè)等同于FAT32的FAT表)。第2簇記錄位圖文件可以看出占用了四個(gè)簇。第6簇記錄大寫文件字符,占用一個(gè)簇。第7簇開始就是用戶存放數(shù)據(jù)的區(qū)域了。

    1.4 簇位圖文件

    1.5 大寫字符文件

    1.6 目錄項(xiàng)分析

    1.6.1 卷標(biāo)目錄項(xiàng)

    卷標(biāo)就是分區(qū)的名稱,用戶可以自行命名。exFAT對(duì)其管理的方式就是將其放在根目錄下,用Unicode編碼進(jìn)行存儲(chǔ)。

    1.6.2 位圖文件目錄項(xiàng)

    位圖文件目錄項(xiàng)和卷標(biāo)目錄項(xiàng)一樣,都占用了32個(gè)字節(jié),并且也有自己的搜索特征值81H。位圖文件總是位于第二簇,即首簇。在其目錄項(xiàng)中主要記錄了它的開始位置和大小。

    1.6.3 大寫文件目錄項(xiàng)

    大寫文件的目錄項(xiàng)也是占用了32個(gè)字節(jié),在目錄項(xiàng)中也同樣主要記錄開始位置和大小。

    1.6.4 用戶文件的目錄項(xiàng)

    exFAT文件系統(tǒng)中的每個(gè)用戶文件都有三個(gè)目錄項(xiàng)。也就是我們的85H、C0H、C1H三個(gè)屬性。

    2 手動(dòng)修復(fù)exFAT文件系統(tǒng)下被破壞的DBR

    U盤(或者分區(qū))雙擊打開時(shí)突然提示格式化,排除物理故障后就是DBR的問題了。修復(fù)DBR需要重構(gòu)DBR的一些關(guān)鍵信息。首先去找DBR的備份,exFAT 文件系統(tǒng)中DBR的備份位于12扇區(qū)[3]。如果備份也遭到了破壞,那就需要手動(dòng)修復(fù)被破壞的DBR信息了。首先從別的exFAT分區(qū)復(fù)制一個(gè)完整的DBR,然后對(duì)其關(guān)鍵值進(jìn)行修改(圖3中標(biāo)注的值就是我們要修改的值),下面我們就其關(guān)鍵值的計(jì)算方法做具體說明。

    圖3 損壞的DBR

    1) 計(jì)算MBR保留:首先確定當(dāng)前分區(qū)是主分區(qū)還是邏輯分區(qū),主分區(qū)就寫當(dāng)前DBR的真實(shí)位置,如果是邏輯分區(qū)就是相對(duì)于他的EBR的位置。我們這里只有一個(gè)分區(qū)(主分區(qū)),當(dāng)前在0扇區(qū)就寫0。

    2) 分區(qū)大?。悍謪^(qū)大小的計(jì)算首先要判斷你的硬盤里有多少個(gè)分區(qū),有沒有保留扇區(qū),我們這里只有一個(gè)分區(qū),而且沒有保留扇區(qū),所以直接跳看他的扇區(qū)總數(shù)。如圖4 。填寫62914560。

    圖4 扇區(qū)總數(shù)

    3) FAT表的開始:向下搜索F8 FF FF FF,偏移位置512=0。如圖5(一般就位于2048扇區(qū))。從FAT表中看出,第二簇是首簇,且位圖文件占用4個(gè)簇,大寫文件占用一個(gè)簇。

    圖5 FAT表

    4) 簇大?。焊鶕?jù)FAT看出大寫文件占用一個(gè)簇,并且下一個(gè)文件是根目錄文件,用根目錄的開始扇區(qū)減去大寫文件的開始扇區(qū)就是簇的大小。10560-10496=64 那么簇大小就是64。

    5)首簇起始扇區(qū)號(hào):就是位圖文件開始的扇區(qū)號(hào),我這里給大家提供兩種算法。第一種:搜索特征值,位圖文件開始的值大多為FF FF(存放的數(shù)據(jù)太少就不是FF FF了),可以直接搜索此值。第二種:根據(jù)下一個(gè)元文件(大寫文件)推算。大寫文件的搜索值是固定的,00 00 01 00,偏移512=0 。簇大小也算出來了,然后向上推幾個(gè)簇。計(jì)算為10240扇區(qū)。

    6)總簇?cái)?shù):(扇區(qū)總數(shù)-目錄區(qū)以前的扇區(qū))/ 簇大小(62914560-10240)/ 64 = 982880

    7)根目錄首簇號(hào):從FAT表中看出了根目錄位于第7簇?;蛘咭部梢哉业酱髮懳募傧蛳峦埔粋€(gè)簇。

    8)FAT表大?。篎AT表示記錄分區(qū)內(nèi)所有簇占用情況的,每四個(gè)字節(jié)為一項(xiàng)??偞?cái)?shù)我們也知道,但是FAT表中還有開始的兩項(xiàng)(F8 FF FF FF FF FF FF FF)也需要加上。然后每個(gè)扇區(qū)有128項(xiàng)FAT項(xiàng),用這個(gè)值除以128。(982880+2)/ 128 = 7678.76。但是在exFAT系統(tǒng)中,F(xiàn)AT表的大小都是簇大小的整數(shù)倍,所以不能直接將這個(gè)值寫進(jìn)去。7678.76四舍五入就是7679,7679 / 64 = 119.9 ,近似為120。然后(120+1)*64 = 7744。

    9)將上面計(jì)算的值依次填入DBR中相應(yīng)位置保存如下圖6,分區(qū)可以正常打開。如下圖7。

    圖6 填寫好的DBR

    圖7 分區(qū)正常打開

    由于exFAT分區(qū)的第12個(gè)扇區(qū)中有前11個(gè)扇區(qū)(DBR及保留扇區(qū))校驗(yàn)值的存在,一旦被更改即使上述參數(shù)修該正確,仍會(huì)因校驗(yàn)出錯(cuò)提示格式化,使得Windows無法訪問數(shù)據(jù),只能用winhex或其他數(shù)據(jù)恢復(fù)軟件提取數(shù)據(jù)。想要恢復(fù)數(shù)據(jù)后能讓W(xué)indows直接打開,必須得正確計(jì)算并寫入校驗(yàn)值才行。通過如下方法可以有效計(jì)算校驗(yàn)值:

    UNIT32 BootChecksum(const unsigned char data, int bytes).

    UINT32 checksum = 0;

    for (int i = 0; i < bytes; i++).

    if (i == 106 || i == 107 || i == 112)

    continue;

    checksum = (checksum<< 31) | (checksum>> 1) + data;.

    returnchecksum;.

    設(shè)置一個(gè)校驗(yàn)值變量,初始化值為0,然后逐一讀取前11個(gè)扇區(qū)的每個(gè)字節(jié),跳過106、107、112這三個(gè)字節(jié),循環(huán)計(jì)算直到第11扇區(qū)結(jié)束:校驗(yàn)值為左移31位與右移1位進(jìn)行按位或運(yùn)算,再加上每次讀取到的相應(yīng)字節(jié)值。按照上述檢驗(yàn)算法,寫出了校驗(yàn)?zāi)_本,測(cè)試完全正確。

    3 總結(jié)

    exFAT文件系統(tǒng)中DBR被破壞后就會(huì)出現(xiàn)“提示格式化”故障,導(dǎo)致用戶數(shù)據(jù)無法訪問,手動(dòng)修復(fù)DBR是最有效,最完整修復(fù)此類問題的方法。

    猜你喜歡
    扇區(qū)大寫字節(jié)
    做一個(gè)大寫的“我”
    分階段調(diào)整增加扇區(qū)通行能力策略
    南北橋(2022年2期)2022-05-31 04:28:07
    No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
    大寫的厲害:“00后”少年自制火箭成功上天
    小讀者(2021年4期)2021-06-11 05:42:04
    No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
    “大寫”與“大些”
    U盤故障排除經(jīng)驗(yàn)談
    簡談MC7字節(jié)碼
    基于貝葉斯估計(jì)的短時(shí)空域扇區(qū)交通流量預(yù)測(cè)
    —個(gè)大寫的pink 該入手的都來了
    Coco薇(2016年2期)2016-03-22 02:31:03
    扬中市| 德钦县| 贵溪市| 多伦县| 兴宁市| 宁夏| 井冈山市| 阳城县| 渭源县| 南丹县| 都兰县| 东乡县| 仙游县| 灵台县| 宜黄县| 乐清市| 高州市| 呼图壁县| 临猗县| 石嘴山市| 女性| 巴南区| 明光市| 旺苍县| 凤翔县| 鄂尔多斯市| 连江县| 奉贤区| 潞城市| 金昌市| 高青县| 惠来县| 台中县| 息烽县| 孝感市| 舟曲县| 湛江市| 景宁| 吴川市| 合山市| 鹿邑县|