- PVSM.RU - https://www.pvsm.ru -
У каждого человека в жизни возникает такая ситуация как rm -rf на той папке, где этого не следовало делать. Бекапы это хорошо, но что делать если их нет? Для Linux систем существует утилита Scalpel, которая позволяет восстановить удалённые файлы по заданным паттернам, включая применение регулярных выражений.
Scalpel является форком проекта Foremost (с версии 0.69), начавший свою историю с 2005 года. Имеет свой github [1] репозиторий и является более быстрым по скорости восстановления данных, а также эффективности чем Foremost. Говоря о разнице этих двух проектов можно сказать, что вышедшая после версии 0.69 Foremost имеет новые семантические техники восстановления данных. К примеру при восстановлении JPEG файлов используется заголовок этого файла для вычисления соответствующего тела изображения, когда Scalpel просто возьмет данные между заданными сигнатурами завершения и начала файла изображения. Таким образом можно сказать, что Foremost более точно может восстановить потерянные данные, когда Scalpel сделает это значительно быстрее.
Возможности которые предоставляет Scalpel:
Scalpel как правило доступен среди пакетов соответствующего дистрибутива Linux, но также можно собрать его из сырцов забрав с репозитория гитхаба [1].
Настройка приложения осуществляется в файле /etc/scalpel/scalpel.conf, где задаются соответствующие шаблоны поиска файлов. В нём можно увидеть уже готовые пресеты для поиска, к примеру по изображениям или doc файлам. Для восстановления потерянных данных следует раскомментировать соответствующие шаблоны и запустить приложение.
Если в файле отсутствует шаблон нужного файла, или к примеру вы ищете какого-то определенного формата xml то возникает необходимость создания своего шаблона, который описывается подобно правилам представленным ниже
Type | Case sensitive | Size range | Header | Footer | Search option |
---|---|---|---|---|---|
avi | y | 50000000 | RIFF????AVI | ||
doc | y | 10000000 | xd0xcfx11xe0xa1xb1x1axe1x00x00 | xd0xcfx11xe0xa1xb1x1axe1x00x00 | NEXT |
y | 500000 | %EOFx0d | REVERSE | ||
y | 500000 | %EOFx0a | REVERSE | ||
tex | y | 300:50000 | /%.{1,20}.tex/ | /%.{1,20}.texsEnd/ | |
php | y | 100000 | <?php | ?> | REVERSE |
Вкратце о колонках
Важно отметить, что в качестве последнего поля Search option допустимы значения:
Заметка
В случае если вам нужно использовать знак вопроса "?" как искомую величину в составе заголовка или конца файла, тогда вам нужно переопределить wildcard символ, которым и является знак вопроса. Для этого нужно в начале конфигурационного файла написать
wildcard S
Где S новое обозначение wildcard символа в искомом выражении, или же воспользоваться шестнадцатричным представлением данного символа, что эквивалентно x3f или 63
Предположим мы удалили файлы которые описываются шаблонами в таблице выше. Запишем эти шаблоны в конфигурационный файл (в качестве разделения колонок используется символ табуляции) /etc/scalpel/scalpel.conf и запустим восстановление (мной был заранее заготовлен образ с данными для восстановления)
root# scalpel MyDrive.img -o recover
Written by Golden G. Richard III, based on Foremost 0.69.
Opening target "/home/username/Documents/repair_files/test/MyDrive.img"
Image file pass 1/2.
MyDrive.img: 100.0% |*****************************************************| 500.0 MB 00:00 ETA
Allocating work queues...
Work queues allocation complete. Building carve lists...
Carve lists built. Workload:
avi with header "x52x49x46x46x3fx3fx3fx3fx41x56x49" and footer "" --> 1 files
doc with header "xd0xcfx11xe0xa1xb1x1axe1x00x00" and footer "xd0xcfx11xe0xa1xb1x1axe1x00x00" --> 2 files
pdf with header "x25x50x44x46" and footer "x25x45x4fx46x0d" --> 33 files
pdf with header "x25x50x44x46" and footer "x25x45x4fx46x0a" --> 19 files
php with header "x3cx3fx70x68x70" and footer "x3fx3e" --> 8 files
Carving files from image.
Image file pass 2/2.
MyDrive.img: 100.0% *****************************************************| 500.0 MB 00:00 ETA
Processing of image file complete. Cleaning up...
Done.
Scalpel is done, files carved = 63, elapsed = 6 seconds.</pre>
<p>После завершения исполнения в результирующей папке мы обнаружим найденные файлы и audit.txt в котором будет краткая информация о найденных файлах подобно представленному ниже</p>
<pre>Scalpel version 1.60 audit file
Started at Wed Jan 7 12:50:52 2015
Command line:
scalpel MyDrive.img -o recover
Output directory: /home/username/Documents/repair_files/test/recover
Configuration file: /etc/scalpel/scalpel.conf
Opening target "/home/username/Documents/repair_files/test/MyDrive.img"
The following files were carved:
File Start Chop Length Extracted From
00000003.pdf 549888 NO 4162 MyDrive.img
00000055.php 1227776 NO 99954 MyDrive.img
00000001.doc 8916992 YES 10000000 MyDrive.img
Также обратим внимание на некоторые доступные опции
-p при использовании данной опции файлы не будут восстановлены, но будет создан файл аудита, в котором можно будет просмотреть какие файлы будут восстановлены
-q с данной опцией scalpel будет сканировать только начало каждого кластера заданного размера и искать соответствующее начало искомого файла
-v verbose режим
-o указать каталог куда будет положен результат восстановления данных
Всем удачного восстановления данных!
Автор: vchampion
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/78905
Ссылки в тексте:
[1] github: https://github.com/sleuthkit/scalpel
[2] Scalpel: A Frugal, High Performance File Carver. Golden R. Richard III, Vassil Roussev: http://www.ccse.kfupm.edu.sa/~ahmadsm/coe589-122/naseer2013-scalpel.pdf
[3] SANS Institute InfoSec reading room: data carving concepts: http://www.sans.org/reading-room/whitepapers/forensics/data-carving-concepts-32969
[4] TRE Regex Syntax: http://laurikari.net/tre/documentation/regex-syntax/
[5] Источник: http://habrahabr.ru/post/247421/
Нажмите здесь для печати.