3

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

Насколько я понимаю, я не могу использовать инструменты для вырезания файлов, такие как Scalpel, так как они полагаются на идентификацию файлов на основе их верхних и нижних колонтитулов, но txt-файлы не имеют ни того, ни другого.

Поэтому я думаю, что мой единственный вариант - поиск этих известных строк в необработанном дампе.

У меня есть дамп раздела FAT32, файл img 150 ГБ, созданный с помощью dd .

Насколько я понимаю, FAT32 использует кластеры 4K. Таким образом, любой файл размером менее 4 КБ, который имеет место для большинства текстовых файлов, которые я ищу, будет находиться в одном кластере. Некоторые из них будут охватывать два или более кластера, возможно, смежные, а может и нет.

Поэтому я думаю, что мне нужен инструмент, который может пройти через каждый кластер на изображении, и grep для списка ключевых слов. Если кластер содержит совпадение, его следует скопировать в файл, возможно, просто cluster001.txt, cluster002.txt и т.д. Затем я могу вручную собрать эти кластеры вместе.

Я хотел бы знать, имеют ли смысл мои рассуждения и идеи?

Какие инструменты я могу использовать для достижения этой цели?

1 ответ1

4

Я не знаю ни одного инструмента восстановления файлов, который выбирает файлы на основе конкретной строки, которую они содержат, но эти три метода должны работать:

  1. При удалении файла в разделе FAT32 его имя файла не перезаписывается. Только первый байт имени файла 8.3 устанавливается в E5, помечая файл как удаленный. Это не повлияет на расширение, поэтому файлы TXT все еще легко узнаваемы.

    Вы можете использовать любой инструмент восстановления файлов, который позволяет вам указать расширение (например, Recuva), восстановить все файлы TXT, а затем искать дневник во всех восстановленных файлах.

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

  2. Такие программы, как PhotoRec, идентифицируют файлы по их содержимому и пытаются восстановить их. Хотя в текстовых файлах нет заголовков, PhotoRec все же удается их идентифицировать (я полагаю, исключение).

    Опять же, вы можете восстановить все текстовые файлы, а затем искать дневник во всех восстановленных файлах.

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

  3. Поскольку вы не ожидаете, что текстовые файлы будут большими, вы также можете найти дневник в дампе раздела и восстановить кластер, содержащий его:

    sudo bash -c '
        for OFFSET in $(grep -abio diary /dev/sda3 | cut -d: -f 1); do
            ((CLUSTER = OFFSET / 4096))
            dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1
        done
    '
    

    Как это устроено:

    • grep -Pabio diary /dev/sda3 | cut -d: -f 1 будет печатать смещения байтов при каждом появлении строкового дневника в файле изображения.

      -i делает поиск нечувствительным к регистру. -P включает Perl-совместимые регулярные выражения. Это необходимо из-за ошибки в некоторых версиях (GNU) grep, которая делает поиск без учета регистра невыносимо медленным, если вы не используете PCRE.

    • ((CLUSTER = OFFSET / 4096)) вычисляет смещение в кластерах из смещения в байтах.

    • dd if=<imgfile> of=cluster$CLUSTER.txt bs=4096 skip=$CLUSTER count=1 записывает кластер со смещением X в файл с именем clusterX.txt.

    По своей природе это будет работать только для файлов, которые помещаются в один кластер. Вы можете увеличить количество для восстановления более одного кластера и уменьшить CLUSTER для восстановления предыдущих кластеров.

    Чтобы восстановить три кластера (один до и один после кластера, содержащего дневник), внесите следующие изменения:

    ((CLUSTER = OFFSET / 4096 - 1))
    
    dd ... count=3
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .