Как написать unerase
От: VladSharkov Россия  
Дата: 24.06.04 16:47
Оценка:
Привет всем.
Столкнулся с сабжевой проблемой.
Кто-нибудь занимался подобной темой ?
Насколько мне известно технология востановления файлов для NTFS будет отличаться от Fat/Fat32
Если да, то поделитесь опытом, в каком направлении копать, чтобы порешать ее под обе файловые системы ?
Заранее спасибо...
Re: Как написать unerase
От: MShura  
Дата: 24.06.04 16:58
Оценка: +1
Здравствуйте, VladSharkov, Вы писали:

VS>Привет всем.

VS>Столкнулся с сабжевой проблемой.
VS>Кто-нибудь занимался подобной темой ?
VS>Насколько мне известно технология востановления файлов для NTFS будет отличаться от Fat/Fat32
VS>Если да, то поделитесь опытом, в каком направлении копать, чтобы порешать ее под обе файловые системы ?
VS>Заранее спасибо...

Собственно нужно сначало изучить устройство этих файловых систем.
Могу точно сказать, что 100% гарантии невозможно достич.
Да есть некоторые условия при которых файлы можно восстановить, однако эти условия достаточно узкие.
Re: Как написать unerase
От: Stanky  
Дата: 24.06.04 17:00
Оценка:
> Насколько мне известно технология востановления файлов для NTFS будет
> отличаться от Fat/Fat32
>
Если файл был фрагментированным, то ты его можешь восстановить только догадываясь где какой фрагмент находился — анализировать сам формат файла, делать догадки, что какой-то фрагмент мог быть нефрагментированным — вобщем больше алхимии, а не точной науки!!!
Если же ты заведомо знаешь, что файл не фрагментирован или умещался в одном кластере, то достаточно найти его описатель в родительской папке взять значение первого кластера и размер файла, а потом последовательно забивать в FAT'е нужные значения!!!

Но если в FAT'е всё расположение и хранится в одном месте и формате, то в NTFS'е это не всегда так: маленькие файлы хранятся прямо в MFT!!!
Вот как с шифрованиям и сжатием дела обстоят я даже не представляю — вобщем восстановление NTFS'а очень геморно!!!
Недаром большинство прог работают с ним только в режиме чтения!!!
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re: Как написать unerase
От: Lonely Dog Россия  
Дата: 24.06.04 17:12
Оценка: 1 (1)
Здравствуйте, VladSharkov, Вы писали:

VS>Привет всем.

VS>Столкнулся с сабжевой проблемой.
VS>Кто-нибудь занимался подобной темой ?
VS>Насколько мне известно технология востановления файлов для NTFS будет отличаться от Fat/Fat32
VS>Если да, то поделитесь опытом, в каком направлении копать, чтобы порешать ее под обе файловые системы ?
VS>Заранее спасибо...

Сталкивался. Решал.
Про FAT уже написано много всего хорошего. Если вкратце, то точно восстановить файл там можно только если он не фрагментирован. В противном случае, будут проблемы. (Помнится, Norton Unerase позволял руками находить кластеры, принадлежащие файлу и склеивать их.)

С NTFS все гораздно лучше.
В "Windows 2000 Native API Reference" Gary Nabbet-а есть два примера работы c NTFS. Они помогут разобраться с базовыми концепциями. Кроме того, в сети есть дока по структурам NTFS (создавалась в рамках проекта по написанию драйвера NTFS для Linix. Лежит где-то на sourceforge.) . Мне этого хватило, что бы написать свой undelete. Со сжатыми файлами проблем не будет. С зашифрованными вроде тоже.
PS: Учтите, что ваш процесс разработки будет выглядеть сл. образом:


Во всяком случае, у меня все было именно так.
Re: Как написать unerase
От: Аноним  
Дата: 24.06.04 17:42
Оценка:
Здравствуйте, VladSharkov, Вы писали:

VS>Столкнулся с сабжевой проблемой.


Не здесь, случаем "столкнулся"?
Re[2]: Как написать unerase
От: Аноним  
Дата: 25.06.04 05:08
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Если файл был фрагментированным, то ты его можешь восстановить только догадываясь где какой фрагмент находился — анализировать сам формат файла, делать догадки, что какой-то фрагмент мог быть нефрагментированным — вобщем больше алхимии, а не точной науки!!!


