2009-07-18 4 views
1

Я сделал программное обеспечение для восстановления файлов, которое считывает запись в каталоге FAT32 и идентифицирует первый кластер файла и пытается восстановить данные, но предполагается, что он работает нормально когда я пытаюсь использовать USB-диск fat32, происходит следующее.Удаление файлов на FAT32 USB изменяет первую информацию о кластере

Номер кластера, присвоенный файлу, когда он не удален, отличается от номера кластера сразу после его удаления. Я использовал Disk Investigator и Tune Up Undelete для проверки этого, ни один из них не смог восстановить файл. Это была общая проблема: обычно при удалении имени файла первый символ изменяется на 0xE5, а остальное остается неповрежденным, но это также изменяет его кластерную информацию.

Любая помощь? Можете ли вы попробовать с вашим USB-разъемом FAT32 и рассказать мне, что происходит?

Моя ОС - Windows Vista, Pen Drive - это один раздел FAT32.

ответ

1

Возможно, вы видите эффект USB Wear Leveling.

Этот пост на Advice for Testing USB sticks and Data recovery tools имеет больше примечаний по этому вопросу.

Из-за износа (контроллер переключает данные в разные сектора, чтобы увеличить продолжительность жизни чипов памяти при работе с записью). USB-накопители не могут быть легко обработаны стандартными утилитами диагностики жесткого диска.


Update: Reference, что противоречит моим предположениям выше.
Существует недавний тезис о The forensic potential of flash memory которой говорит, что
износ нивелирования работает на физическом уровне и не влияет на логический уровень (доступ к программному обеспечению) с.
Еще не читал эту диссертацию ... но, похоже, это хорошая информация для всех, кто интересуется флэш-устройствами.

+0

Dueto, что объяснение, которое вы указали, _controller_ на палочке выполнит это действие, хотя, что означает, что номер блока, который ОС (Windows) видит, НЕ изменится. Объяснение dlamblin, скорее всего, верно здесь. –

+1

Вы не видите износ, потому что это происходит на физическом уровне, а не на логическом уровне. См. Thesis: Восстановление удаленных данных с устройств флэш-памяти, Джеймс Риган, Морская аспирантура, Магистерская диссертация, 2009. http://simson.net/clips/students/09Sep_Regan.pdf – vy32

+0

@simsong, hmmm. Спасибо, что опубликовали ваше недавнее исследование как ссылку. Не нашел никаких четких данных по этому вопросу, и у него создалось впечатление, что выравнивание по ногам будет мешать восстановлению программного обеспечения. Будет проверять ваш тезис. – nik

0

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

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

Длинная версия намного лучше объясняется Анандом Шимпи в его знаменитой теперь статье SSD Anthology (E.G. в главе о деградации); есть даже detailed follow up, если вам нравится такая штука.

+0

Это неверно. Контроллер USB скрывает эти физические эффекты и представляет собой логический уровень, который неотличим от магнитного хранилища. См. Thesis: Восстановление удаленных данных с устройств флэш-памяти, Джеймс Риган, Морская аспирантура, Магистерская диссертация, 2009. http://simson.net/clips/students/09Sep_Regan.pdf – vy32

+0

@simsong Эй, я не против поправляться , особенно если я ошибаюсь, но на самом деле я не могу прочитать фрикционную пост-док-тезис по этому вопросу, чтобы выяснить, какое из трех моих предложений неверно. Не могли бы вы подвести итоги для меня? В противном случае я ничего не узнаю. Лично я подозреваю, что я не ошибаюсь, и вы просто неправильно поняли, что я сказал, потому что я обобщал какой-то подробный процесс в нескольких строках текста. – dlamblin

+0

Ваша ссылка AnandTech хорошая. Однако, интересно, обсуждается ли на стр. 8 (http://www.anandtech.com/storage/showdoc.aspx?i=3531&p=8) прошивка на флеш-устройстве (физическом уровне) и ОС (логический вид) не видит этой детали. Тем не менее влияние производительности остается таким, как описывает Ананд. Хорошо, еще не прочитал тезис или всю дискуссию SSD, это в моем списке чтения. Но, я думаю, что оба этих ответа и ссылки хороши, чтобы сохранить здесь (+1 здесь тоже). – nik

2

Возможно, Vista действительно намеренно меняет первое поле кластера в записи каталога? Что это на самом деле меняет? Вы не отправляли никаких примеров с реальными числами. Если это переписывание этого поля с некоторым числом, например 0 или 0xFFFFFFFF, в любом случае, это довольно верный знак. Виста намеренно уничтожает эту информацию, поэтому вы не можете найти файл.Если он изменит это поле, без необходимости, на какой-то другой допустимый номер кластера, это очень странно.

Еще одна вещь, о которой вы не упоминали, - это то, что данные файла на самом деле физически находятся на диске в кластере, где он был первоначально расположен. Было бы интересно увидеть фактические отвалы сектора того, что физически хранится в старых местоположениях и новое местоположение (при условии, что новое значение представляет собой номер кластера, который действительно существует). Если ни в одном месте нет фактических данных файла, вы можете выполнить полный захват всех секторов и выполнить поиск. Являются ли исходные данные файла еще неподвижными на диске в любом кластере/секторе?

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

+0

Спасибо, paul, я буду обновлять вас завтра с выводами. Насколько я помню .. Это было не 0 или 0xFFFFFFFF, это был еще один номер кластера, который я заметил, назначался каждому удаляемому файлу. Я не проверял, что произойдет, если я удалю два файла одновременно. Также физические данные всегда находились в исходном месте. –

0

Возможно, вы захотите сравнить код, который вы написали, с программами «icat» и «fls», которые являются частью инструментария судебной экспертизы для разработчиков с открытым исходным кодом SleuthKit. Используя SleuthKit, вы можете легко найти записи в каталоге для удаленных файлов FAT32, а затем icat inodes. Вы можете найти SleuthKit по адресу http://sleuthkit.org/

0

Я наткнулся на этот вопрос, поставив ту же проблему. Вопрос старый, но я надеюсь, что мой ответ поможет.

Эта проблема не имеет ничего общего с проблемами флэш-памяти. Когда файл удаляется из раздела FAT32, его верхнее слово первого кластера обнуляется, просто и просто (https://www.cnwrecovery.com/html/fat32.html).

Таким образом, невозможно просто восстановить удаленные файлы (и каталоги) на FAT32, в отличие от FAT12/FAT16.