Uディスクファイルシステムの分析(例としてFAT32を使用)

Uディスクファイルシステムの分析(例としてFAT32を使用)

序文

USBフラッシュドライブ
ここに画像の説明を挿入
を用意しました。ここではUSBフラッシュドライブを準備しました。システムはFAT32です。容量は28.8Gです。このマシンとUSBフラッシュドライブで同じ内容の2つのファイルを作成する方法を見てみましょう。違いは何ですか?ここに画像の説明を挿入
これら2つの同じファイルは、同じサイズであっても9Bであることがわかりましたが、それらは異なるバイトを使用しています。
ここに画像の説明を挿入
これは、ファイルストレージがクラスターに基づいているためです。2つのディスクのファイルシステム内のクラスターは同じサイズではなく、テキストファイルは少なくとも1つのクラスターを占有する必要があります。test2が配置されているUディスクのもう1つのクラスターは16バイトです。
ファイルシステムクラスターの概念:
ファイルをディスクに書き込むとき、オペレーティングシステムは多くの場合、ディスク上の空きクラスターに従って不連続セグメントスペースにファイルを分散し、チェーンストレージ構造を形成し、セグメントを接続情報はFATに保存されるため、オペレーティングシステムがファイルを読み取るときに、各セグメントの場所を正確に見つけて正しく読み取ることができます。
ここに画像の説明を挿入

Uディスクファイルシステムの分析

  1. USBドライブを見つけ、WinhexでUSBドライブを開きます
  2. より小さな容量のUディスクを見つけることをお勧めします。
    オペレーティングシステムのブートセクターの知識を補足するために、実験行う前にUディスクデータをバックアップしてください
    。OBR(OSブートレコード、オペレーティングシステムのブートディレクトリ)は通常、各パーティションにあります(パーティションの最初のセクターは、オペレーティングシステムから直接アクセスできる場所であり、高度なフォーマッタによって生成されます。OBRには通常、ブートプログラムと、BPBパラメータブロックと呼ばれるパーティションパラメータレコードテーブルが含まれており、パラメータは、パーティションサイズとオペレーティングシステムのタイプによって異なります。

ブートプログラムの主な機能は、この領域のルートディレクトリにある最初の2つのファイルがオペレーティングシステムのブートファイルであるかどうかを判断することです。その場合、最初のファイルをメモリに読み込んで、ファイルを制御します。BPBパラメーターブロックは、パーティションの開始セクター、終了セクター、ファイルストレージフォーマット、ハードディスクメディア記述子、ルートディレクトリサイズ、FAT番号、アロケーションユニット(クラスターとも呼ばれる)サイズなどの重要なパラメーターを記録します。
次の図はBPBテーブルです。オフセットはオフセットを表し、各値は異なる意味を表し
ここに画像の説明を挿入
ます。FAT32ファイルシステムは、DBRとその予約済みセクター、FAT1、FAT2、およびDATA領域で構成されています。
ここに画像の説明を挿入
FAT32ファイルシステムは大きく4つのブロックに分かれています。最初のブロックはDBR(つまり、ブートセクター)とその予約済みセクターです。DBRもブートセクターであり、1つのセクターを占めますが、予約部分があります。予約部分には、将来実行するいくつかのパラメータが含まれる可能性があります。その長さはBPBで指定されます。2番目の部分は2つのFATテーブルです。最後の領域はデータ領域(DATA)と呼ばれ、ルートディレクトリ、サブディレクトリ、およびファイル領域に分割されます。

次に、winhexを開き、winhexを使用してUディスクを開き
ここに画像の説明を挿入
ます。上のパーティション1をクリックします。下の図に示すように、このパーティション1の最初のセクターは、DBRが配置されている8046セクターにあります。
ここに画像の説明を挿入
最初はEB 58 です。EBは、ジャンプ(スキップ、ジャンプ)の場合、EB 58は、現在の位置から58バイトをジャンプしてそこにジャンプすることを意味します。つまり、33 C9の部分に移動し、ブートプログラムの部分を実行してから、 Uディスクのブートプログラム(58ダオ33 C9のフロントから)の前部がBPBテーブルである一方で、我々はビューをクリックしてくださいに- >テンプレートマネージャ、およびあなたが情報BPBテーブルの内容を表示することができ、ブートセクターFAT32を選択するために、ダブルクリック:
ここに画像の説明を挿入
スタートこれらの3つの命令は、FATテーブルに属さないジャンプ命令です。オフセット4128768から4128778まで(つまり、4D 53 44 4F 53 35 2E 30)、この部分(OEM)は、いわゆるメーカーのロゴであり、Uディスクです。それをフォーマットするためにどのようなシステムが使用されますか?オフセット4128779〜4128780でのセクターあたりの次のバイトは、各セクターの大きさ、つまり512B(02 hex(リトルエンディアン))を表します);次のオフセット4128781から41 2つのビット28782は、各クラスターのセクター数、つまり32(16進数20)を表します。次のパラメーターはすべてこの方法で取得されます。これらのパラメーターの合計オフセットは4192278です。これは55 AA。
次に、番号に注意してください:
各セクター:512B
各クラスターには32セクターがあります
予約セクター(予約セクター):3230セクター
FATSの数(FATテーブル番号):2
(FATテーブル長さ)FATあたりのセクター:14769セクター
ルートディレクトリ1番目のクラスター(ルートディレクトリの先頭のクラスター番号):クラスター2


