1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Восстановление файов. Посоветуйте

Тема в разделе "WASM.ZEN", создана пользователем Arvis, 27 авг 2004.

  1. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Господа, хочу написать программу восстановления удаленных файлов. Не подскажете, какими методами это делают существующие программы и, возможно, ткнете носом туда, где можно почитать на эту тему чего-нибудь более менее вразумительное.



    Заранее благодарю за любую информацию.
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Arvis

    Для этого надо изучить устройство файловой системы.

    Раз ты про это первый раз слышишь, может рановато такую сложную задачу брать. Никаких готовых средств для восстановления нет, если не считать журнал в NTFS, про который наверное тоже мало что известно. Придется посекторно читать диск и принимать решения -вот собственно и все. Чисто программно задачка простая, а вот "интеллектуальная" сторона проблемы - это необзримый космос.
     
  3. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    valterg

    А кто говорил что первый раз слышу. С ФАТ и его устройством знаком давно. Вот с НТФС придется повоевать.
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Тогда сходи сюда. Тут даже тексты есть для программ работающих с NTFS.

    http://www.sysinternals.com/ntw2k/information.shtml

    Есть какая-то книжка англицкая - ее тут все время склоняют. На том сайте есть на нее ссылка.

    В Paragon Manager есть Partion Explorer - в нем есть опция для просмотра MFT и других управляющих структур NTFS. И вот где-то видел утилиту, которая журнал операций NTFS выдает. Спрашивай и дальше - информации-то вагон, но теперь уж наверное этим заниматься не буду. Столько готовых утилит есть, что неохота "паровоз" делать.
     
  5. zed_0xff

    zed_0xff New Member

    Публикаций:
    0
    Регистрация:
    13 май 2004
    Сообщения:
    29
    для фата:

    1) при удалении первый символ его забивается нулем => изменить его

    2) исходя из размера файла и кластера вычислить необходимое число кластеров

    3) если первый кластер удаленного файла уже занят => тогда ой.

    иначе занять его :)

    4) занять нужное число последующих кластеров

    все.



    значительный минус - хрен восстановишь если файл был фрагментирован.



    ЗЫ: могу ошибаться.
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    zed_0xff



    А по-моему ни одна утилита и не восстанавливает нормально ,если есть фрагментация на FAT.
     
  7. zed_0xff

    zed_0xff New Member

    Публикаций:
    0
    Регистрация:
    13 май 2004
    Сообщения:
    29
    valterg

    согласен :)

    чем больше файл - тем меньше шансы.

    но если:

    а) известного формата

    б) данные еще не затерты другими

    в) нужен _позарез_

    г) на месте голова и руки



    то очень даже может быть... :))
     
  8. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > Не подскажете, какими методами это делают существующие

    > программы

    про FAT готовить не буду, ибо во-первых, про нее уже много писано, а во-вторых она дышит на ладан.

    касательно NTFS. при удалении файла она в хидере файловой энти MTF сбрасывает атрибут флагов в ноль. имя файла не уродуется, цепочка кластеров (хранящася в run-list'е) тоже. меняем атрибут флагов в 1 и все будет ок.



    > возможно, ткнете носом туда, где можно почитать на эту

    > тему чего-нибудь более менее вразумительное.

    вот документация на NTFS http://linux-ntfs.sourceforge.net

    тут все написано. готовый восстановитель пищется буквально за пол-часа. NTFS не такая уж и сложная система ;)



    вот, кстати, шикарный редактор диска, который это делает: http://www.runtime.org/gdbnt.zip



    > Раз ты про это первый раз слышишь, может рановато такую сложную задачу брать

    а чего здесь сложного?



    > Никаких готовых средств для восстановления нет

    этим занимаются сотни утилит. набери в осле "NTFS" и посмотри



    > журнал в NTFS, про который наверное тоже мало что известно

    описание его структуры легко найти в сети. ее уже давно расковыряли. но для восстановления удаленных файлов он не поможет...



    > Придется посекторно читать диск и принимать решения -вот собственно и все.

    читаем посекторно MFT, после чего разбираем ее структуру. благо она простая. видишь в начале сектора "FILE*", спускаешься 16h от начала, если два байта не равны нулю, идешь дальше. если же равны - тогда по смещению 14h извлекаешь ссылку на первый аттрибут. номер аттрибута лежит в первых четырех байтах, следом идет размер поля аттрибута. тебе нужен аттрибут 30h - имя файла. в нем имя в уникоде. если это имя файла нужного тебе - меняешь 14h с 0 на 1. сохраняешься и монитируешь/демонитруешь том, чтобы изменения возымели силу.

    если интересно, могу описать методику восстановления подробнее.
     
  9. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    gdbnt.zip - восстановитель диска.

    А редактор : ntexpl.zip - вчера только скачал.
     
  10. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > gdbnt.zip - восстановитель диска

    оп-с! перепутал ссылки. но gdbnt - тоже хорошая программа, правда если встречает bad-сектор в MFT с воплем вылетает...



    P.S. вчера сонный был - после восстановления файла еще надо скорректировать битмап - карту свободного пространства диска, хранящуюся в одноименном файле в $MFT
     
  11. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135