Вернуть файл из небытия

 | 17.42

Мой Компьютер, №27 (531), 24.11.2008

Я расскажу о ситуации, обычно считающейся безнадежной или до невозможности трудоемкой, а именно: когда файл один, нет его резервной копии (само собой, была бы копия, не было бы этой статьи), и он был не удален, а затерт другим содержимым — пустым или почти пустым, заведомо меньшим.

К примеру, был у вас реферат размером эдак килобайт в 200, а потом что-то там понажимали (а кто ж помнит, что именно?), и в результате шайтанских манипуляций остался только куцый огрызок в виде титульного листа размером 1 Кб, который по невероятной случайности был записан на место прежнего, пухлого, уже готового (ну ладно, почти готового) реферата.

Ну и что? А то, что в такой ситуации стандартные программы, вроде R-Studio, OO DiskRecovery, Handy Recovery и прочая, и прочая, нам не помощники, поскольку они ищут именно удаленные файлы. А наш файл-то на месте, живой… только почти дохлый. Был размером в 200 Кб, а остался — 1 Кб. И что же делать?

Путь к спасению

И в этой казалось бы безнадежной ситуации есть выход.

Итак, внимание!

1. Выдергиваем провод питания из системника компьютера.

И это не шутка! Это действительно необходимо для сохранения того, что еще осталось. Если выключать компьютер через стандартное «Пуск > Завершение работы», то операционная система (ОС) или какие-то другие программы могут что-то свое записать на диск и затереть наши данные. А если мы — БАЦ! — и все отключили, то ничего не записывается и данные должны остаться. Так уж устроена файловая система Windows, что удаленные данные физически не удаляются, а лишь помечаются на удаление.

2. Нам нужно обеспечить загрузку ОС с постороннего винчестера, а не с нашего, на котором с вероятностью 99% хранятся так нужные нам фрагменты файла, раскиданные где-то по поверхности магнитного блина. Как это сделать?

Варианты следующие:

  • попросить друга. Если он согласится помочь, нужно на его компьютере отключить восстановление системы на всех дисках на время проведения операции. (Это вообще-то относится к Windows XP и, возможно, к Windows Vista. Ежели у друга Linux, то будет и проще и сложнее одновременно, но это уж тогда пусть друг вам сам подскажет).
  • воспользоваться загрузочным CD, созданным программой «Антивирус Касперского» версии 7.0. Или CD на основе WindowsPE или BartPE. Либо любым иным загрузочным CD, который позволяет: а) читать (писать нам не обязательно) файловые системы FAT32 и NTFS, б) читать-писать флэшку, куда мы будем сохранять наш спасенный файл, в) запустить HEX-редактор.

3. Необходим HEX-редактор, позволяющий либо запускать 2 копии себя самого, либо имеющий 2 закладки (окна) для работы с двумя объектами одновременно.

Итак, берем в руки скальпель, тампон, спирт, огурец… ой! Это не то! Наши инструменты в данной ситуации — немного теоретической подготовки, позволяющей знать, что пациент скорее жив, ясная голова и уверенно нажимающие клавиши пальцы рук.

Теория гласит: файл где-то есть. Где-то на всей поверхности 20-гигабайтного «винчестера» затерялись несколько кластеров нашего файла, у которого размер был примерно от 100 до 300 Кб. И эти кластеры помечены как свободные, ни к каким файлам не подвязанные, ни к существующим, ни к удаленным. Значит, остается поиск только по содержимому кластера. Так, хорошо. Подключаем этот винт вторым в системе, отключаем восстановление системы в Windows XP, загружаемся.

А что у нас за файл нужно найти? Что у него за содержимое? И можно ли выделить некий фрагмент, найдя который в «джунглях информации» жесткого диска, можно с уверенностью сказать, что это наш файл?

Файл в нашем случае был — проект из программы Womble Multimedia MPEG Video Wizard DVD «Film3.wbp». Он имеет текстовый формат, похожий по структуре на .ini-файлы (рис. 1).