クラスターは32x512B = 16384B、
現在のDBRセクター番号(8046)+予約セクター番号(3230)= 11276であると計算できます。このセクター番号は、FAT1の場所
ここに画像の説明を挿入
ここに画像の説明を挿入
です。 14769セクターなので、FAT1セクター番号(11276)+ 1セクター長(14769)= 26045は2番目のFATの開始セクター番号です。ジャンプしてFAT1と同じであることがわかりまし
ここに画像の説明を挿入
た。将来はスキップしますFAT2の長さ、26045 + FAT長(14769)= 40814、これはここに画像の説明を挿入
データ領域の先頭までです。データ領域は3つの部分に分割されていませんか?これはルートディレクトリが配置されている場所です。ルートディレクトリが配置されているクラスター番号はクラスター2にあります。 (私は前に言った)。

Uディスクをフォーマットします。フォーマット後に3つの領域がどのように見えるかを見てみましょう。
フォーマット...
まあ。
開いた後、パーティション1は変更されず(つまり、DBR)、
ここに画像の説明を挿入
そのさまざまなパラメーターは変更されません。FAT1にジャンプするここに画像の説明を挿入
と、少し異なることがわかりました。現在、FAT1よりも1行以上少ない行があります。1行は16バイトで、最初の行の最初の12行だけが何かを持ち、以下はすべて0で、FAT2と同じです。しかし、データ領域にジャンプすると、何かが見つかりました。下の図に示すように、Uディスクにtxtファイルコンテンツabcdefgを作成しましたが、ルートディレクトリが0になりました。ここに画像の説明を挿入
つまり、ディスクがフォーマットされた後も、データ領域はそこにありました。以前のディレクトリの内容は失われているため、データを復元できます。フォーマットしても、データ領域が残っている限り復元できます。
しかし、なぜコンピュータはそれらを見ることができないのでしょうか?データの削除はディレクトリを「
ここに画像の説明を挿入
ティアオフ」するだけで、データはまだそこにあるため、Uディスク上に1234567890という内容のnew.txtファイルを新しく作成しました。winhexを更新し、FATテーブル1にジャンプして、FAT1に複数のここに画像の説明を挿入
FF FF FF 0Fがあることを確認します。
FATテーブルの構造を見てみ
ここに画像の説明を挿入
ましょう、FATテーブルの各エントリが4バイト、つまり4x8b = 32bを占めていることがわかります。そこで彼はFAT32を呼び出しました。
ここに画像の説明を挿入
注:各エントリーはクラスターに対応しています。つまり、2番目のエントリはルートディレクトリ用に予約されているため、ルートディレクトリは2番目のクラスタにあります。FFFFFF0Fは終了タグと呼ばれ、このクラスター内のファイルが完了した、つまりこのクラスターが終了したことを示します。最後に、後続のクラスター内のファイルは私のクラスターとは関係ありません。後ろの0,0全体は空白のクラスターを表し、分割されていません。ファイルが提供されている限り、そのようなクラスターを見つけることができます(たとえば、新しいファイルを作成しました)。ファイルシステムが小さい場合は、クラスターが割り当てられ、クラスター3が割り当てられ、削除マークが付けられます。
ここに画像の説明を挿入
次に、比較的大きなファイルをネットワーク上のUSBフラッシュドライブに保存し、winhexを更新して、FAT1にジャンプし
ここに画像の説明を挿入
ます。このファイルは5番目のエントリから割り当てられておらず、17 00 00 00(チェーンストレージ)から割り当てられていることがわかります。次の終了タグFF FF FF 0F、合計25個のクラスターが占有され、ファイルサイズを計算できるようになるまで、ファイル全体が完成しません:25x16384B = 409600B。
この図では、規則性17 00 00 00—> 18 00 00 00—> 19 00 00 00を見つけることができます。各クラスターは、ポインターのように、次のクラスターのクラスター番号を格納します。

次に、ルートディレクトリにジャンプして確認します。
ここに画像の説明を挿入
ルートディレクトリには、Uディスクにあるファイルまたはフォルダの数が記録されます。図に示すように、ルートディレクトリに登録されているアイテムです。たとえば、以前のnew.txtと
ここに画像の説明を挿入ディレクトリは、短いファイル名と長いファイル名に分かれています。
短いファイル名:
2行(上記のnew.txtのファイル名など)で、合計32バイトです。View-> Template Managerをクリックし、ダブルクリックしてFAT Directory Entryを選択し、この短いファイル名のコンテンツ情報を表示します
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

8件のオリジナル記事を公開 いいね4 訪問数290

おすすめ

転載: blog.csdn.net/qq_45521281/article/details/105322233