четверг, 22 июля 2021 г.

Восстановление doc файлов удалённых из корзины (удаленных безвозвратно)

foremost + поиск по hex сигнатуре ключевой фразы

 

foremost -i /dev/sdXX  -o /путь/к/папке/на/которой/достаточно/места/возможно/внешний/носитель

sdXX - раздел, на котором удалился файл

Запускаем и пусть работает


Создаём bash-скрипт для поиска файлов с содержанием unicode-текста в hex-представлении (например ~/searchsig.sh):


#!/bin/bash
if [ -z $1 ]; then echo "Usage: $0 <hex sequence>"; exit -1;
fi
find . -type f | while read x; do echo $x; xxd -p "$x" | grep "$1" | cut -c 1-100; done | grep "$1" -B 1


После отработки foremost'а копируем в выходной папке (/путь/к/папке/на/которой/достаточно/места/возможно/внешний/носитель) из подкаталога ole в подкаталог doc файлы с расширением .ole - на деле, это часто именно doc-файлы (можно убедиться по сигнатуре начала файла d0 cf 11). Делаем групповое переименование .ole в .doc для удобства (в подкаталоге doc/): 

rename "s/\.ole/\.doc/" *.ole

 

Выясняем hex-сигнатуру искомого текста (чтобы был только в нашем файле). В бинарнике unicode-последовательности идут с перестановкой старшего и младшего байта, например, буква "к" будет 3a04, в то время, как её unicode-значение 043a. Можно подсмотреть весь фрагмент текста в выхлопе hd для старой версии файла (если есть) или в файле с такой же фразой. 

Пишем hex-последовательность искомого текста. Например, для слова "привет" это будет 3f0440043804320435044204 - без пробелов, скрипт будет использовать xxd (см.выше), пробелов там нет.

Натравливаем скрипт на подкаталог doc (перейдя туда) и перенаправляем выхлоп в файл для дальнейшей выборки (можно создать подкаталог found на том же уровне, что и doc):

cd путь/к/папке/на/которой/достаточно/места/возможно/внешний/носитель/doc

bash ~/searchsig.sh 3f0440043804320435044204 > ../found/list_файлы_содержащие_слово_привет.txt

 

после того, как скрипт отработает, копируем найденные файлы (например, туда же, в found):

 

mkdir ../found/привет

cat ../found/list_файлы_содержащие_слово_привет.txt | grep "./" | while read x; do cp "$x" ../found/привет/; done


Переходим в ../found/привет , по одному открываем файлы и находим нужный.



Комментариев нет: