Сэр Серж aka Sir Serge (Сергей Лебедев) - official site
Статьи и заметкиРасчетыСтихиПрозаО сайте

Вынимание файлов вручную с дискеты, имеющей нарушенную логическую структуру каталогов

С.Лебедев (Sir Serge)

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

Итак, имеем дискету (файловая система - fat), на которую записан один документ MS Word. Дискета не идентифицируется. Под Linux fsck -t vfat сообщает, что рассчитана на работу всего с двумя экземплярами fat, а не 256-ю. То есть: имеет место логическое разрушение fat и загрузочного сектора. Носитель физически не поврежден. О причинах повреждения гадать не будем – возможно, неудачная попытка форматирования с выниманием диска при начале процесса. :)

Фаза 1.

Все содержимое диска посекторно необходимо выпустить в файл. В DOS/Windows системных средств для этого нет. Можно воспользоваться какой-нибудь сторонней программкой для копирования образов дискет – diskdupe, например. Следите только за тем, чтобы полученный “образ” не подвергнулся компрессии. Под Linux все делается очень просто: cp /dev/fd0 filename

Фаза 2.

Осматриваем дискету. Для этого, наверное, лучше всего использовать FAR Commander. Причины достаточно просты: то, что мы ищем, текст содержит в Unicode; Например, под Linux я не нашел средств, которые бы мне отобразили русские буквы на файле образа дискеты. Спасовали все – от mc до Mozilla. То ли уникод в линуксе другой, то ли какие-то знаки сбивают с толку. Но и в самом FAR commander должна быть включена соответствующая таблица кодировок, а для этого желательно один раз зайти в подкаталог far/addons/cyrillic/russian и прощелкать все файлы *.reg в нем. Таблица кодировок в вьюере фара переключается через Shift+F8. Цель осмотра – выяснить, уцелело ли что-то из того, что нам нужно. С удовлетворением отмечаем, что нужный нам текст присутствует... в двух экземплярах. У первого экземпляра подтёрто начало.

Фаза 3.

Поиск начала файла.

Просматриваем в шестнадцатиричном виде какой-либо документ, созданный той же версией Word. В даном случае легко заметить, что любой документ начинается с сигнатуры D0 CF 11 E0 A1. Грузим FAR и поиском определяем смещение сигнатуры от начала файла. “На глаз” убеждаемся, что дальнейшая информация похожа на то, что обычно бывает в вордовых файлах. В нашем случае смещение получилось 43C00.

Фаза 4.

Подрезание образа диска.

Довольно наглый способ, основанный на том, что файлы Word – контейнер, в хвосте которого может быть дописана произвольная информация, на действия редактора не влияющая никак. Для этого придется написать программу, текст ниже (компилятор в данном случае – delphi; Turbo Pascal для компиляции этой программы непригоден. главное – не то, чем написано, а суть явления; однако, бейсиком для этого пользоваться не рекомендую):

program ree;


{$APPTYPE CONSOLE}


Var f:file;

q:PChar;

i:integer;

begin

assign(f,'исходный_файл');

reset(f,1);

i:=FileSize(f);

GetMem(q,i);

BlockRead(f,q^,i);

CloseFile(f);

assign(f,'файл_результата.doc');

rewrite(f,1);

BlockWrite(f,(q+$43C00)^,i-$43C00);

closefile(f);

FreeMem(q);

end.



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

Barnaul, RF

1.06.2004


Всего комментариев: 2

Igor OC: Windows XP   2005-09-19 22:25:21


Приветствую,
>>>Все содержимое диска посекторно необходимо выпустить в файл. В DOS/Windows системных средств для этого нет. Можно воспользоваться какой-нибудь сторонней программкой для копирования образов дискет – diskdupe, например. Следите только за тем, чтобы полученный “образ” не подвергнулся компрессии. Под Linux все делается очень просто: cp /dev/fd0 filename

Системных средств в DOS/Windows, видимо, действительно нет, но есть WinHex [ ccылка ] - великолепный редактор. В паре с PartitionMagic позволил мне восстановить диск с Windows под NTFS без потери данных + FreeBSD (без пользовательских данных) + Linux Fedora Core 2(без пользовательских данных). Причем, при подключении к реально работающей системе WinXP, все разделы NTFS были не видны, как впрочем и разделы BSD. Алгоритм описать не могу, но времени потратил не один вечер. Понравилось то, что редактирование MBR по темплейту в WinHex и повторные определения параметров диска в PartitionMagic дали результат, все данные и сам диск были спасены. Экспериментировать с этими системами на одном диске, правда, желание отпало...
с наилучщими...


Власенко Михаил Викторович OC: Windows XP   2009-02-24 05:58:23


>>>Все содержимое диска посекторно необходимо выпустить в файл. В DOS/Windows системных средств для этого нет.

В операционной системе PC DOS Версия 7.00 имеется программа для создания точных копий дискет: XDFCOPY.

<PRE><FONT SIZE=+1>
F: DOS>xdfcopy.exe /?
XDFCOPY v1.7d -------- копирование XDF главных дискет

Copyright (c) 1994 -- Ametron Technologies, Inc.
Патенты заявлены Tampa, FL США

Использование:
XDFCOPY исходный_диск целевой_диск [/Y] [/NV]

исходный_диск = устройство A: или B:
целевой_диск = устройство A: или B:

/Y начать работу, не дожидаясь смены дискет
/NV отключить проверку чтением после записи
</FONT></PRE>

В качестве целевого диска можно указать имя файла. Например, команда
xdfcopy a: d: diskimages disk1.dsk
создаст образ дискеты в файле disk1.dsk на диске D: в каталоге diskimages



Вы можете добавить свои комментарии.

Поскольку у нас тут абсолютная демократия, то комментарий появится на сайте только после того, как он будет одобрен администрацией. Оперативности, однако, не обещаем.

Прошу соблюдать относительную корректность в высказываниях. Заявления типа "Пошел на...", посты, написанные в олбанской лексике и психоанализ личности автора и участников обсуждения в свет не выйдут. Также будут блокированы сообщения, не имеющие никакого отношения к заявленной тематике. Если вы не согласны с приведенным текстом - выскажите своё мнение, но обосновывайте его. Помните, что свою позицию доказываете Вы не мне, а другим читателям. Всячески приветствуются возможные технические поправки и исправления неточностей. Для возможности внесения комментариев в браузере должна быть включена поддержка JavaScript. Реклама и ссылки на сайты, не относящиеся к делу, являются прямым основанием блокировки. Поля "E-mail" и "WWW" обязательными для заполнения не являются, поле E-Mail не публикуется. Если хотите просто что-то написать автору статьи, без публикации на сайте - воспользуйтесь специальной формой под пунктом меню "О сайте". Администрация оставляет за собой право публиковать или не публиковать адреса, введенные в поле www, а также при необходимости редактировать текст вашего сообщения. Ответы на ваши сообщения по введенному вами E-mail автоматически сайтом не высылаются. Да, теги PHPBB и HTML не действуют, так что не старайтесь их вводить.

Copyright © 2003-2018 by Sir Serge