Восстановление текстового файла на поврежденной файловой системе Flashdrive

Я могу читать необработанные данные поврежденной файловой системы USB-накопителя. Есть ли какой-нибудь простой способ восстановить только текстовые файлы и файлы docx, используя эти необработанные данные? (Язык программирования: C ++)


person jodylan    schedule 13.04.2015    source источник


Ответы (1)


Возможно, это получится, но это будет непросто.

Прежде всего вам нужно будет проанализировать файловую систему (я предполагаю, что это fat32 из тегов). Фактически, вам нужно будет проанализировать File Allocation Table (если он поврежден и на вашем диске включена зеркальная копия FAT, вы можете попробовать с ее помощью). В зависимости от повреждения вы можете извлечь некоторые файлы. Прочтите эту статью для получения дополнительной информации о структуре FAT32, и вы можете использовать эта спецификация Microsoft в качестве более строгого руководства. Хороший подход к пониманию файловой системы - это сделать небольшой USB-накопитель или логический диск с образцом файла и проанализировать его вручную с помощью какого-нибудь шестнадцатеричного редактора (например, бесплатного wxHexEditor или проприетарного WinHex).

Вы можете попытаться найти последовательности из ASCII символов в шестнадцатеричном изображении, но тогда вам нужно будет отсортировать их вручную.

Что касается docx, этот формат внутренне представляет собой набор файлов и ресурсов XML, сжатых в zip. Таким образом, восстановление из необработанного шестнадцатеричного изображения будет сложной задачей.

person trvecvlt    schedule 13.04.2015
comment
Привет @trvecvlt, спасибо за решение. Просто немного любопытно при синтаксическом разборе Таблица размещения файлов, не могли бы вы вкратце объяснить больше? также как работают последовательности символов ASCII для восстановления данных - person jodylan; 13.04.2015
comment
@jodylan, в моем ответе есть 2 ссылки, вы должны сначала проверить их, и если какие-то более конкретные детали неясны, вы можете спросить о них здесь. Вся тема слишком велика для формата вопросов и ответов. - person trvecvlt; 13.04.2015
comment
@jodylan и около ASCII символов, для необработанных текстовых файлов вы можете просто прокрутить изображение и проверить, находятся ли шестнадцатеричные значения внутри диапазона ASCII и есть ли их последовательность длиннее некоторого значения. Он извлечет все текстовые данные (включая ASCII имена файлов) из вашего изображения в несортированном порядке. Но это просто и может быть полезно, если на вашем диске всего несколько текстовых файлов. - person trvecvlt; 13.04.2015
comment
просто интересно, как мне извлечь файл из этого шестнадцатеричного значения. не могли бы поделиться образцом ?? - person jodylan; 13.04.2015
comment
@jodylan, проанализируйте загрузочную запись - ›найдите корневой кластер -› рекурсивно проанализируйте дочерние каталоги и файлы - ›найдите свой файл -› извлеките данные, следующие за цепочками кластера. Вы можете попробовать эту утилиту: gitorious.org/unix-stuff/fat-util в качестве примера и проверьте эту ссылку как более практическое описание wiki.osdev.org/FAT - person trvecvlt; 13.04.2015
comment
Я хотел бы сказать вам большое спасибо за ваше руководство по этой теме. Цените свое время и информацию. Без этой информации мне будет очень сложно. В настоящее время пытаюсь кодировать его на C ++. - person jodylan; 14.04.2015