Приемы восстановления данных вручную с помощью Runtime DiskExplorer и Acronis Disk Director Suite.

Помимо названных HEX-редакторов, упомянем еще Runtime DiskExplorer (www.runtime.org) и дисковый редактор, встроенный в программу Acronis Disk Director Suite (www.acronis.ru). Далее в качестве примера при водится Runtime DiskExplorer for NTFS, хотя и с другими редакторами принцип работы тот же.

Еще раз напомним, что безопаснее не вносить изменения непосредственно на проблемный носитель. Лучше сначала сделать посекторный образ и экспериментировать уже с ним.

По умолчанию дисковые редакторы обычно работают с дисками и образами в режиме «только для чтения». Чтобы появилась возможность редактировать образ или диск, программу необходимо переключить в режим кешированной или непосредственной записи. Например, в Runtime DiskExplorer для этого следует открыть диалоговое окно настроек (меню Tools | Options) и установить переключатель Mode (Режим) в положение Virtual write (Виртуальная запись) или Direct read/write (Прямая запись/чтение).

Восстановление таблицы разделов

Предположим, что на диске была очищена или искажена таблица разделов. Типичный случай: разделы удалены средствами установщика Windows или одной из утилит для манипуляций с разделами. Кроме того, мы знаем, что на диске присутствовал по крайней мере один раздел NTFS.

Откроем диск в редакторе, перейдем к нулевому сектору и выберем режим его просмотра как таблицы разделов. Редактор показывает, что записи таблицы разделов пусты.

Наша задача — найти на диске границы разделов и занести правильные значения в MBR. Подсказкой в этом случае будет содержимое, которое должно находиться в начальном секторе раздела.

C чего начинается раздел NTFS, легко вспомнить, просмотрев с помощью дискового редактора другой, исправный, диск. Редактор покажет, что раздел должен начинаться с последовательности байтов ЕВ 52 90 4Е 54 46 53 (как HEX) или лRhNTFS (как текст ASCII).

Вызовите диалоговое окно поиска: Tools | Search (Инструменты | Поиск). Укажите в качестве образца эту последовательность, в шестнадцатеричном или ASCII виде. Запустите поиск, и через некоторое время редактор приведет нас к начальному сектору ближайшего раздела NTFS и покажет его содержимое.

Однако нам нужен только номер сектора. Запишите его на бумаге или, например, в Блокноте. Продолжите поиск — редактор покажет начало следующего раз дела и т.д.

Например, начало раздела NTFS найдено в секторе 20 482 048. Можно выдвинуть два предположения:

  • в начале диска либо находился раздел, отличный от NTFS, например FAT, либо начало этого раздела затерто. Вероятно, найденный раздел — второй;

  • скорее всего, раздел, начинающийся в секторе 20 482 048, простирается до конца диска. Иначе бы мы нашли признаки начала следующего раздела. Впрочем, на чало следующего раздела могло быть и затерто...

Что же, попробуем восстановить хотя бы этот раздел, исходя из полученных сведений. Номера секторов дисковый редактор выдает в координатах LBA, но в таблице разделов их нужно будет указать в координатах CHS. Чтобы перевести одно в другое, нам необходимо узнать геометрию диска.

Для преобразования CHS в LBA существует довольно простая формула:

LBA = (((С × НРС) + Н) × SPT) + S - 1.

Здесь НРС — число головок на цилиндр, а SPT — число секторов на дорожку. Обратное преобразование, т.е. перевод номера LBA в адрес CHS, описывается тремя формулами:

С= int(LBA/SPT/HPC),

H= int((LBA/SPT) mod HPC), S = (LBA mod SPT) + 1,

S= (LBA mod HPC)+1.

Здесь mod — операция взятия остатка от деления, а функция int возвращает целую часть числа.

ПРИМЕЧАНИЕ

Если делить с остатком на бумаге лень, для расчетов можно воспользоваться Калькулятором Windows в режиме «инженерный» или таблицей Microsoft Excel — функции mod и int в них предусмотрены.

В общем случае сведения о геометрии диска выясняются с помощью различных тестовых программ, например Everest. Однако для современных винчестеров практически всегда применяется фиктивная адресация, в которой число логических го ловок (HPC) равно 254, а число секторов (SPT) = 63. Отличается только количество цилиндров!

Таким образом, в нашем примере координаты начала раздела LBA 20 482 048, т.е. C 1279, H 245, S 56. Конец раздела приходится на последний сектор диска (LBA 355 544 319, или C 22 218, H 188, S 40). Длина раздела составляет 335 062 271 секторов.

Остается одно уточнение. На первый взгляд, вычисленные значения CHS можно уже внести в поля таблицы разделов. Если координаты начала раздела укладываются в пространство CHS, так и нужно сделать.

Однако размер полей ограничен. Он составляет всего 2 шестнадцатеричных раз ряда, и более длинное число записать туда попросту невозможно.

Как мы выяснили, если адреса начального и конечного секторов раздела выходят за ограничения CHS, в соответствующие поля таблицы разделов записываются максимально возможные значения (1023, 255, 63). Истинный адрес начала раздела вносится в поле Relative start sector, причем в координатах LBA. Номер конечного сектора выражается через длину раздела, приведенную в поле Total Sectors.

В данном случае так мы и поступим. Введем в первые шесть полей второй записи таблицы разделов максимально возможные значения, а в следующие два поля запишем адрес начала раздела в LBA и длину его в секторах.

Перед выходом из редактора необходимо записать измененные значения непосредственно на диск или в образ, если вы работали с образом. В зависимости от выбранного режима программа несколько раз запросит подтверждения выполняемых действий. Ответьте утвердительно.

После перемонтирования диска или перезагрузки компьютера восстановленный том появится в системе. Скорее всего, на нем обнаружатся файлы и папки, которые считались утраченными.