В настоящее время я пытаюсь перебрать MFT моего NTFS-диска, чтобы найти некоторые файлы с указанным расширением c за очень короткое время.
Я руководствуюсь: Взгляд программистов на извлечение необработанных данных файловой системы .
Теперь моя проблема заключается в понимании того, как я могу перебирать каталоги.
Позвольте мне объяснить, где я застрял:
Я знаю, что каждая запись имеет размер 1024 байта и начинается с FILE
, некоторые из них могут быть каталогами.
Каталоги имеют специальный атрибут $INDEX_ROOT
, который можно использовать для поиска там INDX record
, который составляет 4096 байт и начинается с INDX
.
Из INDX record
вы можете легко найти следующий по размеру предыдущей записи et c ... (который я не не понимаю, какой смысл проходить через записи INDX, если я не могу проверить файлы в папках, связанных с этими записями?).
Моя проблема заключается в понимании того, как я могу перечислить файлы, которые директория держит?
Каким образом доступ к INDX record
папки (например, из Root) позволяет мне получить доступ к ее записям в файле (я ожидаю найти эти 1024-байтовые записи, начинающиеся с FILE
).
Какова точная связь между записями INDX (4096 байт) и записями FILE (1024 байт)?
Я немного знаю, как работают b + деревья, но я действительно не вижу, что делает FILE, INDX записи представляют в нем (узлы, ключи ...).