日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

fat16 文件系统的结构

發布時間:2024/3/26 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fat16 文件系统的结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.引言

FAT文件系統在Windows比較常見,相對于ext系統而言,也比較簡單。是學習文件系統的切入點。

2.FAT16的基本結構

? ? 首先先了解下FAT16文件系統的基本結構依次為:DBR扇區、FAT表1、FAT表2、根目錄和數據區。

? ? DBR扇區:DBR是操作系統可以直接訪問的第一個扇區,包括一個引導程序和一個稱為BPB的本分區參數記錄表。引導程序的主要任務是當MBR將系統控制權交給它時,判斷本分區跟目錄前兩個文件是不是操作系統的引導文件。如果確定是,就將其讀入內存,并把控制權交給該文件。BPB參數塊記錄著本分區的啟始扇區、結束扇區、文件存儲格式、硬盤介質描述符、根目錄大小、FAT個數、分配單元的大小等重要參數。

? ? FAT1,FAT2:是簇的鏈表。在根據目錄項獲取文件的首簇號后,在FAT 找到對應的簇,可以找到下一個簇,一直到文件結束。對于FAT16,每個簇用16Bit來表示,而對于FAT32,使用32Bit來表示。這應該是兩者之間的重要區別。

? ? 根目錄:根目錄的作用就是有文件或者目錄的首簇號,以及文件的長度(目錄的長度是0)。FAT16中,根目錄的所占空間可以根據BPB中的參數——Maximum Root Directory Entries(0x11,2bytes)。

? ? 數據區:文件等數據待的地方。緊跟著根目錄。從2號簇開始。

3.查找文件的過程

? ? 根據DBR中的一些參數得到FAT和根目錄的位置。根據根目錄得到次級目錄的簇號(對于更多級的目錄依此類推),來到該簇后,再根據文件名得到查到對應的文件的首簇和文件長度。根據文件長度得到文件所占的簇的數量。由首簇號到FAT查看文件的簇鏈表,依次得到文件的各個簇,從而也就得到了文件的全部內容。

4.查找文件示例

? ? 選取安卓手機中modem 分區作為對象。modem 在機臺里的掛載點是firmware,可以adb ?shell 進去系統之后,cd firmware看看里面的內容。里面有兩個文件夾:image和verinfo。而我的目的就是要讀到verinfo文件夾里面的文件ver_info.txt。將modem dd出來,然后使用winhex查看二進制文件。

4.1 DBR

? ? 先看通過winhex查看的結果。這個扇區里面基本上能得到大部分的文件系統的參數。(特別注意,存儲是按照小端模式)

下面的表,解釋了一些主要參數的意義。


4.2 FAT

? ? 根據上面的參數,我們可以算出FAT1的偏移地址以及根目錄的偏移值。

FAT1偏移地址:保留扇區(FAT1之前的扇區,包括引導扇區)之后就是FAT1。因此可以得到,FAT1的偏移地址就是1個扇區的位置,也就是512。

FAT2偏移地址:FA1偏移地址+FAT1的大小,512+21*512 = 11264


2字節表示一個簇的狀態。具體意義如下表所示:


每個簇對應的0x0002-0xFFEF之間的值,表示要讀取文件那么下一個簇的簇號。

4.3 根目錄

? ? 根目錄偏移地址: FAT2偏移地址+ FAT2的大小,11264+21*512= 22016

下面看一下根目錄的前面部分:


看到這里,就可以看到前面提到的兩個文件夾了。在根目錄中,一個文件或者一個目錄用32字節來表示。


? ? 因此,可以得到,verinfo目錄的首簇號是 9F 12 也就是 0x129F = 4767號簇。

根目錄的偏移地址是22016,根目錄占32個扇區,所以,2號簇的位置是:22016+32*512=38400 。可以得到verinfo的偏移地址是38400 +(4767-2)*512*32 = 78108160

看看這個位置的二進制:


? ? 顯然,接下來可以看到這個目錄下面,會有ver_info.txt的文件的首簇號和文件的長度。首簇號是 A0 12 也就是0x12A0=4768。文件長度是1F 也就是31<<512*32,因此只占一個簇,不需要回去查看FAT來找到剩下的簇。

根據簇號,又可以得到這個文件所在位置:(4768-2)*512*32+38400 = 78124544

看看這個位置的二進制:


? ? 到這里,也就看到了我們要查看的文件的內容。事實上,這和用mount掛載出來看到的結果是一樣的,撒花~~

看這個還是花了很多時間的。FAT16和FAT32也有所區別,但是實際上大同小異。下篇寫ext2文件系統的結構。

參考文章:http://www.xuebuyuan.com/598485.html

http://blog.csdn.net/menghnhhuan/article/details/4270168??

非常感謝!

總結

以上是生活随笔為你收集整理的fat16 文件系统的结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。