Scalpel linux как пользоваться

Обновлено: 07.07.2024

Первым делом, очень важно свести к минимуму работу с повреждённым накопителем, иначе вероятность восстановления данных существенно снижается.

Если вы случайно удалили нужный файл с некоторого раздела, следует как можно скорее перевести данный раздел в режим «только чтение» и исключить любые попытки записи на него.

Если вы по ошибке установили операционную систему, на диск/раздел с важными данными, то загружать систему с этого диска/раздела категорически не рекомендуется. Для дальнейней работы следует использовать LiveCD/USB или систему, загружаемую с другого диска/раздела.

Кроме того, для сохранения восстанавливаемых данных потребуется ещё один накопитель ёмкости, не меньшей исходного.

Чтобы снизить возможные потери информации при неудачной попытке восстановления, следует сделать полный дамп повреждённого тома (ФС, раздел, либо весь диск, в зависимости от того как располагались исходные данные) через dd или ddrescue на отдельный носитель и дальше экспериментировать с этим дампом:

testdisk

Нередко судьба подкидывает нам такое, что послезавтра сдавать диплом, а сегодня умер жесткий диск со всей информацией. В Linux стандартом де-факто в области восстановления данных является утилита testdisk. Однако нередко человек, впервые сталкиваясь с ней, находит ее для себя малопонятной и отказывается от нее, т.к. она не имеет графического интерфейса.

Специально для написания статьи я нашел старую ненужную флешку, записал на нее немного музыки и видео. После этого в GParted изменялись размеры и положение раздела (при этом флешка выдергивалась из компа в самый кульминационный момент), ну и напоследок все было добито созданием новой таблицы разделов.

Итог - при подключении флешка не обнаруживается компьютером, на ней важная информация, будем ее восстанавливать.

1. Для начала нужно установить testdisk. Для этого в консоли выполняем:

2. Запускаем testdisk с администраторскими правами

Появляется окошко приветствия testdisk, нам предлагается вести лог работы. В данном случае не вижу в этом смысла, но вы можете поступать иначе. Выбираем нужный пункт меню и подтверждаем выбор: No Log → Enter.


3. Появляются доступные носители, выбираем нужный, подтверждаем нажатием Proceed.


4. Предлагается выбрать тип таблицы разделов, думаю, что в большинстве случаев будет тип Intel / PC Partition.


5. Появляется меню с выбором операции. Для начала делаем анализ, выбрав Analyse.


6. В разделе Analyse Выбираем Quick Search.


7. Последний вопрос перед началом анализа «Должен ли testdisk искать разделы созданные с использованием Windows Vista?». В моем случае — нет, поэтому я выбираю N. 1)



Анализ закончен. Предупреждение. Или некоторые разделы не были найдены, или таблица разделов не может быть записана, т. к. разделы перекрываются.


8. Вот теперь можно начинать восстановление информации. В данном случае нас интересует 2 варианта действий.

Получить список файлов, содержащихся в данном разделе нажатием Р с дальнейшим восстановлением интересующих файлов из списка Попробовать загрузить резервную копию таблицы разделов нажатием L , это приведет носитель к первоначальному состоянию до поломки


Выводим список файлов нажатием Р .


Отсюда же можно попробовать скопировать особо важные файлы и папки, особенно если боитесь, что данные не восстановятся, а наоборот потеряете последнюю, пусть даже и битую информацию. Для примера я буду копировать музыкальный альбом. Выделяем нужное курсором, нажимаем С для копирования. Появляется файловый менеджер, где можно выбрать куда будем копировать. В домашнем каталоге для этих целей специально создана папка Restored.


Заходим в нее и подтверждаем копирование нажатием Y.


Открываем папку в Nautilus, видим, что все файлы на месте и их можно прослушать.


9. Итак, особо важную информацию на всякий случай сохранили, однако наша цель приведение носителя в нормальное рабочее состояние. Из каждого пункта меню testdisk можно вернуться в предыдущий с помощью клавиши Q . Таким образом возвращаемся к 8 пункту.


Попробуем вернуть все в первоначальное до поломки состояние, загрузив резервную копию таблицы разделов. Нажимаем L . В появившемся окошке выбираем Load…


…и подтверждаем наши намерения Y .


Все, процесс восстановления закончен, отключаем и снова подключаем поврежденный носитель. Теперь он обнаруживается, все файлы на месте, в целости и сохранности.


Желаю вам удачных восстановлений!

extundelete

extundelete – утилита, позволяющая восстанавливать файлы, которые были удалены с разделов ext3/ext4.

Установить extundelete можно выполнив команду:

Как только вы поняли, что удалили нужные файлы, надо отмонтировать раздел:

или перемонтировать в режиме «только чтение»

Так же следует создать резервную копию раздела прежде, чем начинать с ним работу по восстановлению файлов:

