# Scalpel
## Теоретическое введение
У всех в жизни случалось что удалили файлы в той папке, где этого не следовало делать. Для Linux систем существует утилита Scalpel, которая позволяет восстановить удалённые файлы.
Scalpel является форком проекта Foremost (с версии 0.69), начавший свою историю с 2005 года. Имеет свой github репозиторий и является более быстрым по скорости восстановления данных.
**Возможности которые предоставляет Scalpel:**
1. Восстановление независимо от файловой системы
2. Выставление минимального и максимального размеров восстанавливаемого файла
3. Использование многопоточности на многоядерных системах
4. Асинхронные операции ввода/вывода дающие прирост при поиске по шаблону
5. Использование TRE регулярных выражений для поиска по началу и концу файла
6. Возможность восстановления из вложенных структур данных
7. Для гиков доступна возможность использования GPU, что доступно только для Linux и требует предустановленного NVIDIA CUDA SDK и небольших модификаций исходного кода (поиск c применением регулярных выражений не работает с GPU)
## Подготовка к работе
Для работы со Scalpel можно создать новую виртуальную машину, с помощью VMware Workstation, и установлить операционную систему Parrot, одна из версий которой содержит в себе необходимую нам утилиту.

Образ для виртуальной машины можно скачать с официального [сайта](https://www.parrotsec.org/) Parrot OS.
Если у вас уже установален, например, Ubuntu, то можно установить утилиту через терминал с помощью команды:
` apt-get install scalpel`
Создаём папки, куда будут воостанавливаться файлы: restore_1, restore_2, restore_usb. В первую воостановим файлы с жёсткого диска, во вторую с дополнительного раздела памяти, в третью с флеш-накопителя.

Теперь запустим Scalpel и подготовим его для работы. Отредактируем файл конфигурации раскомментировав строки, которые отвечают за форматы jpg, pdf, doc, txt.
С помощью команды `/etc/scalpel/scalpel.conf` открываем файл, и видно как раскомментирован формат файлов (txt).

## Работа с утилитой
Теперь мы можем приступать к **сканированию, начнём с основого диска**. Вводим следующую команду:
`sudo scalpel /dev/sda1 -o /home/sveta/restore_1 -v`
Видим как происходит сканирование. В зависимости от размера и типа диска, восстановление может занять некоторое время.

По завершении, в указанной нами папке restore_1 можно будет найти все восстановленные файлы.

**Для восстановления файлов с флеш-носителя** вводим команду:
`sudo scalpel /dev/sdb -o /home/sveta/restore_usb -v`
Запускается сканирование.


Аналогично, с предыдущим сканированием в указанной директории найдем восстановленные файлы

**Для воссановления из другого раздела диска** используем:
`sudo scalpel /dev/sda2 -o /home/sveta/restore_2 -v`
После сканирования, найдем восстановленные файлы в папке restore_2.

********
*Подготовлено в рамках Практической работы №2, студентfvb группы БСБО-07-19 Буздаловой Светланой, Меркуловым Максимом.*