Как работает программа scalpel?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
MiK13
Сообщения: 1180
ОС: Linux Debian

Как работает программа scalpel?

Сообщение MiK13 »

Вопрос возник потому, что недавно одна знакомая попросила восстановить файлы с Compact Flash с фотографиями. Сказала, что сначала это флешка открылась нормально, но потом, вдруг, перестала читаться.
Spoiler
При подключении к ноутбуку с Debian 11 ничего на рабочем столе не появилось. Но lsblk показал, что на ней есть один раздел. Смонтировать его не удалось -- ФС не распознал.
С помощью dd скопировал его в свой раздел, чтобы восстанавливать с него. Сначала ничего не получилось. Но оказалось, что у JPEG файлов сигнатура не FF D8 FF E0, а FF D8 FF E1. По ней (и конечной FF D9) scalpel нашёл больше 4 тысяч файлов. "Нормальными" оказались 582 (из них два немного повреждённых).
Непонятное началось когда я решил восстановить RAW файлы.
Она для "образца" принесла три файла.CR2. И я стал искать файлы по сигнатуре 49 49 2A (конечная как и для JPEG)
И вот тут стало что-то странное. Программа scalpel работала довольно долго и в результате из файла образа размером 15,646,144 КиБ "восстановила 4832 файла общим объёмом 129,684,630 КиБ. Как могло такое произойти?
Я предполагал, что scalpel в образе ищет начальную сигнатуру и, начиная с неё, записывает файл пока не встретит конечную сигнатуру или не запишет максимально заданное число байтов. Но в этом случае он в принципе не может найти файлов на объём больше объёма образа.
Кстати, из "найденных" 4832 файлов только на 586 программа file сказала, что это "Canon CR2 raw image data, version 2.0". Но и их суммарный объём составил 16,537,298 КиБ, то есть больше, чем размер файла изображения.

PS. Когда я посмотрел через mcview на скопированный образ флешки (/dev/sda1), то увидел в начале странную сигнатуру USBC. Я очень сомневаюсь, что аппарат Canon EOS 5 мог записать на флешку такой текст. Может быть её записал Windows при форматировании? Или у неё в системе действует какой-то вирус?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как работает программа scalpel?

Сообщение Bizdelnick »

MiK13 писал:
09.05.2023 03:33
Я предполагал, что scalpel в образе ищет начальную сигнатуру и, начиная с неё, записывает файл пока не встретит конечную сигнатуру или не запишет максимально заданное число байтов. Но в этом случае он в принципе не может найти файлов на объём больше объёма образа.
Ничего про scalpel не знаю, но если исходить из того, что Ваше описание верно, дело должно обстоять так. Никакой конечной сигнатуры в большинстве типов файлов нет и быть не может. Вот он и пишет максимально возможный объём. А ещё одну начальную сигнатуру находит раньше того места, до которого считал предыдущий «файл».

Советую попробовать что-нибудь поумнее, умеющее определять размер файла по заголовку, например photorec.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1180
ОС: Linux Debian

Re: Как работает программа scalpel?

Сообщение MiK13 »

Bizdelnick писал:
09.05.2023 11:47
Советую попробовать что-нибудь поумнее, умеющее определять размер файла по заголовку, например photorec.
Спасибо. Попробовал. Правда, с интерфейсом там не сразу разобрался. И когда указал, что исходная система FAT, он ничего не нашёл.
Но когда указал "другая" он нашёл практически все файлы.
Удивило, что в списке ОС присутствует даже DOS.
И немного юмора.
Когда открыл эту страницу на смартфоне, который "сам" её перевёл, то там оказался такой список ФС:
  • ТОЛСТЫЙ
  • НТФС
  • файловая система EXT2/EXT3
  • ВФС+
Пришлось подумать некоторое время, чтобы понять, что "ТОЛСТЫЙ" -- это FAT.
И не понял, что означает "ВФС". Хотя, думаю, правильнее было бы перевести HFS+ как ИФС+ (Иерархическая)
Спасибо сказали:
Ответить