Восстановление данных на NTFS разделах

       

Загрузочный сектор– техника восстановления


Осознавая значимость загрузочного сектора, Windows NT при форматировании диска создает его зеркальную копию (правда, только на NTFS разделах). Windows NT 4.0 располагает ее посередине логического диска, а Windows 2000 – в последнем секторе раздела. Если partition table цела, просто перейдите в начало следующего раздела и отступите на сектор назад (Windows 2000) или поделите количество секторов логического диска пополам (с округлением в нижнюю сторону) и скажите редактору диска "GO" (Windows NT 4.0).

Если же таблица разделов разрушена, найти копию сектора можно глобальным поиском (ищите строку "NTFS" по смещению 3 от начала сектора). Поскольку, положение копии фиксировано и отсчитывается от начала логического диска, мы можем с абсолютной уверенностью определить границы раздела. Допустим, копия boot'a найдена в секторе 1289724, а поле NumberSectors содержит значение 12289661. Тогда конечный сектор раздела равен 1289724, а стартовый: 1289724 – 12289661 == 63. Поскольку, загрузочный сектор расположен на расстоянии одной головки от partition table, что соответствует SectorPerTrack секторам, мы можем восстановить и ее.

В отсутствии копий, boot сектор приходится реконструировать вручную. Это легко. В поле идентификатора производителя заносится строка "NTFS    " (без кавычек, но с четырьмя пробелами на конце). Кол-во секторов в треке и число головок заполняются исходя из текущей геометрии диска. Кол-во скрытых секторов (т. е. секторов расположенных между началом раздела и boot-сектором) равно числу головок. Общее количество секторов в разделе вычисляется на основании его размера (если точный раздел не известен, берите значение с запасом).

Кол-во секторов в кластере определить сложнее (особенно, если диск отформатирован со значением, отличным от принятого по умолчанию). Но ситуация вовсе не безнадежна. Последовательно сканируя файловые записи в MFT, найдите файл с наперед известной сигнатурой. Пусть для определенности это будет NTOSKRNL.EXE. Откройте его аутентичную копию в HEX-редакторе, найдите уникальную последовательность, гарантировано не встречающуюся ни в каких других файлах и расположенную в пределах первых 512 байт от его начала, после чего найдите ее глобальным поиском на диске. Начальный номер кластера вам известен (он содержится в MFT), логический номер сектора тоже (его нашел дисковый редактор). Теперь остается лишь соотнести эти две величины между собой. Естественно, если дисковый ректор найдет удаленную копию NTOSKRNL.EXE (или на диске будут присутствовать несколько файлов NTOSKRNL.EXE), данный метод даст осечку, поэтому полученный результат необходимо уточнить на других файлах.

Логический номер первого кластера MFT равен первому кластеру, в начале которого встретилась строка "FILE*" (конечно, при том условии, что MFT не был перемещен). Штатно Windows выделяет под MFT 10% от емкости раздела, помещая зеркало в середину. Кроме того, ссылка на зеркало присутствует и в самом MFT. Если же он разрушен, переместитесь в середину диска, немного отступите назад и повторите глобальный поиск строки "FILE*" (только, смотрите, не вылетите в соседний раздел!). Первое же найденное вхождение с высокой степенью вероятности и будет зеркалом.

Количество кластеров на сегмент обычно равно F6h, а кол-во кластеров на блок индексов – 01h. Других значений мне встречать не доводилось. Серийный номер тома может быть так же любым – он ни на что не влияет.

Для восстановления отсутствующего (искаженного) bootstrap code загрузите консоль восстановления и отдайте команду FIXBOOT.



Содержание раздела