Совершенно верно.

S>Если же ты заведомо знаешь, что файл не фрагментирован или умещался в одном кластере, то достаточно найти его описатель в родительской папке взять значение первого кластера и размер файла, а потом последовательно забивать в FAT'е нужные значения!!!


Не всегда можно узнать начальный кластер, т.к. при удалении старший байт обнуляется. Для FAT12/16 это не страшно, но для FAT32 имеет место.

S>Но если в FAT'е всё расположение и хранится в одном месте и формате, то в NTFS'е это не всегда так: маленькие файлы хранятся прямо в MFT!!!

Угу

S>Вот как с шифрованиям и сжатием дела обстоят я даже не представляю — вобщем восстановление NTFS'а очень геморно!!!

Ну не очень геморно, но сложнее.

S>Недаром большинство прог работают с ним только в режиме чтения!!!

Ну для unerase запись и не нужна. А вообще с записью не связываются по другой причине — формат NTFS не документирован, и поэтому всегда есть вероятность записать чего-нибудь что ОС не поймет.


Я как раз пишу свою такую тулзу, можно глянуть на www.handyrecovery.com. Там правда 1.0, но скоро будет релиз 2.0
Re[2]: Как написать unerase
От: Аноним  
Дата: 25.06.04 05:10
Оценка:
Здравствуйте, Lonely Dog, Вы писали:

LD>PS: Учтите, что ваш процесс разработки будет выглядеть сл. образом:

LD>

LD>Во всяком случае, у меня все было именно так.


У меня тоже
Re[3]: Как написать unerase
От: Stanky  
Дата: 25.06.04 14:30
Оценка:
> Ну для unerase запись и не нужна. А вообще с записью не связываются по
> другой причине — формат NTFS не документирован
>
Именно по этой причине я и сказал, что это довольно геморно!!!
Причём существует несколько версий NTFS'а: на данный момент последняя 5.0.
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[3]: Как написать unerase
От: Stanky  
Дата: 27.06.04 00:25
Оценка:
> Я как раз пишу свою такую тулзу, можно глянуть на
> www.handyrecovery.com. Там правда 1.0, но скоро будет релиз 2.0
>
Если не секрет, то как происходит восстановление файла в FAT'е?
Делается предполажение, что файл не фрагментирован или что-то посложней?
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[4]: Как написать unerase
От: Аноним  
Дата: 27.06.04 08:36
Оценка:
Здравствуйте, Stanky, Вы писали:

>> Я как раз пишу свою такую тулзу, можно глянуть на

>> www.handyrecovery.com. Там правда 1.0, но скоро будет релиз 2.0
>>
S>Если не секрет, то как происходит восстановление файла в FAT'е?
S>Делается предполажение, что файл не фрагментирован или что-то посложней?

Пока FAT был неприоритетной FS, поэтому реализован самый простой вариант, когда считаем файл недефрагменитрованным, но есть идеи по улучшению, наверное в 2.1 буду доделывать.
Re[5]: Как написать unerase
От: Stanky  
Дата: 27.06.04 10:34
Оценка:
> Пока FAT был неприоритетной FS, поэтому реализован самый простой
> вариант, когда считаем файл недефрагменитрованным, но есть идеи по
> улучшению, наверное в 2.1 буду доделывать.
>
И какие идеи?
По формату файла ориентироваться или люзера спрашивать оно не оно?
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[6]: Как написать unerase
От: Аноним  
Дата: 28.06.04 05:14
Оценка:
Здравствуйте, Stanky, Вы писали:

S>И какие идеи?

S>По формату файла ориентироваться или
И это тоже

S>люзера спрашивать оно не оно?

Ну спрашивать вряд ли, многие не поймут чего от них хотят
Re: Как написать unerase
От: killerm Украина www.evector.net
Дата: 25.07.04 16:49
Оценка:
Здравствуйте, VladSharkov, Вы писали:

привет, Влад можешь мне в email написать, а то я тебе отправил еmail письмо вернулось, хотелось бы спросить про модемы, ты писал такое кгода-то
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.