Зайдите в каталог, в который будут восстанавливаться удаленные данные. Он должен быть расположен на разделе отличном от того, на котором хранились восстанавливаемые данные:

Запустите extundelete, указав раздел, с которого будет происходить восстановление и файл, который необходимо восстановить:

Можно так же восстанавливать содержимое каталогов:

Можно задать для восстановления рамки по времени удаления восстанавливаемых файлов, например так:

Дату необходимо указывать в UNIX-времени:

Некоторые файлы могут восстановиться под другим именем и расширением, хотя это не повлияет на содержимое файла.

foremost

Хорошо подходит для восстановления фотографий и скриншотов с битых карт памяти и флешек.

foremost — поиск и восстановление данных по сигнатурам.

Пример использования для восстановления изображений с диска /dev/sdb в каталог

R-Studio

Утилита является платной. Тем не менее, судя по нескольким топикам на форуме, в тяжёлых случаях она может дать лучший результат, чем testdisk.

R-Studio позволяет восстанавливать утраченные данные с поврежденного, форматированного, переформатированного или удаленного диска (раздела) локального или удаленного компьютера вне зависимости от используемой системы (платформы).

Scalpel

Scalpel анализирует файлы по header и footer, заданным в шаблоне

Чтобы задать типы файлов для распознавания, нужно в указанном выше шаблоне раскомментировать соответствующие строки. Однако, будьте внимательны: зачастую header и footer ваших файлов могут отличаться от заданных в шаблоне для такого типа файлов (к примеру, sony jpg). В таком случае нам нужно самостоятельно выяснить header и footer искомых файлов на примере имеющегося аналогичного файла:

и вписать их в конфигурационный файл.

В качестве исходного пути может использоваться как путь к реальному устройству /dev/…, так и путь к образу диска. Директория outputdir для сохранения файлов обязательно должна быть пустой.

В прошлой статье я рассказывал о 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

После этого отредактируем конфиг Scalpel в Ubuntu:

Здесь нам нужно раскомментировать интересующий нас тип файлов или добавить соответствующую строку, если он отсутствует (об этом далее). Давайте попробуем поискать pdf:

Простой пример использования Scalpel в Ubuntu

Не нужно раскомментировать сразу все, это замедлит обработку данных. Включайте только те типы файлов, которые нужно восстановить.

Запускаем Scalpel в Ubuntu, выполнив в терминале команду:

/flashimage/myflash_image.img — путь к образу устройства, с которого восстанавливаются данные. Вместо

/restored, соответственно, подставьте свой путь к папке, предназначенной для записи результатов.

Простой пример использования Scalpel в Ubuntu

Простой пример использования Scalpel в Ubuntu

Смотрим, что получилось:

Простой пример использования Scalpel в Ubuntu

Простой пример использования Scalpel в Ubuntu

Как и в случае с Foremost, папка с файлами и отчет.

Добавление собственных типов файлов в конфиг Scalpel и Foremost.

Итак, давайте предположим, что нам нужно восстановить cdr файл. Нам понадобится простой HEX-редактор, а также файл этого же типа в качестве образца. В качестве первого я буду использовать Ghex.

Откроем с его помощью наш файл:

Добавление собственных типов файлов в конфиг Scalpel и Foremost

Слева данные представлены в HEX (шестнадцатеричном) формате. Справа — ISCII. Нас интересуют первые символы. Выделяя символы с одной стороны, вы увидите соответствующие им значения слева. RIFF — это распространенный контейнер, в котором могут находиться самые разные бинарные файлы. Уже кое-что, но явно недостаточно. Далее, после точек, в ISCII мы видим CDR, что указывает на тип содержимого. За этим идет версия, что нам уже ни к чему. Итак, нам нужны HEX-значения (слева) до символа R в CDR включительно.

Добавление собственных типов файлов в конфиг Scalpel и Foremost

Если вы испытываете затруднения с вашим форматом файла, не ленитесь обратиться к поисковым системам. По запросу «расширениевашегофайла signatures» вы наверняка найдете подробную информацию.

Открываем scalpel.conf и добавляем следующую строку:

Добавление собственных типов файлов в конфиг Scalpel и Foremost

Первое значение (cdr) — расширение искомого файла. Если оно не имеет значения, укажите NONE. Второе значение определяет, нужно ли учитывать регистр символов, у — да, n — нет. Далее идет максимальный размер в байтах. Для версий Scalpel от 1.9 можно указывать и минимальное, и максимальное значение в формате мин:макс. Следующие две строки мы взяли из начала и конца файла нужного нам типа (см. выше), а затем добавили \x, чтобы указать на шестнадцатеричный формат.

У каждого человека в жизни возникает такая ситуация как rm -rf на той папке, где этого не следовало делать. Бекапы это хорошо, но что делать если их нет? Для Linux систем существует утилита Scalpel, которая позволяет восстановить удалённые файлы по заданным паттернам, включая применение регулярных выражений.

