web-dev-qa-db-ja.com

NTFSはパーティションのラベルをどこに保存しますか?

私は16進エディター(wxHexEditor)を使用してハードドライブのコンテンツを調べています。パーティションのラベルが保存されている場所を探しています。

したがって、私が調査しているドライブは、NTFSでフォーマットされたGPTドライブです。 Gpartedで、パーティションの名前とラベルを変更しました。名前は見つけやすく、GPT固有のものであり、パーティションテーブルに格納されます。しかし、ラベルがどこに保存されているのかわかりません。

私のNTFSブートセクターはセクター2048にあります。私は NTFSのウィキペディアページ を引用しています:

NTFSでは、すべてのファイル、ディレクトリ、およびメタファイルデータ—ファイル名、作成日、アクセス許可(アクセス制御リストを使用)、およびサイズ— マスターファイルテーブル(MFT)にメタデータとして保存されます。

そして、段落 Metafiles には、メタファイルのリストが含まれています。

$ Volume:ボリュームに関する情報、つまりボリュームオブジェクト識別子ボリュームラベル[…]

したがって、論理的には、パーティションのラベルはこのマスターファイルテーブルに保存されます。
段落のすぐ上パーティションブートセクターバイトオフセット0x30で、8バイトはを含むクラスターを示します。マスターファイルテーブル。私にとっては0x0000000000000004です。しかし、クラスター4には何もありません。ブロックは完全に空です。

NTFSファイルシステムはパーティションのラベルをどこに保存しますか?

1
Nicryc

情報は正しいです。

フォーマット後、数GBを超えるNTFSでは、MFTは通常クラスター0xC0000にあります。通常のクラスターサイズが8セクターの場合、これは0xC0000×8 = 0x600000 =セクター6291456になります。ウィキペディアで「標準」として指定されている値0x0000 ... 004は、まったく一般的ではありません。

パーティションブートセクタのダンプを投稿できるので、確認できます。

また、16進エディタで文字列「FILE0」を検索するだけで、この文字列はすべてのMFTエントリにあります。通常、最初の24個のMFTエントリのミラーコピーは最初の方にあります。次に、$ Volumeという名前のMFTエントリを見つける必要があります(UCS2で記述されているため、「$。Volume」はhex view)、そこにパーティションラベルを見つけることができるはずです。

3
Ro-ee