скальпель сегфолты

Вопрос или проблема

Я использую относительно недавнюю установку Jammy Jellyfish и пытаюсь запустить scalpel на жестком диске системы безопасности Hikvision. Анализ данных SMART проходит нормально. Я могу увидеть данные с помощью hexdump -C /dev/sda | less

Я запускал программу на других установках, но каждый раз, когда я запускаю ее на этой системе, она выдает ошибку сегментации (segfault). Я удалял, переустанавливал, проверял файл конфигурации. Она запускается, записывает файл аудита и затем выдает ошибку сегментации. Версия scalpel 1.60.

Я также установил foremost, когда прочитал, что это основано на заметке.

Scalpel версия 1.60
Написано Голоденом Г. Ричардом III, основано на Foremost 0.69.

Открытие цели "/dev/sda"

Ошибка сегментации (core dumped)

Вот последняя часть того, что strace говорит об этом:

brk(0x58f0558bf000)                     = 0x58f0558bf000
read(3, "-------------------------\n# Scan"..., 4096) = 471
brk(0x58f0558e3000)                     = 0x58f0558e3000
read(3, "", 4096)                       = 0
close(3)                                = 0
ioctl(1, TIOCGWINSZ, {ws_row=46, ws_col=186, ws_xpixel=0, ws_ypixel=0}) = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=3552, ...}, AT_EMPTY_PATH) = 0
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=3552, ...}, AT_EMPTY_PATH) = 0
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0\0\0"..., 4096) = 3552
lseek(3, -2260, SEEK_CUR)               = 1292
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\6\0\0\0\6\0\0\0\0"..., 4096) = 2260
close(3)                                = 0
openat(AT_FDCWD, "/media/h/98a20942-1b42-4c6c-9db9-9df1420cb5f2/puddle", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_EMPTY_PATH) = 0
brk(0x58f055909000)                     = 0x58f055909000
getdents64(3, 0x58f0558e09b0 /* 2 entries */, 32768) = 48
getdents64(3, 0x58f0558e09b0 /* 0 entries */, 32768) = 0
brk(0x58f055901000)                     = 0x58f055901000
close(3)                                = 0
openat(AT_FDCWD, "/media/h/98a20942-1b42-4c6c-9db9-9df1420cb5f2/puddle/audit.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_EMPTY_PATH) = 0
readlink("/dev", 0x7fff23a9c180, 1023)  = -1 EINVAL (Invalid argument)
readlink("/dev/sda", 0x7fff23a9c180, 1023) = -1 EINVAL (Invalid argument)
write(2, "\nOpening target \"/dev/sda\"\n\n", 28
Открытие цели "/dev/sda"

) = 28
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=NULL} ---
+++ убито SIGSEGV (core dumped) +++
Ошибка сегментации (core dumped)

Ответ или решение

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

  1. Проверьте конфигурационный файл: Убедитесь, что файл конфигурации Scalpel (scalpel.conf) настроен правильно. Настройки, связанные с поддерживаемыми файлами и путями, могут быть неверно указаны. Попробуйте использовать минимальный конфигурационный файл, чтобы проверить, не является ли причиной конфигурация.

  2. Запустите как суперпользователь: Если вы не запускаете Scalpel от имени пользователя с правами администратора, это может вызвать проблемы с доступом к устройству. Попробуйте запустить команду от имени root или используйте sudo:

    sudo scalpel /dev/sda
  3. Проверьте права доступа: Убедитесь, что у вас есть необходимые права на чтение устройства /dev/sda. Проверьте права доступа к устройству с помощью команды:

    ls -l /dev/sda
  4. Отладка с помощью gdb: Если указанные выше методы не помогли, вы можете использовать gdb для отладки приложения и получения дополнительной информации о том, почему происходит сегментация. Запустите gdb, передав ему имя программы:

    gdb scalpel
    (gdb) run /dev/sda

    После возникшей ошибки вы можете использовать команду backtrace, чтобы получить стек вызовов и понять, где именно произошла ошибка.

  5. Проверка на наличие обновлений: Поскольку вы используете версию 1.60, возможно, есть обновления или патчи, которые могут исправить проблему. Проверьте наличие новой версии Scalpel и обновите до последней доступной версии.

  6. Использование альтернативных инструментов: Если проблема не решается, вы можете рассмотреть возможность использования других инструментов для восстановления данных, таких как Foremost, PhotoRec или TestDisk, которые могут помочь вам в вашей задаче.

  7. Документация и поддержка: Ознакомьтесь с документацией Scalpel и обратитесь к сообществу разработчиков или на форумы, возможно, кто-то уже сталкивался с подобной проблемой.

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

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

Капча загружается...