Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
hashdeep — Кроссплатформенный набор инструментов для хеширования, предназначенный для вычисления дайджестов сообщений (MD5, SHA-1, SHA-256, Tiger, Whirlpool) с рекурсивным обходом каталогов и возможностями аудита целостности файлов. | Kitploit
Инструменты/GitHubGitHub/jessek/hashdeep
Анализ хэшейФорензикаВосстановление ДанныхЦифровая криминалистика
GitHubjessek/hashdeep

hashdeep

Кроссплатформенный набор инструментов для хеширования, предназначенный для вычисления дайджестов сообщений (MD5, SHA-1, SHA-256, Tiger, Whirlpool) с рекурсивным обходом каталогов и возможностями аудита целостности файлов.

Репозиторий
7861358 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Это md5deep — набор кроссплатформенных инструментов для вычисления хешей (дайджестов сообщений) для любого количества файлов с возможностью рекурсивного обхода структуры каталогов. Он также может принимать список известных хешей и отображать имена входных файлов, хеши которых либо совпадают, либо не совпадают ни с одним из известных хешей. Данная версия поддерживает хеши MD5, SHA-1, SHA-256, Tiger и Whirlpool.

Список изменений между релизами см. в файле NEWS.

Информацию о лицензировании этой программы см. в файле COPYING.

Инструкции по (общей) компиляции и установке см. в файле INSTALL. Вот краткая версия, которая должна работать в большинстве случаев:

root@kitploit:~
sh bootstrap.sh # запускает autoconf, automake
./configure
make
make install

Обратите внимание, что для установки в расположение по умолчанию обычно требуются права root. Для этого удобно использовать команду sudo. Альтернативное расположение установки можно указать с помощью параметра --prefix скрипта configure. Например, чтобы установить в /home/foo/bin, используйте:

$ ./configure --prefix=/home/foo

Полная документация по использованию программы доступна на домашней странице проекта: https://github.com/jessek/hashdeep

Хеши релизов

Последний релиз — версия 4.4. Вот хеши для версий Win32:

  • MD5 047ff5311d821f667150f37695bd01b3
  • SHA256 d5e85933e74e5ba6a73f67346bc2e765075d26949c831a428166c92772f67dbc

md5deep против hashdeep

По историческим причинам программа имеет различные параметры и возможности при запуске с именами "hashdeep" и "md5deep".

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

root@kitploit:~
-a Режим аудита. Каждый входной файл сравнивается с набором известных.
   Считается, что аудит пройден, если каждый входной файл соответствует ровно
   одному файлу из набора известных. Любые коллизии, новые файлы или отсутствующие файлы
   приведут к неудаче аудита. Использование только этого флага выводит сообщение:
   либо "Audit passed", либо "Audit Failed".
   -v = выводит количество файлов в каждой категории
   -v -v = выводит все расхождения
   -v -v -v = выводит результаты для каждого проверенного файла и каждого известного файла.

-k <файл> - Параметр -k должен использоваться для загрузки файла аудита

Для выполнения аудита:

root@kitploit:~
hashdeep -r dir  > /tmp/auditfile            # Создать файл аудита
hashdeep -a -k /tmp/auditfile -r dir          # Проверить аудит

Обратите внимание, что аудит выполняется со стандартным выходным файлом hashdeep. (Внутренне аудит вычисляется как часть процесса хеширования.)

Проблемы с Unicode

Современные компьютерные системы на основе POSIX считают имена файлов последовательностью байтов, которая отображается так, как пожелает приложение. Это означает, что имена файлов обычно содержат ASCII, но могут содержать UTF-8, UTF-16, latin1 или даже недопустимые кодировки Unicode.

Системы на основе Windows имеют один набор API для имен файлов на основе ASCII и другой набор для имен файлов, закодированных как UCS-2, который «создает формат фиксированной длины, просто используя кодовую точку как 16-битную кодовую единицу, и дает тот же результат, что и UTF-16 для 63 488 кодовых точек в диапазоне 0–0xFFFF» согласно википедии. Однако википедия оспаривает фактическую точность этого утверждения на странице обсуждения. Совершенно ясно, что никто не может быть полностью уверен в том, что Windows делает на самом деле, и сама Windows может быть непоследовательной.