Scalpel является форком проекта Foremost (с версии 0.69), начавший свою историю с 2005 года. Имеет свой github репозиторий и является более быстрым по скорости восстановления данных, а также эффективности чем Foremost. Говоря о разнице этих двух проектов можно сказать, что вышедшая после версии 0.69 Foremost имеет новые семантические техники восстановления данных. К примеру при восстановлении JPEG файлов используется заголовок этого файла для вычисления соответствующего тела изображения, когда Scalpel просто возьмет данные между заданными сигнатурами завершения и начала файла изображения. Таким образом можно сказать, что Foremost более точно может восстановить потерянные данные, когда Scalpel сделает это значительно быстрее.

Возможности которые предоставляет Scalpel:

  1. Восстановление независимо от файловой системы
  2. Выставление минимального и максимального размеров восстанавливаемого файла
  3. Использование многопоточности на многоядерных системах
  4. Асинхронные операции ввода/вывода дающие прирост при поиске по шаблону
  5. Использование TRE регулярных выражений для поиска по началу и концу файла
  6. Возможность восстановления из вложенных структур данных
  7. Для гиков доступна возможность использования GPU, что доступно только для Linux и требует предустановленного NVIDIA CUDA SDK и небольших модификаций исходного кода (поиск c применением регулярных выражений не работает с GPU)

Настройка приложения осуществляется в файле /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
pdf y 500000 %PDF %EOF\x0d REVERSE
pdf y 500000 %PDF %EOF\x0a REVERSE
tex y 300:50000 /%.\.tex/ /%.\.tex\sEnd/
php y 100000 <?php ?> REVERSE
Вкратце о колонках

  • Type – имеет значение только в контексте программы, никакого отношения к восстанавливаемым файлам не имеет и будет использовано только при отображении лога и названии директорий в востановленных данных. Можно не указывать, в таком случае просто поставить NONE
  • Case sensitive – учитывать ли регистр при поиске по заданному шаблону
  • Size range – если указано просто число, то максимальный размер искомого файла, если через двоеточие то min:max размер файла
  • Header, Footer – шаблоны поиска начала и конца файла. Допустимо использование TRE регулярных выражений. В качестве пробела используется символ \s, также можно использовать шестнадцатричное и восьмеричное представление искомых данных к примеру \x[0-f][0-f] или \343
  • REVERSE — данный параметр следует использовать если в файле может использоваться несколько завершающих паттернов. К примеру PDF файлы или PHP, в которых может быть несколько скриптов обрамленных в <?php… ?>
  • NEXT — применяется когда нужно получить данные между началом и первым завершением файла, если конец файла не обнаружен тогда будет взята область размером указанным в поле size
  • FORWARD_NEXT — является стандартным вариантом поведения и его указание не является обязательным. В этом варианте происходит строгая проверка шаблона, и если найдено начало файла и не найдено его завершение в заданном размере памяти то данный участок исключается из результатов поиска, если только не указана опция -b при запуске программы, тогда будет взят участок указанного размера с соответствующим началом, а в лог работы приложения [audit.txt] будет написано об обрезанном файле (колонка chop)

Где S новое обозначение wildcard символа в искомом выражении, или же воспользоваться шестнадцатричным представлением данного символа, что эквивалентно \0x3f или \063

А теперь практика

Предположим мы удалили файлы которые описываются шаблонами в таблице выше. Запишем эти шаблоны в конфигурационный файл (в качестве разделения колонок используется символ табуляции) /etc/scalpel/scalpel.conf и запустим восстановление (мной был заранее заготовлен образ с данными для восстановления)


После завершения исполнения в результирующей папке мы обнаружим найденные файлы и audit.txt в котором будет краткая информация о найденных файлах подобно представленному ниже


Также обратим внимание на некоторые доступные опции
-p при использовании данной опции файлы не будут восстановлены, но будет создан файл аудита, в котором можно будет просмотреть какие файлы будут восстановлены
-q с данной опцией scalpel будет сканировать только начало каждого кластера заданного размера и искать соответствующее начало искомого файла
-v verbose режим
-o указать каталог куда будет положен результат восстановления данных


Восстановление потерянных данных с помощью scalpel на Linux

Scalpel утилита на написана на основе Foremost с открытым исходным кодом которое умеет восстанавливать удаленную информацию, скальпель значительно более быстрый и эффективный, читает базу данных колонтитулов определений и экстрактов соответствующих файлов или фрагментов данных из набора графических файлов или файлов непосредственных устройств.

Как установить 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

GIF and JPG files

Посмотрим в конфиге, где они находятся, это хорошо видно на рисунке ниже.

Scalpel config file

Scalpel config file

пример поиска файлов Scalpel

пример поиска файлов Scalpel

Восстановление потерянных данных с помощью scalpel на Linux закончено. Надеюсь понятно изложил данный материал.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Читайте также: