- linux-notes.org
- Восстановление потерянных данных с помощью scalpel на Linux
- Как установить scalpel на Ubuntu 12.04/12.10/13.04/13.10/14.04 и Mint 13/14/15
- Установка scalpel в CentOS 5.x/6.x и Fedora 15/16/17/18/19 /
- Как использовать инструмент восстановления Scalpel
- Добавить комментарий Отменить ответ
- Восстановление удаленных данных с помощью Scalpel
- Scalpel linux ��� ������������
linux-notes.org
Восстановление потерянных данных с помощью scalpel на Linux
Scalpel утилита на написана на основе Foremost с открытым исходным кодом которое умеет восстанавливать удаленную информацию, скальпель значительно более быстрый и эффективный, читает базу данных колонтитулов определений и экстрактов соответствующих файлов или фрагментов данных из набора графических файлов или файлов непосредственных устройств.
scalpel может восстанавливать файлы с FATx, NTFS, Ext2/3/4, HFS +, или «сырых разделов» (raw partitions).
scalpel имеет один единственный файл — инструмент системы. Программа доступна на Linux и Mac OS, но также может быть использована в Windows, хотя ее необходимо скомпилировать.
Как установить scalpel на Ubuntu 12.04/12.10/13.04/13.10/14.04 и Mint 13/14/15
Для установки скальпеля просто откройте терминал и введите следующую команду:
Установка scalpel в CentOS 5.x/6.x и Fedora 15/16/17/18/19 /
Для установки Scalpel на Centos или Fedora Linux, необходимо сначала включить репозиторий EPEL и введите следующую команду:
Как использовать инструмент восстановления Scalpel
Прежде чем мы сможем использовать скальпель, мы должны определить некоторые типы файлов, которые Скальпель будет искать в /etc/scalpel/scalpel.conf. По умолчанию все типы файлов с комментарием. В этом примере я хочу искать удаленные JPG файлы, так что я раскомментирую следующие строки:
GIF and JPG files
Посмотрим в конфиге, где они находятся, это хорошо видно на рисунке ниже.
Scalpel config file
Перейдите в терминал и устройство на котором нужно найти удаленный файл имеет следующий синтаксис.’/ Dev/sda6′, по этому найдем нужные файлы и восстановим их выполнив команду:
пример поиска файлов Scalpel
Восстановление потерянных данных с помощью scalpel на Linux закончено. Надеюсь понятно изложил данный материал.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
Восстановление удаленных данных с помощью Scalpel
У каждого человека в жизни возникает такая ситуация как rm -rf на той папке, где этого не следовало делать. Бекапы это хорошо, но что делать если их нет? Для Linux систем существует утилита Scalpel, которая позволяет восстановить удалённые файлы по заданным паттернам, включая применение регулярных выражений.
Scalpel является форком проекта Foremost (с версии 0.69), начавший свою историю с 2005 года. Имеет свой github репозиторий и является более быстрым по скорости восстановления данных, а также эффективности чем Foremost. Говоря о разнице этих двух проектов можно сказать, что вышедшая после версии 0.69 Foremost имеет новые семантические техники восстановления данных. К примеру при восстановлении JPEG файлов используется заголовок этого файла для вычисления соответствующего тела изображения, когда Scalpel просто возьмет данные между заданными сигнатурами завершения и начала файла изображения. Таким образом можно сказать, что Foremost более точно может восстановить потерянные данные, когда Scalpel сделает это значительно быстрее.
Возможности которые предоставляет Scalpel:
- Восстановление независимо от файловой системы
- Выставление минимального и максимального размеров восстанавливаемого файла
- Использование многопоточности на многоядерных системах
- Асинхронные операции ввода/вывода дающие прирост при поиске по шаблону
- Использование TRE регулярных выражений для поиска по началу и концу файла
- Возможность восстановления из вложенных структур данных
- Для гиков доступна возможность использования GPU, что доступно только для Linux и требует предустановленного NVIDIA CUDA SDK и небольших модификаций исходного кода (поиск c применением регулярных выражений не работает с GPU)
Scalpel как правило доступен среди пакетов соответствующего дистрибутива Linux, но также можно собрать его из сырцов забрав с репозитория гитхаба.
Настройка приложения осуществляется в файле /etc/scalpel/scalpel.conf, где задаются соответствующие шаблоны поиска файлов. В нём можно увидеть уже готовые пресеты для поиска, к примеру по изображениям или doc файлам. Для восстановления потерянных данных следует раскомментировать соответствующие шаблоны и запустить приложение.
Если в файле отсутствует шаблон нужного файла, или к примеру вы ищете какого-то определенного формата xml то возникает необходимость создания своего шаблона, который описывается подобно правилам представленным ниже
Type | Case sensitive | Size range | Header | Footer | Search option |
---|---|---|---|---|---|
avi | y | 50000000 | RIFF. AVI | ||
doc | y | 10000000 | \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 | \xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00 | NEXT |
y | 500000 | %EOF\x0d | REVERSE | ||
y | 500000 | %EOF\x0a | REVERSE | ||
tex | y | 300:50000 | /%.<1,20>\.tex/ | /%.<1,20>\.tex\sEnd/ | |
php | y | 100000 | REVERSE |
Вкратце о колонках
- Type – имеет значение только в контексте программы, никакого отношения к восстанавливаемым файлам не имеет и будет использовано только при отображении лога и названии директорий в востановленных данных. Можно не указывать, в таком случае просто поставить NONE
- Case sensitive – учитывать ли регистр при поиске по заданному шаблону
- Size range – если указано просто число, то максимальный размер искомого файла, если через двоеточие то min:max размер файла
- Header, Footer – шаблоны поиска начала и конца файла. Допустимо использование TRE регулярных выражений. В качестве пробела используется символ \s, также можно использовать шестнадцатричное и восьмеричное представление искомых данных к примеру \x[0-f][0-f] или \245
Важно отметить, что в качестве последнего поля Search option допустимы значения:
- REVERSE — данный параметр следует использовать если в файле может использоваться несколько завершающих паттернов. К примеру PDF файлы или PHP, в которых может быть несколько скриптов обрамленных в
- NEXT — применяется когда нужно получить данные между началом и первым завершением файла, если конец файла не обнаружен тогда будет взята область размером указанным в поле size
- FORWARD_NEXT — является стандартным вариантом поведения и его указание не является обязательным. В этом варианте происходит строгая проверка шаблона, и если найдено начало файла и не найдено его завершение в заданном размере памяти то данный участок исключается из результатов поиска, если только не указана опция -b при запуске программы, тогда будет взят участок указанного размера с соответствующим началом, а в лог работы приложения [audit.txt] будет написано об обрезанном файле (колонка chop)
Заметка
В случае если вам нужно использовать знак вопроса «?» как искомую величину в составе заголовка или конца файла, тогда вам нужно переопределить wildcard символ, которым и является знак вопроса. Для этого нужно в начале конфигурационного файла написать
Где S новое обозначение wildcard символа в искомом выражении, или же воспользоваться шестнадцатричным представлением данного символа, что эквивалентно \0x3f или \063
А теперь практика
Предположим мы удалили файлы которые описываются шаблонами в таблице выше. Запишем эти шаблоны в конфигурационный файл (в качестве разделения колонок используется символ табуляции) /etc/scalpel/scalpel.conf и запустим восстановление (мной был заранее заготовлен образ с данными для восстановления)
После завершения исполнения в результирующей папке мы обнаружим найденные файлы и audit.txt в котором будет краткая информация о найденных файлах подобно представленному ниже
Также обратим внимание на некоторые доступные опции
-p при использовании данной опции файлы не будут восстановлены, но будет создан файл аудита, в котором можно будет просмотреть какие файлы будут восстановлены
-q с данной опцией scalpel будет сканировать только начало каждого кластера заданного размера и искать соответствующее начало искомого файла
-v verbose режим
-o указать каталог куда будет положен результат восстановления данных
Источник
Scalpel linux ��� ������������
В прошлой статье я рассказывал о Foremost, наследнике работавшей в DOS программы CarvThis. Сегодня поговорим о Scalpel, форке Foremost.
Общие принципы работы здесь те же: удаленные или утерянные файлы ищутся по первым и последним байтам, а также другим характерным признакам. Однако, есть и важные отличия, на которых я обязательно остановлюсь. Словом, если вы нечаянно удалили или повредили свои данные, Scalpel поможет их вернуть.
Дальнейший текст подразумевает, что вы читали предыдущую статью, где речь шла о восстановлении данных с помощью Foremost. В крайнем случае прочтите хотя бы вступление и первый раздел: Foremost — программа для восстановление утраченных данных в домашних условиях.
Особенности программы Scalpel в Ubuntu.
Важная и полезная особенность Scalpel заключается в том, что эта программа ориентирована на скорость работы. Более высокая производительность достигается за счет многопоточности на многоядерных процессорах и асинхронного ввода-вывода. Более того, внеся небольшие изменения в исходный код программы, можно включить поддержку GPU (только для Nvidia). В этом случае число работающих одновременно потоков значительно увеличится, а работа программы ускорится.
Конфигурационный файл Scalpel очень похож на таковой у Foremost, хотя отличия все же есть. Одно из самых полезных — возможность использовать регулярные выражения для описания содержимого файла. Это очень удобно, когда нужно найти текстовый файл, точного содержания которого вы не знаете, но известно, например, что там есть последовательно идущие символы «GPU», а затем, через неизвестное количество символов, встречается «Nvidia». Поскольку текстовые документы, в отличие от бинарных, нельзя вычислить по первым и последним байтам, регулярные выражения очень пригодятся для поиска утраченных логов, исходных кодов программ и многого другого.
При желании можно использовать конфиг от Foremost, указав путь к нему после ключа -c. При этом рекомендуется добавить ключ -b.
А теперь ложка дегтя. И многопоточность, и поддержка регулярных выражений появились в версии 1.9, но в репозитории Ubuntu 16.04 (как, впрочем, и новейшей 17.04) находится версия 1.6. Если вам нужны эти возможности, придется скачать программу из репозитория на Github и собрать самостоятельно. Я же буду использовать версию 1.6.
Простой пример использования Scalpel в Ubuntu.
Как обычно, установим программу Scalpel в Ubuntu из репозитория:
После этого отредактируем конфиг Scalpel в Ubuntu:
Здесь нам нужно раскомментировать интересующий нас тип файлов или добавить соответствующую строку, если он отсутствует (об этом далее). Давайте попробуем поискать pdf:
Не нужно раскомментировать сразу все, это замедлит обработку данных. Включайте только те типы файлов, которые нужно восстановить.
Запускаем Scalpel в Ubuntu, выполнив в терминале команду:
/flashimage/myflash_image.img — путь к образу устройства, с которого восстанавливаются данные. Вместо
/restored, соответственно, подставьте свой путь к папке, предназначенной для записи результатов.
Смотрим, что получилось:
Как и в случае с Foremost, папка с файлами и отчет.
Добавление собственных типов файлов в конфиг Scalpel и Foremost.
Итак, давайте предположим, что нам нужно восстановить cdr файл. Нам понадобится простой HEX-редактор, а также файл этого же типа в качестве образца. В качестве первого я буду использовать Ghex.
Откроем с его помощью наш файл:
Слева данные представлены в HEX (шестнадцатеричном) формате. Справа — ISCII. Нас интересуют первые символы. Выделяя символы с одной стороны, вы увидите соответствующие им значения слева. RIFF — это распространенный контейнер, в котором могут находиться самые разные бинарные файлы. Уже кое-что, но явно недостаточно. Далее, после точек, в ISCII мы видим CDR, что указывает на тип содержимого. За этим идет версия, что нам уже ни к чему. Итак, нам нужны HEX-значения (слева) до символа R в CDR включительно.
Если вы испытываете затруднения с вашим форматом файла, не ленитесь обратиться к поисковым системам. По запросу «расширениевашегофайла signatures» вы наверняка найдете подробную информацию.
Открываем scalpel.conf и добавляем следующую строку:
Первое значение (cdr) — расширение искомого файла. Если оно не имеет значения, укажите NONE. Второе значение определяет, нужно ли учитывать регистр символов, у — да, n — нет. Далее идет максимальный размер в байтах. Для версий Scalpel от 1.9 можно указывать и минимальное, и максимальное значение в формате мин:макс. Следующие две строки мы взяли из начала и конца файла нужного нам типа (см. выше), а затем добавили \x, чтобы указать на шестнадцатеричный формат.
Источник