□ управлять сервисами и драйверами;
□ восстанавливать удаленные файлы, копировать и модифицировать любые системные и пользовательские файлы (в том числе и по сети);
□ редактировать таблицу разделов и управлять динамическими дисками;
□ сравнивать файлы поврежденной и работоспособной систем;
□ производить откат системы в рабочее состояние, и многое-многое другое.
К сожалению, средствами восстановления разрушенного диска напрямую ERD Commander не располагает, так как его основное назначение — восстановление работоспособности поврежденной операционной системы. Стоит, правда, отметить, что под управлением ERD Commander можно вызвать дискового доктора или любую другую Windows-утилиту, но в этом случае никакого смысла в его приобретении нет, так как второй винчестер обойдется дешевле.
Начиная с Windows 2000, Microsoft включила в операционную систему некоторое подобие загрузчика, способного стартовать с CD-ROM и поддерживающего NTFS. Называется это средство консолью восстановления (Recovery Console). Это — действительно консоль, ничего не знающая о GUI и способная запускать лишь консольные приложения (например, chkdsk.exe и другие утилиты подобного типа). Чтобы запустить Recovery Console, загрузите компьютер с дистрибутивного компакт-диска Windows. Когда инсталлятор предложит выбрать между установкой новой копии Windows или восстановлением одной из обнаруженных на компьютере операционных систем этого семейства, нажмите клавишу <R>, выбирая опцию Recovery Console. Вам будет предложено ввести пароль администратора (запустить консоль не удастся, если вы забыли этот пароль, или если поврежден системный реестр). После успешной регистрации запустится командный интерпретатор, теоретически позволяющий скопировать уцелевшие файлы на другой диск. Практически же по умолчанию доступна только папка, в которой установлена система Windows, причем копирование на съемные носители запрещено. Хорошенькое начало! Зачем вам нужна системная папка Windows? Ведь личные документы намного нужнее! К счастью, это ограничение легко можно снять (следует только заметить, что сделать это нужно заблаговременно). Для этого необходимо присвоить системным переменным AllowAllPaths
и AllowRemovableMedia
значение true
(SET AllowAllPaths = true
, SET AllowRemovableMedia = true
). Еще один путь снятия данного ограничения выглядит следующим образом: откройте окно Панель управления (Control Panel), выберите опцию Администрирование (Administration Tools), затем — опцию Локальные параметры безопасности (Local security policy). Найдите пункт Консоль восстановления: разрешить копирование дискет и доступ ко всем папкам (Recovery Console: Allow floppy copy and access to all drives and all folders) и активизируйте эту опцию (переведя ее в состояние enabled). Смысл этой защиты мне не совсем понятен. Простые пользователи до консоли восстановления дотягиваются крайне редко, а профессионалов подобные манипуляции безумно раздражают. Находясь в консоли восстановления, вы можете:
□ запускать chkdsk
(полезность этого "доктора" весьма сомнительна, так как он зачастую лишь усугубляет разрушения);
□ создавать и удалять разделы на жестком диске;
□ перезаписывать MBR и boot-сектор;
□ форматировать логические диски;
□ управлять службами и драйверами;
□ удалять, копировать, переименовывать файлы и изменять их атрибуты (включая те, что блокируются при запуске системы);
□ выполнять другие сервисные операции.
При желании вы можете запускать и свои собственные консольные приложения, при условии, что они не используют никаких динамических библиотек за исключением NTDLL.DLL. Однако технику разработки таких приложений мы обсудим как-нибудь в другой раз, так как это очень обширный вопрос, заслуживающий написания отдельной книги.
В Windows XP идея консоли восстановления получила дальнейшее развитие, вылившееся в
Рис. 2.1. Логотип диска Bart's РЕ
Live Linux CD
За последние годы появилось множество дистрибутивов Linux, загружающихся прямо с CD-ROM и не требующих установки на винчестер. Нужно ли говорить, что это — очень удобная штука для восстановления данных. Тем не менее, далеко не все дистрибутивы пригодны для этой цели, и не все пригодные одинаково хороши, поэтому краткий обзор не помешает.
□ KNOPPIX 3.7 — с моей точки зрения, это самый лучший из всех имеющихся дистрибутивов. Основан на GNU/Debian. Занимает всего один диск, но содержит практически все: от дисковых утилит и компиляторов до офисных пакетов и мультимедийных приложений. Очень шустро работает, требует от 128 Мбайт оперативной памяти (если доступный объем памяти меньше, то будет использоваться файл подкачки). В 2004 году издательство O'Reilly выпустило шикарную книгу "KNOPPIX Hacks", содержащую главы, посвященные технике восстановления данных. Саму книжку можно найти в e-Mule, a KNOPPIX — заказать в интернет-магазине http://www.linuxcenter.ru или загрузить через Интернет (например, отсюда: http://www.knoppix.net/get.php).
□ Frenzy 0.3 — дистрибутив, основанный на FreeBSD с небольшим количеством дисковых утилит, ориентированных на ext2fs. Следует при этом отметить, что основной файловой системой самой BSD является UFS/FFS, и поддержка ext2fs в ней весьма ограниченна. Тем не менее, для восстановительных работ данный дистрибутив вполне пригоден, и всем поклонникам BSD его можно смело рекомендовать.
□ SuSE 9.2 — с моей точки зрения, это посредственный дистрибутив. Занимает целых два диска (один с KDE, другой с GNOME). Требует не менее 256 Мбайт оперативной памяти (правда, версия с KDE запускается и при 220 Мбайт). Очень медленно работает и не содержит практически ничего, кроме малого количества офисных программ.
Выбор носителей для копирования
Времена, когда восстанавливаемый винчестер было можно скопировать на пару пачек дискет, давно прошли, и теперь процедура извлечения данных с поврежденных винчестеров значительно усложнилась. На сегодняшний день наилучший выбор — это пишущие приводы (особенно DVD). Пары пачек носителей достаточно для копирования жесткого диска любой разумной емкости, однако достойных программ прожига под MS-DOS нет и, по- видимому, уже и не будет. Существующие утилиты (включая их консольные разновидности) требуют для своего запуска Windows РЕ или Bart's РЕ. Основная проблема здесь заключается в том, что ни Windows РЕ, ни Bart's РЕ не в состоянии монтировать разрушенные диски NTFS (на некоторых из них драйвер NTFS зависает или приводит к появлению синего экрана смерти).
Такие средства, как штатная консоль восстановления, NTFSDOS Professional, и Active@Data Recovery Boot Disk, поддерживают только дискеты и IDE-накопители. При этом демонстрационные версии NTFSDOS Professional и Active@Data Recovery Boot Disk требуют, чтобы диск, на который производится копирование данных, был отформатирован для использования FAT16/32, а его максимальный объем не превышал 8 Гбайт. Если вам необходимо восстановить диск большего объема, вам придется последовательно копировать его на несколько жестких дисков. Я согласен, что это — достаточно дорогое удовольствие, но дешевых решений в деле восстановления данных не бывает.
Дисковые редакторы
Настоящие профессионалы восстанавливают разрушенные логические структуры непосредственно в дисковом редакторе. Они не доверяют никаким автоматизированным утилитам (кроме программ собственной разработки), поскольку никогда не известно заранее, какой подлости от них следует ждать. Так же поступим и мы, делая основной упор именно на ручное восстановление. Раз дисковый редактор станет нашим главным инструментом, это должен быть хороший и комфортный редактор, в противном случае восстановление из увлекательной работы превратится в пытку.
Лучшим, и, кстати говоря, до сих пор никем не превзойденным, дисковым редактором, когда-либо созданным за всю историю существования IBM PC, был и остается знаменитый Norton DiskEditor от компании Symantec (см. рис. 2.2 и 2.3). Этот редактор обеспечивает удобную навигацию по диску, возможность просмотра большинства служебных структур в естественном виде, а также мощный контекстный поиск. Эти возможности до предела упростили процедуру восстановления, взяв всю рутинную работу на себя. Старичок и поныне остается в строю. Разумеется, под Windows NT он не запускается, однако работает под MS-DOS и Windows 9x, наследуя все ограничения, накладываемые BIOS на предельно допустимый объем диска в 8 Гбайт.
Рис. 2.2. DiskEditor отображает FAT
Рис. 2.3. DiskEditor отображает корневой каталог
Следует, правда, отметить, что попытка восстановления диска из многозадачной среды, которую представляет собой Windows 9
К сожалению, DiskEdit ничего не знает об NTFS, и потому разбирать все структуры приходится вручную. Однако это еще не самое худшее. Редактор DiskEdit не поддерживает кодировку UNICODE, а это создает уже более серьезные проблемы. Поэтому, несмотря на все достоинства DiskEdit, лучше все-таки выбрать другой редактор.
Microsoft Disk Probe
Редактор Microsoft Disk Probe входит в состав бесплатно распространяемого пакета Support Tools. Этот редактор незатейлив и довольно неудобен в использовании. Если все, что вам требуется — это подправить пару байт в нужных секторах, Disk Probe вполне подойдет, но для восстановления серьезных разрушений он непригоден. Тем не менее, им поддерживаются следующие базовые функции редактирования:
□ чтение и запись логических и физических секторов и их групп;
□ просмотр таблицы разделов (рис. 2.4) и загрузочных секторов FAT16 и NTFS в их естественном виде (рис. 2.5);
□ поддержка UNICODE;
□ глобальный поиск по фиксированному или произвольному смещению строки от начала сектора;
□ запись секторов в файлы и их последующее восстановление и т.д.
Рис. 2.4. Disk Probe отображает таблицу разделов
Рис. 2.5. Disk Probe за поиском сектора
Основные претензии, которые можно высказать в адрес этой программы, — отсутствие горячих клавиш и невозможность перехода к следующему сектору по нажатию клавиши <PageDown>. В результате, каждый раз, как только требуется перейти к следующему сектору, необходимо обращаться к меню, а при проведении масштабных работ это крайне неудобно.
Acronis Disk Editor
Этот редактор представляет собой слегка усовершенствованный вариант Disk Probe. Он имеет разукрашенный интерфейс (рис. 2.6 и 2.7), в нем существенно упрощена процедура выбора дисков, а также обеспечена возможность перехода к следующему или предыдущему секторам по нажатию клавиш <PageDown> и <PageUp> соответственно. В функции поиска реализована поддержка большого количества различных кодировок (для сравнения, Disk Probe поддерживает лишь одну альтернативную кодировку — Cyrillic Windows-1251). Появилась и возможность поиска шестнадцатеричных данных (HEX-поиск). Однако, несмотря на все эти достоинства, данный редактор не свободен и от недостатков. Например, при масштабировании окна меняется и количество байт в строке, что делает навигацию по сектору весьма противоречивой и затруднительной. Кроме того, данный редактор отображает текущую позицию курсора только в десятичном формате (для сравнения, Disk Probe отображает ее в шестнадцатеричном формате), что также вряд ли приведет вас в восторг.
Рис. 2.6. Acronis Disk Editor за поиском строки
Рис. 2.7. Acronis Disk Editor отображает загрузочный сектор NTFS
DiskExplorer от Runtime Software
Это — поистине великолепный дисковый редактор, самый лучший из всех, с которыми мне только доводилось работать. Фактически это аналог Norton DiskEditor, но предназначенный для работы под управлением Windows 9x/Windows NT и обеспечивающий полную поддержку NTFS (рис. 2.8 и 2.9).
Рис. 2.8. DiskExplorer отображает MFT в сокращенном виде
Рис. 2.9. DiskExplorer отображает MFT в расширенном виде
С его помощью можно просматривать все основные структуры NTFS в естественном виде, монтировать виртуальные диски, работать с образами лазерных и жестких дисков, перемещаться по каталогам, восстанавливать удаленные файлы из любой записи MFT, копировать файлы (и даже целые каталоги) с возможностью предварительного их просмотра в текстовом или шестнадцатеричном формате. И это еще далеко не все! Редактор предоставляет удобную систему навигации (приблизительно такую же, как в браузере или IDA PRO, включая поддержку гиперссылок), изобилие горячих клавиш, а также поддерживает историю переходов. Кроме того, он реализует мощную систему поиска с поддержкой основных структур (INDEX
, MFT
, Partition
) и предоставляет возможность поиска ссылок на текущий сектор. С его помощью можно производить удаленное восстановление диска с подключением по TCP/IP, локальной сети или прямому кабельному соединению. Все числа выводятся в двух системах счисления — шестнадцатеричной и десятичной.
Короче говоря, это мой основной (и при том горячо любимый!) инструмент для исследования файловой системы и восстановления данных. Первое же знакомство с ним вызывает эйфорию, граничащую со щенячьим восторгом. Наконец-то мы получили то, о чем так долго мечтали. Естественно, за все хорошее надо платить. Полнофункциональная версия Runtime's Disk Explorer — это коммерческий продукт. Его демонстрационная версия, доступная для скачивания, лишена возможности записи на диск. Причем имеются две различные версии редактора: одна поддерживает NTFS (http://www.runtime.org/diskexpe.htm), другая — FAT. Помимо этого, существуют и плагины для Bart's РЕ, которые можно скачать с сайта Runtime Software.
Sector Inspector
Данный инструмент входит в бесплатно распространяемый фирмой Microsoft пакет Windows Resource Kit. Он представляет собой пакетную утилиту для чтения и записи отдельных секторов в файл. Sector Inspector (рис. 2.10) поддерживает режимы адресации LBA и CHS. При запуске без параметров он выводит декодированную таблицу разделов вместе с расширенными разделами и загрузочными секторами. Редактирование диска осуществляется путем правки предварительно сохраненного дампа сектора в любом подходящем HEX-редакторе с последующей записью исправленной версии на диск. Естественно, это непроизводительно и неудобно, однако Sector Inspector — это единственный известный мне редактор, поддерживающий работу из Recovery Console. Именно поэтому в некоторых случаях он бывает просто незаменим!
Рис. 2.10. Sector Inspector за работой
Linux Disk Editor
Программ, пригодных для восстановления данных, под Linux совсем немного. Фактически их намного меньше, чем под Windows NT, да и тем, что имеются, до совершенства далеко, как до Луны. Но ведь не разрабатывать же весь необходимый инструментарий самостоятельно?! Будем использовать то, что дают, утешая себя тем, что программистам первых поколений, работавшим на "большом железе" (динозаврах машинной эры), приходилось намного сложнее.
Чаще всего под Linux для редактирования дисков используется программа lde (Linux Disk Editor). Конечно, этой программе еще далеко до Norton Disk Editor, однако это уже и не Microsoft Disk Probe. Linux disk editor — это профессионально-ориентированный редактор консольного типа, снабженный разумным набором функциональных возможностей (рис. 2.11). Список поддерживаемых файловых систем включает ext2fs, minix, xiafs и, отчасти, FAT. В перспективе разработчики обещают реализовать поддержку NTFS.
Рис. 2.11. Дисковый редактор LDE (Linux Disk Editor)
Честно говоря, поддержка NTFS в Linux нужна не так уж и сильно, а вот отсутствие в этом списке таких файловых систем, как UFS и FFS, очень огорчает.
Lde обеспечивает следующие возможности:
□ просмотр и редактирование содержимого секторов в HEX-формате;
□ просмотр супер-блока (super-block), файловых записей (inode) и каталогов в удобочитаемом виде;
□ контекстный поиск;
□ поиск файловых записей, ссылающихся на данный блок (полезная возможность, но, к сожалению, реализованная кое-как и срабатывающая далеко не всегда);
□ режим восстановления с ручным редактированием списка прямых/косвенных блоков;
□ сброс дампа на диск;
□ некоторые другие второстепенные операции.
Редактор может работать как в пакетном, так и в интерактивном режимах. В пакетном режиме все управление осуществляется посредством командной строки, что позволяет полностью или частично автоматизировать некоторые рутинные операции.
Распространяется в исходных текстах (http://lde.sourceforge.net/), работает практически под любой UNIX-совместимой операционной системой (включая FreeBSD). Наконец, этот редактор входит во все "правильные" дистрибутивы (например, в KNOPPIX).
Работа с lde на первых порах производит довольно странное впечатление. По крайней мере, я чувствовал себя так, как если бы пересел с IBM PC на УКНЦИ/ZX Spectrum или из современного человека превратился в неандертальца, вынужденного добывать огонь трением. Впрочем, со временем это проходит (программист, как известно, существо неприхотливое и ко всему привыкающее). Как вариант, можно загрузиться со "спасательной дискеты" и использовать знакомый Norton Disk Editor или Runtime NT Explorer, запущенной из-под Windows РЕ. С одной стороны это удобно (привычный интерфейс и все такое), с другой — ни Disk Editor, ни NT Explorer не поддерживают ext2fs/ext3fs, и все структуры данных приходится декодировать вручную.
Шестнадцатеричные редакторы
UNIX — это вам не Windows! Без дисковых редакторов здесь, в принципе, можно и обойтись. Берем любой hex-редактор, открываем соответствующее дисковое устройство (например, /dev/sdb1
) и редактируем его в свое удовольствие.
Программисты старшего поколения, должно быть, помнят, как во времена первой молодости MS-DOS, когда еще не существовало таких средств, как HIEW или QVIEW, правка исполняемых файлов на предмет "отлома" ненужного 7xh
обычно осуществлялась редактором DiskEdit. Иными словами, дисковый редактор использовался как hex-редактор. В UNIX, наоборот, hex-редакторы используются для редактирования диска.
Какой редактор выбрать? В общем-то, это дела вкуса (причем, не только вашего, но еще и составителя дистрибутива). Одни предпочитают консольный редактор hexedit (рис. 2.12), другие тяготеют к графическому редактору khexdedit (рис. 2.13), а третьи выбирают BIEW (урезанная версия всем известного редактора HIEW).
Рис. 2.12. Внешний вид редактора hexedit
Рис. 2.13. Внешний вид редактора khexedit
Автоматизированные дисковые утилиты
Более убогой утилиты, чем chkdsk (рис. 2.14) — стандартный дисковый "доктор", входящий в штатный комплект поставки Windows, — по-видимому, не придумать даже сценаристам из Голливуда. Система диагностики ошибок упрощена до минимума — доктор лишь информирует о факте их наличия, но отказывается говорить, что именно, по его мнению, повреждено и что он собирается лечить, поэтому последствия такого "врачевания" могут носить фатальный характер.
Рис. 2.14. Утилита chkdsk за работой
Известно много случаев, когда chkdsk залечивал до смерти полностью исправные разделы. Например, в листинге 2.1 приведен протокол лечения практически здорового диска с одной-единственной поверженной файловой записью (FILE RECORD). После этого "лечения" я не досчитался многих файлов. С другой стороны, успешно проведенных операций восстановления на его счету намного больше. Обычно он используется неквалифицированными пользователями (и администраторами) для периодической проверки разделов и исправления мелких искажений файловой системы.
В мире UNIX проверка целостности файловой системы обычно осуществляется программой fsck
(аналог chkdsk под Windows NT), представляющей собой консольную утилиту, практически лишенную пользовательского интерфейса и входящую в штатный комплект поставки любого дистрибутива. Как и любое другое полностью автоматизированное средство, она не только лечит, но, случается, что и калечит, так что пользоваться ею следует с большой осторожностью.
Листинг. 2.1. Протокол лечения практически здорового диска с одной-единственной поверженной FILE RECORD
One of your disks needs to be checked for consistency. You
may cancel the disk check, but it is strongly recommended
that you continue.
Windows will now check the disk.