Практические уроки восстановления данных1
Отличительной особенностью последних лет стало резкое и совершенно неоправданное снижение перечня программного обеспечения, позволяющего восстановить данные после их удаления или форматирования/переразбиения жесткого диска. Причинами такого неадекватного отношения к столь животрепещущей проблеме стали появление в составе операционных систем семейства Windows встроенной защиты от удаления (Recycled Bin) и усилившаяся роль резервного копирования в деле сохранения данных. Однако если корзина была очищена, а резервной копии нет, то восстановить удаленные данные средствами операционной системы не представляется возможным. А ведь старушка MS-DOS не позволяла восстановить удаленные файлы лишь в том случае, если часть секторов, принадлежащих восстанавливаемому файлу, оказывалась перезаписанной.
Урок истории
Первое знакомство со структурой жесткого диска IBM PC/АТ (а точнее, тогда ХТ) произошло на компьютере Olivetti M16, с диском на 20 Мбайт и ОС DOS 2.0. Поводом для знакомства послужила неудачная попытка перенести на него новый DOS 3.0, в результате чего он умер. Как показало вскрытие (тогда еще при помощи программы PCTOOLS), DOS 2.0 отличался от всех последующих отсутствием таблицы разделов (Partition Table). Вместо нее находилась загрузочная запись (Boot Record), как на обычной дискетке2. Более детальное знакомство состоялось в 90-м году с подачи журнала «Доктор Доба», где был напечатан исходный текст программы для защиты диска по паролю, в которую, однако, вкралась ошибка. В общем, у моего коллеги по работе диск исчез совсем, и, немного помучившись, его отформатировали по новой. После этого интерес коллеги к системам безопасности сошел практически на нет. Однако для меня это происшествие стало стимулом для изучения систем защиты дисков, и поэтому пришлось заняться детальным изучением их устройства как на физическом, так и на логическом уровне. В результате была создана почти коммерческая версия защитной системы, с возможностью кодирования данных диска «на лету». Но по ряду причин команда развалилась, и программа сохранилась лишь в нескольких экземплярах у ограниченного круга людей. Полученные знания устройства компьютера и организации DOS позволили нам долгое время на этом зарабатывать, помогая людям в решении их проблем.
В следующий раз за помощью обратились сотрудники одного авиационного КБ, у которых было нарушено разбиение диска с чертежами нового самолета. Диск был поделен программой ADM (была такая система для разделения доступа к диску между несколькими пользователями). Разделов было много, точно больше восьми, причем половина из них была скрыта, то есть имела тип ADM, и данные их ВРВ3 были записаны в файл драйвера ADM. К сожалению, драйвер ADM был потерян вместе с таблицей разделов. История потери осталась тайной, покрытой мраком. Реальностью были только убитый диск и пожелание сотрудников вернуть все «как было». Ручной поиск всех разделов, вместе с последующим ручным же подсчетом числа секторов FAT и ROOT в каждом из скрытых разделов, занял целый рабочий день. В результате чертежи были возвращены владельцам, а от защиты ADM не осталось и следа. После этого случая коллега написал программу, позволяющую искать потерянные разделы на диске и заново создавать РТ. Правда, поскольку написана она была давно, она не понимает диски более 8 Гбайт и не умеет анализировать FAT 32 и NTFS-разделы, но ее можно использовать для быстрого начального поиска всех разделов на небольших дисках.
Урок анатомии
Жесткий диск компьютера PC имеет определенную структуру практически независимо от типа ОС, установленной на нем. Основной частью структуры является Master Boot Record (MBR) — запись, находящаяся в самом первом секторе диска4, по адресу дорожка 0, головка 0, сектор 1. Она содержит РТ и небольшую программу (загрузчик ОС), которая получает управление после отработки программы BIOS. Сама РТ начинается в секторе по смещению 1Веh (4465 в обычном исчислении). Данные, находящиеся в РТ, определяют количество и тип разделов, присутствующих на диске, а также их месторасположение, то есть начало, конец и размер раздела. ВРВ содержит данные о внутренней структуре раздела, например для FAT это количество секторов на FAT, количество копий FAT, количество записей в ROOT (в корневой директории) и другие данные. ВРВ в зависимости от типа FAT может содержать разные данные. Например, в случае FAT 12/16 это обычно Extended ВРВ, хотя если у вас установлен DOS 3.х и диски размером по 32 Мбайт, то может быть и стандартный ВРВ. В FAT 32 BR различается сильнее. Во-первых, она занимает три сектора, во-вторых, повторяется, начиная обычно с седьмого сектора от начала раздела, в-третьих, структура данных сильно изменена, поэтому старые программы часто не работают на FAT 32, в-четвертых, перед таблицей FAT зарезервировано обычно 32 сектора с начала раздела.
Все сектора, содержащие Master Boot Record, Extended Partition и Boot Record, подписаны специальной сигнатурой (кодом 55h ААh) в двух последних байтах сектора. Секторов с РТ на диске может быть несколько — все зависит от того, были ли у вас Extended-разделы или нет. Дальнейшая структура раздела зависит от типа использующей его ОС. Вернемся к FAT, далее идут сектора с данными FAT — обычно своеобразного вида, повторяющиеся ряды цифр, увеличивающиеся на единицу или более, начинающиеся с кода F8h FFh. В них содержится информация о местоположении файлов на диске (так называемые цепочки кластеров). Кластер, как правило, состоит из нескольких секторов; это минимально возможная порция хранения данных на логическом диске с FAT. Его размер зависит от размера диска и типа FAT 12/16/32. Затем идут данные ROOT — повторяющиеся через 32 байт записи с названиями файлов. Потеря данных в любом из разделов может привести к неприятным последствиям. По внешним признакам можно определить, какая часть была потеряна. Если пропала часть FAT, то к части файлов на диске не будет доступа, так как исчезнет связь между записями в директориях и самими файлами на диске. Если потеряется часть ROOT или другой директории, то вместо списка файлов вы увидите «мусор», а сами файлы превратятся в потерянные цепочки. Эти сбои обычно можно вылечить при помощи NDD из состава утилит «товарища» Нортона или стандартного SCANDISK. В случае потери BR вы получите диск, на все попытки обратиться к которому ОС ответит, что он не отформатирован. При потере MBR у вас пропадут все логические диски, которые на нем были. Более детальную информацию по структуре дисков можно получить из технических описаний. Так, долгое время приходилось пользоваться TechHelp сначала по DOS 3.3, а потом по 4.1. Сведения TechHelp, конечно, устарели, но общее представление о данном вопросе получить можно, поскольку все меняется эволюционно.
Выбор физического диска для анализа в DE 8
Пример РТ с одним разделом NTFS
РТ с одним разделом NTFS, но в двоичном или НЕХ-режиме (начало самой таблицы по смещению 1ВЕh и в этом месте записывается флажок активного раздела (80Н) и сигнатура 55h AAh)
Пример РТ с FAT 32, но в DE 2000
Вид BR NTFS (надпись NTFS по смещению 3)
Вид окончания BR NTFS, сигнатура в конце. Виден первый за BR сектор раздела NTFS
Вид BR FAT 32 (надпись MSWIN по смещению 3, тип раздела FAT 32)
Вид окончания BR FAT 32, текст может быть по-русски, названия загружаемых в системе файлов (IO.SYS, MSDOS.SYS) могут меняться в зависимости от ОС, сигнатура в конце
Вид ВРВ FAT 32 в DE 8, видно, что старый формат ВРВ мало совместим с новым, и часть полей содержит нули или их нет
Вид той же ВРВ FAT 32 в DE 2000, видны различия в представлении
Продолжение вида ВРВ FAT 32. Внимание: BR занимает три сектора и обычно повторяется второй раз в седьмом секторе
Вид начала таблицы FAT (код начала F8h FFh). Характерные столбики увеличивающихся цифр (коды FFh FFh) обозначают конец цепочки кластеров, то есть конец файла
Вид ROOT (и вообще любой директории). Особенность: повторы через каждые 32 байта (новая запись — новое имя файла). Длинные имена в Win95/98 могут занимать и больше 32 байт, то есть повторы будут реже, но они будут чередоваться с короткими именами в формате DOS, и похожесть останется
Сектор после вмешательства FDISKа (сектор заполнен кодом F6h, использовавшимся раньше при форматировании дисков). Видно начало раздела NTFS
Вид второго сектора BR FAT 32, особенность: одиноко стоящие в начале почти пустого сектора цифры (в конце будет обязательная сигнатура 55h ААh)
Урок географии
Разберем подробнее случаи утраты MBR и BR. Такие потери могут произойти по ряду причин, но чаще всего — вследствие личного вмешательства пользователей в эти данные. Очень часто из праздного любопытства (например, чтобы проверить, что делает FDISK или DiskManager) человек, нимало не задумываясь и не вдаваясь в подробности вопросов и в общий смысл текста на экране (часто на английском языке), просто тыкает по клавишам. Зачастую даже достаточно опытный пользователь выбирает не тот диск в FDISK, и привет — данные пропали. Остальные причины связаны либо с вирусами, живущими в загрузочном секторе (например, вирусы семейства Stone), либо с вирусами, форматировавшими в один прекрасный день нулевую дорожку диска.
Первая заповедь в подобных случаях: не спешить и ничего не трогать до тех пор, пока не успокоишься, не разберешься и не поймешь, что нужно делать. Обычно поспешные действия только все портят, и становится еще хуже. Второй заповедью является знание и понимание особенностей работы используемого программного обеспечения. Например, мало кто знает, что при попытке создать primary-раздел с помощью программы FDISK и нажатия последовательности <1> и затем опять <1> может произойти трагедия! После некоторых раздумий программа спрашивает: «на весь диск?» Тогда вы, испугавшись или обнаружив ошибку в выборе диска, отказываетесь что-либо создавать и выходите из программы. Но поздно — диск уже испорчен и данные назад не вернутся! При этом новый FDISK, входящий в состав операционных систем Windows 95/98, хоть процентики проверки целостности диска выводит, а старый молчит как рыба. Результат в обоих случаях будет похожим: произойдет заполнение кодом F6 одного или двух секторов на дорожке — первого, а если «повезет», то и седьмого. И так приблизительно три дорожки, по всем головкам на диске, а ведь это весь ваш бывший FAT!
Для восстановления данных необходимо попытаться вспомнить, сколько, каких и какого размера было разделов на диске. Прежде всего следует подготовиться: вам, как минимум, будут необходимы загрузочная дискетка, желательно без вирусов, и программа для редактирования дисков DiskEdit (DE). Если у вас диск более 8 Гбайт, то нужно выбрать DE из новых утилит (NU2000), если диск меньшего объема, то вполне сойдут и DOS-версии (лучше 8-й6 ). Для начала необходимо освоиться с использованием DE, применяя режим «Read only», который автоматически устанавливается при запуске программы. После этого потребуется пара листов формата А3 для записи всех изменений, сделанных вами на диске. Основным правилом при работе с программами прямого доступа к данным жесткого диска является полная запись всех произведенных изменений и сохранение оригинального содержимого изменяемых секторов в файле на дискете. При этом не забывайте указывать число копируемых секторов — дискета не резиновая, и весь «винт» на нее не влезет. Если есть время, можно вообще потренироваться на «мышках» — взять заведомо ненужный диск, поделить его, отформатировать разделы, что-нибудь записать в них и посмотреть структуру данных. И еще одно замечание: в DE отключите режим Auto View, поскольку лучше переключать режимы вручную.
Входим в DE и выбираем объект исследования — пострадавший физический диск. Дальнейшие действия зависят от того, что произошло с диском. Вирус «Stone» можно рассматривать как самый простой случай — оригинальный MBR обычно лежит где-то в десятом секторе. Просмотрите первую дорожку и поищите что-нибудь похожее на оригинальный MBR. При этом надписи могут быть не обязательно на английском языке. Это зависит от языковой версии операционной системы, FDISK из состава которой вы использовали при первоначальном разбиении. Если РТ на вид в полном порядке, а диск просто не грузится, можно попробовать запустить FDISK/MBR. Данная команда восстанавливает ту самую маленькую программку-загрузчик. Если MBR пуст или в нем находится какой-то «мусор», а на первой дорожке не обнаружилась копия MBR, придется копать глубже. Есть смысл пройтись по первым секторам дорожек и поискать нечто похожее на BR. В начале этого сектора обычно записан так называемый ОЕМ-код — MSDOS, IBM, MSWIN, NTFS — по смещению 3 от начала, а в конце обязательная сигнатура 55h ААh. Если вы встретили сектора, заполненные кодом F6h, то вам крупно «повезло» и работы прибавилось в N + 1 раз, где N — количество таких секторов. При обнаружении обязательно записывайте, где и что нашли. Необходимая информация — дорожка, головка, сектор и абсолютный сектор от начала диска. Если у вас новый DE, то информацию о дорожках и головках придется пересчитывать из количества секторов от начала в абсолютные сектора, поделив это число на число секторов в дорожке и затем на число головок7.
Информация к размышлению: обычно все разделы начинаются с первого сектора на дорожке. Если вы получили начало раздела посередине дорожки, то либо вы неверно подсчитали, либо нашли не то, что искали. Кроме того, возможно, что ваш BIOS пересчитал LBA-диск по-другому. При нахождении в начале каждой дорожки «магических» F6h попробуйте найти второй сектор раздела. В зависимости от его типа это может быть начало FAT, второй сектор BR FAT 32 или первый сектор NTFS. К сожалению, работать с UNIX-разделами мне не приходилось, поэтому никакой информации по ним привести не можем. Для поиска FAT можно воспользоваться кодом ее начала F8h FFh. Искать ROOT можно по названиям системных файлов IO.SYS, MSDOS.SYS, COMMAND.COM8.
Итак, вы нашли первый сектор первого раздела или хотя бы определили его положение. Однако если на диске были еще разделы или у вас была NTFS, то поиски стоит продолжить. У NTFS есть одна полезная особенность — копия BR в конце раздела, то есть даже в случае потери первой BR ее можно восстановить, при условии что «разрушительный вихрь» не долетел до конца этого раздела. Если раздел NTFS был один и на весь диск, то вторая копия BR, скорее всего, лежит в конце диска. В противном случае поиски придется продолжить. Для поиска лучше выбрать сигнатуру 55h ААh и искать ее по смещению 5109. Поиск в DE — процесс долгий, поэтому стоит запастись кофе и валерьянкой. Если найдете что-то похожее на искомую информацию, не поленитесь пометить, где и что нашли. После поиска просмотрите найденное и проверьте, соответствуют ли типы разделов и их размер тому, что вы помните о своем диске. Поменяйте режим просмотра на соответствующий типу данных (для РТ — <F6>, для BR с ВРВ — <F7>). Проверьте следующие за ними сектора на соответствие искомым данным.
Теперь приступим к построению РТ10. Перейдите в первый сектор на нулевой дорожке/головке диска. Выберите режим РТ <F6> и задавайте тип первого раздела11. Для задания типа FAT 32 в старом DE придется в режиме НЕХ ввести код 0Вh12. Далее по своим записям задаем начало и конец раздела — абсолютный сектор начала раздела и число секторов в разделе, включая одну BR (FAT) или две (NTFS — начальную и конечную). Эти цифры стоит перепроверить13, так как из-за неправильно введенных данных раздел может оказаться нечитабельным. И еще — не стоит пытаться восстановить сразу все разделы диска. Вначале разберитесь полностью с одним и лишь потом приступайте к следующему. Если у вас были разделы Extended DOS и при сканировании диска вы обнаружили еще несколько РТ (возможно, без загрузочной программы), то достаточно указать в MBR ссылку на первую из них с типом Extended, и тогда все последующие диски, как правило, становятся доступными автоматически. Итак, раздел найден, но бывает, что его ВРВ вместе с BR бесследно исчезают. Что делать в случае NTFS, было описано выше, но если у вас DOS или Windows 95/98, то придется еще немного поработать. Берите сектор BR с любого похожего по размеру и типу диска, а если никакого нет, то можно попробовать самостоятельно заполнить поля ВРВ или ВРВ для FAT 32, а в конце поставить сигнатуру 55h ААh. Если правильно заполнить все поля ВРВ — все должно получиться14. Для этого придется подсчитать число секторов в каждой из копий FAT и указать число этих копий. Для FAT 12/16 необходимо указать число секторов в ROOT и получить из него количество записей в нем15. Для FAT 32 количество секторов перед первой FAT обычно равно 32. Чтобы избежать хотя бы части подсчетов, стоит попробовать просто скопировать ВРВ. Обычно DOS и Windows 95/98 как бы подгоняют диски под одну мерку, то есть в BR значения основной части полей просто совпадут с аналогичными значениями с такого же по объему логического диска. В случае правильного заполнения полей ВРВ вы увидите этот раздел, но писать на него или запускать пока ничего не стоит. Рекомендуется также при перезагрузке с живых жестких дисков не запускать Windows 95/98 или Windows NT, поскольку они иногда пишут в служебные области диска без предварительного уведомления. Рекомендуется использовать NC или VC под DOS. Для просмотра дисков NTFS можно использовать утилиту NTFSDOS, скачать ее можно по адресу http://www.sysinternals.com/. К слову сказать, эта утилита понимает даже частично битые (то есть с потерей части данных) диски, которые можно скопировать. Конечно, при этом теряются длинные имена и файлы, названные русскими буквами, но это пустяк по сравнению с утратой всего диска. Если после перезагрузки вы увидели содержимое диска, попробуйте «походить» по нему. Если же забыли команды MS-DOS (CD, DIR и, может быть, TYPE) — обращайтесь к справочникам. В результате вы сможете оценить корректность восстановления данных. Для дисков с FAT можно запустить программу NDD из NU2000 или SCANDISK и проверить целостность диска с их помощью. При любых попытках исправить указанными средствами ваш диск сохраняйте резервную копию исправленного. В том случае, когда FDISK при неудачном с ним обращении «побил» вам FAT, в результате чего некоторые директории стали недоступны, можете попробовать восстановить FAT с помощью NDD. Однако если вы уверены в себе, то можете самостоятельно скопировать «битые» сектора из одной копии FAT в другую16. При разрушении данных внутри раздела с NTFS можно попробовать «подлечить» его, используя встроенную программу диагностики дисков.
Урок прикладного материализма
Описанные выше методы и рекомендации по восстановлению исходного состояния данных имеют один существенный недостаток: будучи элегантными и ясными в теории, они довольно сложно реализуются на практике. Их использование подразумевает, как минимум, наличие у пользователя теоретических знаний об организации информации на магнитном носителе и компьютерных систем счисления (двоичной и шестнадцатеричной). При этом приходится констатировать непрерывное снижение уровня знаний именно в этой области, поскольку их необходимость во времена рекламного слогана «кликни Деда Мороза» кажется весьма сомнительной. Являясь представителем относительно молодого поколения IT-специалистов и поступив на физический факультет МГУ в 1992 году, я имел возможность воочию наблюдать смену приоритетов в преподавании различных тем и курсов. Сейчас абсолютное большинство «продвинутых» пользователей не имеют ни малейшего представления о теории организации информации и о работе с интерфейсом командной строки. Мой уважаемый соавтор принадлежит к весьма малочисленной группе первопроходцев, начавших свое компьютерное образование еще в век супермини-ЭВМ и получивших столь необходимые базовые знания. Именно на основе этих знаний, а также для удовлетворения природного любопытства и была написана рассмотренная выше методика. Однако что делать тем, кто не уверен в своей способности применить ее на практике?
В «золотой век» MS-DOS существовало огромное количество программного обеспечения, позволяющего восстановить ту или иную информацию на магнитных носителях при минимальном участии пользователя. Наиболее известны такие программы, как Undelete и Unformat из состава Norton Utilities (Symantec Co) и аналогичные средства из пакета PC Tools. С уходом MS-DOS эти крайне полезные программы стали неприменимыми и были сохранены скорее из добрых воспоминаний, нежели по причине какой-либо практической ценности. В операционных системах семейства Microsoft Windows 95/98/Me/NT/2000 существует встроенная защита от удаления файлов — так называемая Корзина (Recycle Bin). Ее возможности крайне ограничены, и в случае очистки корзины восстановить данные средствами ОС не представляется возможным. Однако существующие в настоящее время пакеты (Norton Utilities For Windows 95, Nuts’n’Bolts и т.д.) позволяют восстановить файлы даже при очистке корзины. Все эти программы достаточно хорошо знакомы отечественному пользователю и не нуждаются в представлении. Мы же рассмотрим программу, позволяющую восстановить данные с жесткого диска после повреждения MBR и BR.
Компания ONTRACK Data International, Inc. известна как производитель PowerDesk, популярного среди пользователей. Помимо этого пакета компания выпускает широкий спектр ПО, в состав которого входит пакет EasyRecovery, позволяющий восстановить данные с жесткого диска. Сразу уточним: восстановить именно данные, но не сам диск. Это означает, что на диске не делается никаких изменений, а данные с него читаются и копируются на другой, исправный носитель. Поэтому после сохранения данных структуру старого диска придется создавать с нуля. Кроме того, программа не всегда корректно определяет предыдущее разбиение жесткого диска. Однако таблицу разбиения можно вполне получить по рассмотренной выше методике без особых сложностей и в ручном режиме указать эту таблицу программе с указанием файловой системы, используемой в каждом разделе. После продолжительного сканирования диска программа выводит дерево каталогов, обнаруженных в разделе, и предлагает указать местонахождение данных, которые необходимо спасти. После процедуры копирования все данные, подлежащие восстановлению, оказываются в безопасности. При всех своих преимуществах это ПО не является панацеей. К примеру, самостоятельно восстановить таблицу разбиения жесткого диска она не в состоянии. Однако прочитать данные с восстановленного раздела, недоступного операционной системе, она может без особых трудностей.
Ontrack EasyRecovery — надежный помощник в деле восстановления данных
Просто и понятно — визуальное представление таблицы разделов жесткого диска
Тип файловой системы «мертвого» диска необходимо знать точно
«Запасайтесь, дьяволы, гробами – сейчас восстанавливать буду!» (почти по Зощенко)
Избирательное сохранение данных позволяет существенно сократить время, необходимое для надежного сохранения данных
Ваши данные на пути в рай… Точнее в безопасное место
***
Авторы надеются, что этот материал будет представлять для вас чисто теоретический интерес и что на практике с такой задачей вам столкнуться не придется. Для этого искренне рекомендуем делать регулярное резервное копирование критической информации.
КомпьютерПресс 2'2001