Посмотрев дальше (рис. 2), видим, что хорошим фрагментом для поиска будет «[Clip».

Можно, конечно, взять что-нибудь вроде «PhysicalLength» или «AudioStreamID». Но так как мне нужно было восстановить именно разделы «[Clip», начиная с 93-го, то я и взял в качестве шаблона поиска его. В вашем же случае нужно будет проанализировать остатки файла, найти там фрагмент — легко узнаваемый, и в то же время достаточно редкий, чтобы не пришлось спотыкаться на ложных срабатываниях.

У меня под рукой был freeware HEX-редактор TinyHexer (www.mirkes.de), его я и запустил. При скромном размере (exe-файл у версии 1.0.1 «весит» 405 Кб) он позволял сделать ну очень много, в том числе осуществить прямой доступ к содержимому жесткого диска, что мне и нужно было. Открываю диск (рис. 3).

Выбираем раздел (рис. 4). Вы же помните, я подключил подопытный винчестер как второй.

После нажатия кнопки ОК открылось содержимое диска (рис. 5).

Сначала установим режим «Только чтение». Не хватало нам еще что-нибудь изменить… Командуем View > No Editing» — в меню появляется флажок. Хорошо, заблокировали. Теперь смотрим на данные — ох! Ну и что тут можно понять? Хуже китайской грамоты — сплошной бред…

А поиск? Мы же приготовились искать, вот и начнем! Меню «Edit > Find», вводим «[Clip», расставляем флажки, они существенные (рис. 6).

Нажав «Find», я долго ждал, минут 15, пока появился первый найденный результат (рис. 7).

Неплохо! Очень даже ничего! Правда, нам нужно бы найти раздел Clip, начиная с 93-го, а мы нашли 205-й. Ну что ж, и это хорошо, теперь остается сохранить найденное.

Создаем новый пустой документ, меню «File > New», сразу же «File > Save As…», и сохраняем на ПЕРВЫЙ (важный момент!) жесткий диск. У меня это были разделы C: и D:. Так как формат файла текстовый, то и расширение я ему дал txt. Это будет рабочее расширение, ведь мне предстоит найти фрагменты, склеить найденное по порядку в одно целое, и лишь тогда, может быть, результат окажется подходящим и «удобоваримым» для программы MPEG Video Wizard.

Переключаемся в окно с диском, меню Window — 1, и отмечаем мышкой фрагмент, начиная с самого начала сектора (рис. 8).

А почему не с того места, где начинается «[Clip»? А для простоты! Начав с адреса 0x0121F1:0x00, я буду в дальнейшем добавлять целые сектора, которые ТОЧНО ПРИНАДЛЕЖАТ моему файлу. А поскольку формат файла — текстовый, то мусор перед [Clip205] можно будет элементарно стереть в любом текстовом редакторе.

Отметили, теперь Copy-Paste в другое окно и — что? Правильно, сохраняем. Ctrl + S. «Шоб було».

Дальше смотрим следующий сектор, «File > Disk > Load next sector» или, что лучше, всего лишь две клавиши: Shift + F8. Следующий сектор тоже оказался из нашего утерянного проекта, и следующий, и еще много следующих. Все они были скрупулезно скопированы и сохранены. Открыв сохраненный текстовый файл, видим нормальный текст (рис. 9), правда, это лишь фрагмент, ну ничего страшного, насобираем все кусочки, что остались, и склеим из них то, что надо!

Через некоторое время «наши» сектора закончились.

И что дальше? А дальше — продолжаем поиск, кнопочка F3…

Просидев несколько ночных часов за поиском утерянных секторов, мне удалось найти полностью целый файл от утерянного проекта, причем сектора располагались подряд. И на следующий день моя милая, сияющая от счастья, что ее труд был не напрасным, сделала наконец-то свою первую резервную копию проекта на DVD-диск.

Резюме

  1. Делайте резервные копии своих данных. Нееет, не потом, не завтра, а именно сейчас!
  2. Думайте, прежде чем что-то делать. Особенно за компьютером. Если устали, то лучше выйти в парк погулять, чем пускать шаловливые руки в компьютерный «огород».
  3. Даже из нештатных ситуаций может быть найден выход. Вопрос лишь в его цене. Сколько времени, сил и других ресурсов может понадобиться? Стоит ли овчинка выделки?
  4. Хорошо изучать компьютер и его программы методом «научного тыка». Но только после (а не до!) создания резервной копии своих данных.
  5. Регулярно делайте дефрагментацию жесткого диска. По возможности, установите в опциях программы-дефрагментатора свойство, чтобы файлы располагались непрерывно. Этот параметр поможет восстановить утерянный файл, «подняв» его за один прием, начав от первого кластера и до последнего.

ЛИРИЧЕСКОЕ ОТСТУПЛЕНИЕ

Я работал с клиентом, когда мне на мобильный позвонила жена и срывающимся голосом, глотая слезы, закричала: «Спасай, я удалила фильм! Два месяца я его делала… хлюп-хлюп…. уже почти все было готово, осталось только пару фотографий вставить, хлюп-хлюп… А-а-а-а… хлюп-хлюп… Я тут что-то нажала, там что-то выскочило, и все пропало! А-а-а-а…»

Я ей сказал: «Ничего страшного, милая. Эта ситуация решаемая. Выключи компьютер, да не как обычно, а щелкни красную кнопочку на удлинителе, к которому он подключен, и ни под каким пряником комп больше не включай, я приеду — сделаю что нужно».

Успокоив жену, вечером я приступил к разбору ситуации. Оказалось, был удален файл проекта из программы Womble Multimedia MPEG Video Wizard DVD. Точнее, файл-то был на месте, только он был пустой, символическим размером в 641 байт. Полностью пустой проект. И сохраненный на диск. Была его предыдущая, «бородатая» копия, размером 67 Кб, в которой было лишь 7 минут фильма. А сделано-то было уже более 40 минут.

Фильм был набран из фотографий, с переходами между ними, с титрами. В общем, пропало работы действительно много. И какой работы! Творческой, зажигательной, интересной… Это был первый проект моей любимой, в котором она рассказывала о нашем свадебном путешествии. Понятно, что восстановить файл нужно. Очень-очень нужно. И главное — можно.

Конец лирического отступления

МУДРАЯ ТЕОРИЯ

Все файлы в ОС хранятся на разных носителях в виде цепочки кластеров, примерно так:

Кластер — минимальный блок информации, который выделяется для хранения файла. Даже для одного байта будет выделен целый кластер, обычно в NTFS-системе размер кластера 4 Кб. Остаток неиспользованного пространства хранит информацию от другого файла, который когда-то был записан в этом кластере. Стрелочки означают ссылки от одного кластера к другому.

Теперь, когда мы перезаписали поверх нашего файла другое содержимое меньшего размера, получим картинку:

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

Наша задача — достать содержимое тех самых «серых» кластеров.

Santino

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *