Удаление файлов на FAT32 USB изменяет первую информацию о кластере - PullRequest
1 голос
/ 18 июля 2009

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 21 июля 2009

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

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

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

1 голос
/ 18 июля 2009

Вы, вероятно, видите эффект USB Нивелирование .

Это сообщение на Советы по тестированию USB-накопителей и средств восстановления данных содержит больше примечаний по этому вопросу.

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


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

0 голосов
/ 11 августа 2016

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

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

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

0 голосов
/ 24 сентября 2009

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

0 голосов
/ 18 июля 2009

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

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

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

...