Начнем с небольшой теории, когда вы удаляете данные, по факту они не удаляются сразу с жесткого диска. Они просто становится по сути невидимым для вас, но всё еще остаётся лежать где-то на жёстком диске и место занимаемое этими данными помечается как доступное. При создании файлов данные разбиваются на куски и хранятся в определённые блоках на жестком диске и пока другие данные не перезапишут эти данные удаленных файлов, они всё еще будут находится там.
Я заведомо не расписываю всё до малейших мелочей потому как вникать во все подробности не очень-то и интересно обычному пользователю. Вот примерно, что происходит, когда вы удаляете данные:
- Файлы помечаются как удалённые и скрываются от пользователя
- Все блоки в которых хранятся данные файлов помечаются как для перезаписи, т.е. меняется состояние блоков. Место занимаемое данными помечается как свободное и доступное для перезаписи
- При создании новых файлов данные могут быть помещены в эти блоки и соответственно перезаписывают те данные, которые были помечены для перезаписи
Теперь, когда мы понимаем, как это работает можно догадаться что данные в блоках, могут быть и не перезаписаны, если не были созданы новые файлы, а стало быть данные всё ещё можно достать оттуда.
Устанавливаем Scalpel
Для восстановления удалённых данных, если они еще не перезаписаны мы будем пользоваться утилитой Scalpel.
sudo apt install scalpel
sudo yum install epel-release
sudo yum install scalpel
sudo pacman -S scalpel
Файл конфигурации
Я думаю стоит обратит отдельное внимание на файл конфигурации (/etc/scalpel.conf
), так как в нём прописаны уже предустановленные типы файлов, которые вы можете восстановить. Дело в том, что Scalpel ищет только те файлы, расширение которых подпадает под настройки в файле конфигурации.
Но помимо расширения в файле также указывается минимальный и максимальный размер файла. А также стандартный заголовок и нижний колонтитул файла.
Для примера возьмём строку jpg y 5:200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9
, где:
- jpg - Расширение файла
- y - Чувствительны ли верхний и нижний колонтитулы к регистру
- 5:200000000 - Минимальный и максимальный размер файла
- \xff\xd8\xff\xe0\x00\x10 - Стандартный заголовок, идентифицирующий начало файла
- \xff\xd9 - Стандартный нижний колонтитул, обозначающий конец файла
Восстанавливаем данные
Очень важное замечание: При восстановлении подключите к вашему компьютеру другое устройство хранения данных, чтобы не восстанавливать данные на тот же жёсткий диск, с которого данные были удалены.
Если вы восстанавливаете файлы с расширением, который уже есть в файле конфигурации то проблем по сути возникнуть недолжно. Например, попробуем восстановить удалённые картинки с диска /dev/sda
в папку /sdb
(отдельный диск).
sudo vim scalpel.conf
jpg y 5:200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9
sudo scalpel -c scalpel.conf -o /sdb/ /dev/sda
Восстанавливаем файлы txt
Вот тут уже немного посложнее, мы уже говорили, что в конфиге также указывается Стандартный заголовок и Стандартный нижний колонтитул. Это значит, что мы каким-то образом сперва должны получить эти значения для удалённого файла. Звучит немного сложно, но давайте попробуем разобраться.
- Если вы знаете что ваш удалённый файл начинался со строки
just
, то вы можете создать новый файл и получить Стандартный заголовок и Стандартный нижний колонтитул.
echo "just for test" > 111.txt
- Теперь получим заголовок используя утилиту head, где считаем первые 4 символов и переведём их в hex.
head --bytes 4 111.txt | hexdump -C
6a 75 73 74
- Тоже самое сделаем и с концом файла, чтобы получить нижний колонтитул
tail --bytes -4 111.txt | hexdump -C
65 73 74 0a
- Редактируем файл конфигурации
sudo vim scalpel.conf
txt y 100000 \x6a\x75\x73\x74 \x65\x73\x74\x0a
- Запускаем восстановление
sudo scalpel -c scalpel.conf -o /sdb/ /dev/sda
txt with header "\x6a\x75\x73\x74" and footer "\x65\x73\x74\x0a" --> 57845 files
- Проверяем что в директорию
/sdb
восстановились файлыtxt
, которые начинаются со строкиjust for test
sudo grep -rnw /sdb1/ -e "just for test"
/sdb1/txt-0-50/00050711.txt:1:just for test
Итог
Утилита хорошая и вроде даже как её называют в интернете одной из лучших для восстановления, но вот если вы хотите восстановить файлы с расширением, которого нет в файле конфигурации и которые имеют нестандартный заголовок, который может меняться то будет немного сложно это осуществить.
Комментарии