Версия 3 этой программы решала эту проблему, используя переменную TCHAR для хранения имен файлов в Windows и отказываясь их печатать, выводя вместо этого «?». Версия 4 этой программы преобразует строки TCHAR в строки std::string при первой же возможности с помощью функции Windows WideCharToMultiByte. Были добавлены флаги для экранирования Unicode при его выводе.

В Windows нет способа (по-видимому) открыть имя файла UTF-8; его необходимо преобразовать обратно в многобайтовое имя файла с помощью MultiByteToWideChar.

К счастью, нам никогда не нужно преобразовывать обратно.

Обратите внимание, что в Windows файлы, для которых вычисляется хеш, могут содержать символы Unicode, но файл с хешами должен иметь имя ASCII.

КОМПИЛЯЦИЯ ДЛЯ WINDOWS:

-D_UNICODE заставляет TCHAR определяться как 'wchar_t'.

КОМПИЛЯЦИЯ ДЛЯ POSIX:

-D_UNICODE не определён, поэтому TCHAR определяется как 'char'.

Ранее функции win32 контролировались с помощью директив #ifdef, например:

root@kitploit:~
#ifdef _WIN32
  _wfullpath(d_name,fn,PATH_MAX);
#else
  if (NULL == realpath(fn,d_name))
    return TRUE;
#endif

Также существовал файл tchar-local.h, который фактически изменял семантику функций на разных платформах с помощью таких конструкций:

root@kitploit:~
   #define  _tcsncpy   strncpy
   #define  _tstat_t   struct stat

Это делало код очень сложным для сопровождения.

При переписывании в версии 4.0 мы изменили этот код, используя C++ функции, которые возвращают объекты, где это возможно, и избегая использования #define таким образом, чтобы на системах _WIN32 функция realpath() определялась до её использования, а основной код не содержал функции realpath(). Это можно увидеть в cycles.cpp:

root@kitploit:~
/* Return the canonicalized absolute pathname in UTF-8 on Windows and POSIX systems */
std::string get_realpath(const TCHAR *fn)
{
#ifdef _WIN32
    /*
     * expand a relative path to the full path.
     * http://msdn.microsoft.com/en-us/library/506720ff(v=vs.80).aspx
     */
    TCHAR absPath[PATH_MAX];
    if(_fullpath(absPath,fn,PAT_HMAX)==0) return "";
    return tchar_to_utf8(absPath);
#else
    char resolved_name[PATH_MAX];	//
    if(realpath(fn,resolved_name)==0) return "";
    return string(resolved_name);
#endif
}

Вы можете установить mingw и затем просто выполнить configure примерно так:

$ export PATH=$PATH:/usr/local/i386-mingw32-4.3.0/bin $ ./configure --host=i386-mingw32

Ссылки на хеш-алгоритмы

Алгоритм MD5 определён в RFC 1321: http://www.ietf.org/rfc/rfc1321.txt

Алгоритм SHA1 определён в FIPS 180-1: http://www.itl.nist.gov/fipspubs/fip180-1.htm

Алгоритм SHA256 определён в FIPS 180-2: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf

Алгоритм Tiger определён на: http://www.cs.technion.ac.il/~biham/Reports/Tiger/

Алгоритм Whirlpool определён на: http://planeta.terra.com.br/informatica/paulobarreto/WhirlpoolPage.html

Принцип работы

  • main.cpp
    • настраивает систему
  • dig.cpp
    • перебирает отдельные каталоги
    • вызывает hash_file() в hash.cpp для каждого файла для хеширования
  • hash.cpp
    • выполняет хеширование каждого файла
  • display.cpp
    • сохраняет/отображает результаты
Скачать инструмент