Текст книги "Восстановление данных. Практическое руководство"
Автор книги: Крис Касперски
Жанры:
Компьютерное "железо"
,сообщить о нарушении
Текущая страница: 3 (всего у книги 26 страниц)
За последние годы появилось множество дистрибутивов 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 9x, может привести к результату, прямо противоположному вашим ожиданиям. Впрочем, на разделы NTFS это условие не распространяется. Операционная система Windows 9x не поддерживает файловую систему NTFS и ничего не пишет на ее разделы.
К сожалению, DiskEdit ничего не знает об NTFS, и потому разбирать все структуры приходится вручную. Однако это еще не самое худшее. Редактор DiskEdit не поддерживает кодировку UNICODE, а это создает уже более серьезные проблемы. Поэтому, несмотря на все достоинства DiskEdit, лучше все-таки выбрать другой редактор.
Редактор Microsoft Disk Probe входит в состав бесплатно распространяемого пакета Support Tools. Этот редактор незатейлив и довольно неудобен в использовании. Если все, что вам требуется – это подправить пару байт в нужных секторах, Disk Probe вполне подойдет, но для восстановления серьезных разрушений он непригоден. Тем не менее, им поддерживаются следующие базовые функции редактирования:
□ чтение и запись логических и физических секторов и их групп;
□ просмотр таблицы разделов (рис. 2.4) и загрузочных секторов FAT16 и NTFS в их естественном виде (рис. 2.5);
□ поддержка UNICODE;
□ глобальный поиск по фиксированному или произвольному смещению строки от начала сектора;
□ запись секторов в файлы и их последующее восстановление и т.д.

Рис. 2.4. Disk Probe отображает таблицу разделов

Рис. 2.5. Disk Probe за поиском сектора
Основные претензии, которые можно высказать в адрес этой программы, – отсутствие горячих клавиш и невозможность перехода к следующему сектору по нажатию клавиши
Этот редактор представляет собой слегка усовершенствованный вариант Disk Probe. Он имеет разукрашенный интерфейс (рис. 2.6 и 2.7), в нем существенно упрощена процедура выбора дисков, а также обеспечена возможность перехода к следующему или предыдущему секторам по нажатию клавиш

Рис. 2.6. Acronis Disk Editor за поиском строки

Рис. 2.7. Acronis Disk Editor отображает загрузочный сектор NTFS
Это – поистине великолепный дисковый редактор, самый лучший из всех, с которыми мне только доводилось работать. Фактически это аналог 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.
Данный инструмент входит в бесплатно распространяемый фирмой Microsoft пакет Windows Resource Kit. Он представляет собой пакетную утилиту для чтения и записи отдельных секторов в файл. Sector Inspector (рис. 2.10) поддерживает режимы адресации LBA и CHS. При запуске без параметров он выводит декодированную таблицу разделов вместе с расширенными разделами и загрузочными секторами. Редактирование диска осуществляется путем правки предварительно сохраненного дампа сектора в любом подходящем HEX-редакторе с последующей записью исправленной версии на диск. Естественно, это непроизводительно и неудобно, однако Sector Inspector – это единственный известный мне редактор, поддерживающий работу из Recovery Console. Именно поэтому в некоторых случаях он бывает просто незаменим!

