Неверные записи $ FILE_NAME в $ MFT на диске NTFS - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть некоторый код, который анализирует $ MFT на диске NTFS.

Все работает отлично, за исключением того, что несколько записей (примерно 10 из 60000) возвращают неверные символы в имени файла.Смотрите скриншот ниже:

enter image description here

Обратите внимание на символ Unicode, определенный байтом '0E'.Во всех других приложениях это символ подчеркивания.См. Ниже:

enter image description here

Даже в атрибуте $ INDEX_ROOT содержащего каталога он имеет правильное имя:

enter image description here

Я неправильно читаю атрибут $ FILE_NAME?Или я должен игнорировать то, что есть, и всегда вместо этого использовать имя из атрибута $ INDEX_ROOT каталога?Это кажется немного задом наперед?

Примечание: это не всегда '0E', и не всегда это имя файла, но, кажется, всегда только один символ, который является неправильным в каждой 'плохой' записи.

1 Ответ

0 голосов
/ 22 февраля 2019

Для любого в будущем я наткнулся на ответ, читая эту ссылку :

Массив исправлений начинается со смещения 0x30.Первые два байта (0x 8c 06) - это последние два байта в каждом секторе записи.Последние две байты во всех секторах хранятся в следующем массиве исправлений, а именно во всех нулях.

Обратите внимание, что ваши значения будут другими, но вы заметите свои «плохие»Имена файлов присутствуют всякий раз, когда атрибут имени файла выходит за границы сектора (как на скриншотах выше из WinHex).После замены байтов конца сектора соответствующими байтами исправления имена файлов становятся правильными.

...