(NTFS) Перечислить все папки в. (Root) $ MFT - PullRequest
0 голосов
/ 13 февраля 2020

Я изучаю файловую систему NTFS и сейчас пытаюсь программно перебрать $MFT в моем Windows разделе (C: \).

Моя проблема в том, что Запись INDEX файла . (root) (5-я запись $MFT) содержит только некоторые папки, присутствующие в C: \.

Я успешно получил запись INDEX с этими данными, запущенными из $INDEX_ALLOCATION: 11 01 24.

Необработанные данные записи INDEX выглядят как , что (загружено на pastebin, поскольку оно занимает слишком много места).

(Это целая запись, больше ничего нет, и я в этом полностью уверен).

И моя программа просто выводит:

Index entry corrupted at 0x40
Index entry retrieved at 0xc0 | ->$MFT=0x20000000057a8000 | F=0x0 | $BadClus
Index entry retrieved at 0x128 | ->$MFT=0x18000000057a7800 | F=0x0 | $Bitmap
Index entry retrieved at 0x188 | ->$MFT=0x1c000000057a7c00 | F=0x0 | $Boot
Index entry retrieved at 0x1e8 | ->$MFT=0x2c000000057a8c00 | F=0x10000006 | $Extend
Index entry retrieved at 0x248 | ->$MFT=0x8000000057a6800 | F=0x0 | $LogFile
Index entry retrieved at 0x2b0 | ->$MFT=0x4000000057a6000 | F=0x6 | $MFT
Index entry retrieved at 0x310 | ->$MFT=0x4000000057a6400 | F=0x0 | $MFTMirr
Index entry retrieved at 0x378 | ->$MFT=0x24000000057a8400 | F=0x20000006 | $Secure
Index entry retrieved at 0x3d8 | ->$MFT=0x28000000057a8800 | F=0x0 | $UpCase
Index entry retrieved at 0x438 | ->$MFT=0xc000000057a6c00 | F=0x0 | $Volume
Index entry retrieved at 0x498 | ->$MFT=0x14000000057a7400 | F=0x10000006 | .
Index entry retrieved at 0x4f0 | ->$MFT=0x4000000057af000 | F=0x10000006 | Boot
Index entry retrieved at 0x550 | ->$MFT=0x2c000000057c8c00 | F=0x7007900040027 | bootmgr
Index entry retrieved at 0x5b0 | ->$MFT=0x2c000000057ce400 | F=0x92007900040026 | BOOTNXT
Index entry retrieved at 0x610 | ->$MFT=0x4000000057cf400 | F=0x27 | BOOTSECT.BAK
Index entry retrieved at 0x680 | ->$MFT=0x4000000057d0000 | F=0x10002006 | Recovery
Index entry retrieved at 0x6e8 | ->$MFT=0x4000000057cf800 | F=0x10000006 | System Volume Information
Task ended (MFT ref=0 | size=0x10 = TERMINATOR).

(С F в качестве флага и -> $ MFT в качестве смещения записи файла, определяемой ссылкой MFT в записи INDEX.

У меня вопрос, почему я не вижу другие папки такие как Program Files, Windows, Users et c ...

Recovery, Boot и System Volume Information - это актуальные папки ly находится в C: \, но почему они единственные, кто присутствует в записи INDEX?

Я предполагаю, что я что-то упускаю.

Если вы нужна дополнительная информация, я буду рад предоставить их.

Спасибо.

...