Рис. 2.10. Sector Inspector за работой
Программ, пригодных для восстановления данных, под 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.
The VCN 0x9 of index $130 in file 0x1a is inconsistence with
the VCN 0x0 stored inside the index buffer.
Correcting error in index $I30 for file 26.
The index bitmap $I30 in file 0x1a is incorrect.
Correcting error in index $I30 for file 26.
The down pointer of current index entry with length 0x70 is invalid.
0b 01 00 00 00 00 01 00 70 00 58 00 01 00 00 00 ........p.X.....
1a 00 00 00 00 00 01 00 00 c0 4c bb 5a 94 bf 01 ..........L.Z...
00 c0 4c bb 5a 94 bf 01 c0 3a 15 55 97 ea c4 01 ..L.Z....:.U....
f0 54 e1 71 7a ea c4 01 00 10 01 00 00 00 00 00 .T.qz...........
22 02 01 00 00 00 00 00 20 00 00 00 00 00 00 00 "........ ......
0b 03 63 00 5f 00 32 00 30 00 38 00 36 00 36 00 ..с._.2.0.8.6.6.
2e 00 6e 00 6c 00 73 00 ff ff ff ff ff ff ff ff ..n.l.s.........
1f 01 00 00 00 00 01 00 70 00 54 00 01 00 00 00 ........p.T.....
Sorting index $I30 in file 26.
Cleaning up minor inconsistencies on the drive.
CHKDSK is recovering lost files.
Recovering orphaned file c_037.nls (253) into directory file 26.
Recovering orphaned file c_10000.nls (254) into directory file 26.
Recovering orphaned file c_10079.nls (255) into directory file 26.
Recovering orphaned file c_1026.nls (256) into directory file 26.
Recovering orphaned file c_1250.nls (257) into directory file 26.
Recovering orphaned file c_1251.nls (258) into directory file 26.
Recovering orphaned file c_1252.nls (259) into directory file 26.
Recovering orphaned file c_1253.nls (260) into directory file 26.
Recovering orphaned file c_1254.nls (261) into directory file 26.
Recovering orphaned file c_1255.nls (262) into directory file 26.
Recovering orphaned file c_1256.nls (263) into directory file 26.
Recovering orphaned file c_1257.nls (264) into directory file 26.
Recovering orphaned file c_1258.nls (265) into directory file 26.
Recovering orphaned file c_20261.nls (266) into directory file 26.
Recovering orphaned file cryptext.dll (412) into directory file 26.
Recovering orphaned file ctl3dv2.dll (422) into directory file 26.
Recovering orphaned file ctype.nls (423) into directory file 26.
Recovering orphaned file CSRSRV.DLL (880) into directory file 26.
Recovering orphaned file cryptdll.dll (2206) into directory file 26.
Recovering orphaned file ctl3d32.dll (2441) into directory file 26.
Recovering orphaned file c_10007.nls (2882) into directory file 26.
Recovering orphaned file c_10017.nls (2883) into directory file 26.
Recovering orphaned file c_20127.nls (2916) into directory file 26.
Recovering orphaned file csseqchk.dll (4019) into directory file 26.
Recovering orphaned file cscript.exe (4335) into directory file 26.
Recovering orphaned file cscdll.dll (4661) into directory file 26.
Recovering orphaned file CRYPTDLG.DLL (5125) into directory file 26.
Recovering orphaned file cryptsvc.dll (5127) into directory file 26.
Recovering orphaned file cscui.dll (5136) into directory file 26.
Recovering orphaned file CSRSS.EXE (5144) into directory file 26.
Recovering orphaned file CVID32.QTC (17408) into directory file 26.
Recovering orphaned file c_10001.nls (19801) into directory file 26.
Recovering orphaned file c_20290.nls (19805) into directory file 26.
Recovering orphaned file c_20000.nls (19811) into directory file 26.
Recovering orphaned file CSH.DLL (21395) into directory file 26.
Recovering orphaned file CRYPT32.DLL (38161) into directory file 26.
Recovering orphaned file CRYPTNET.DLL (38162) into directory file 26.
Recovering orphaned file CRYPTUI.DLL (38260) into directory file 26.
Cleaning up 48 unused index entries from index $SII of file 0x9.
Cleaning up 48 unused index entries from index $SDH of file 0x9.
Cleaning up 48 unused security descriptors.
CHKDSK discovered free space marked as allocated in the master file table (MFT) bitmap.
Correcting errors in the Volume Bitmap.
Windows has made corrections to the file system.
19543040 KB total disk space.
18318168 KB in 36008 files.
16604 KB in 1684 indexes.
0 KB in bad sectors.
124080 KB in use by the system.
65536 KB occupied by the log file.
1084188 KB available on disk.
4096 bytes in each allocation unit.
4885760 total allocation units on disk.
271047 allocation units available on disk.
Windows has finished checking your disk.
Please wait while your computer restarts.
28 Мая 2005
Восстановление потерянного файла NTMSJRNL (835) в файле каталога 4614.








