- Автор темы
- #1
Прямо сейчас, на момент написания, активно развиваются две новые программы для идентификации типов хешей. Они поддерживают больше алгоритмов хеширования и просто во всём лучше старых инструментов. Данная статья посвящена знакомству с новыми инструментами по идентификации типа хеша.
Зачем нужны новые инструменты идентификации типа хеша?
hashID не поддерживается с марта 2015 года, hash-identifier не поддерживается с 2011 года, Dagon с июня 2018 года и findmyhash с 2011 года. Все они не имеют вовсе, или имеют неправильную, ошибочную поддержку современных хешей, таких как Keccak/SHA3/Blake2 и т. д. Также такой инструмент, как hash-identifier, который является полностью интерактивным, не имеет параметров и не удобен для использования в скриптах. findmyhash имеет очень ограниченный набор обнаруживаемых хешей. Самый интересный инструмент — hashID (для идентификации хеша), но, поскольку он не поддерживается более 5 лет, проблемы и открытые PR (Pull Request — запросы на внесение изменения в исходный код) накапливаются, ошибки не исправляются, а некоторые функции отсутствуют.
Это всё могло побудить авторов создать новые инструменты с возможностями отсутствующими в предшественниках.
Посмотрим на сравнительную таблицу инструментов по определению типа хеша:
Условные обозначения:
Образцы хешей
Если вам нужны образцы хешей для поверки инструментов, то смотрите раздел «Где посмотреть примеры хешей».
Я отобрал несколько хешей для анализа:
Хеши необходимо заключать в одинарные кавычки!
Хеши могу включать в себя специальные символы, которые имеют для оболочки специальное значение. Особенно это важно если вы работаете в Linux. Если вы не будете это учитывать, то программа по определению типа хеша хоть и не сообщит об ошибке, но получит строку отличную от той, которую вы думали что ввели.
Причём даже в двойных кавычках оболочка трактует некоторые символы как специальные. Поэтому чтобы не экранировать их, поместите весь хеш в одинарные кавычки.
Необязательно помещать в кавычки хеши, состоящие только из букв и цифр, но я предпочитаю все хеши передавать в одинарных кавычках.
HAITI
HAITI (HAsh IdenTifIer) — это инструмент командной строки (и библиотека) для идентификации типа заданного хеша. Библиотека особенно хороша для написания скриптов, поскольку не нужно заключать инструмент командной строки в подпроцесс.
Особенности:
Использование программы очень простое — укажите ваш хеш после имени программы:
Причём ОПЦИИ являются необязательными, поведение программы по умолчанию очень сбалансированной и в большинстве случаев вам не захочется менять его какими-либо дополнительными параметрами.
Например:
Вывод:
Среди вывода есть и правильный ответ: SHA3-512
В выводе HC — это сокращение для Hashcat, а последующие цифры (например, 1700, 17600 и так далее) это номера режимов в данной программе.
JtR — это сокращение от John the Ripper, а последующие строки — это название алгоритмов хешей для взлома в данной программе (raw-sha512, raw-sha3 и так далее).
Цвет очень хорошо улучшает читаемость вывода, особенно если он обширный. Если вы хотите отключить цветной вывод, то используйте опцию --no-color:
Хотя зачастую вывод содержит более одного предположения о типе хеша, по умолчанию из него исключены алгоритмы с солью. Чтобы показать все возможные алгоритмы хеширования, в том числе с использованием соли используйте опцию -e или --extended:
Если вы хотите только узнать тип хеша и информация о режимах hashcat и john the ripper для вас является излишней, то вы можете указать опцию --short для укороченного вывода:
Name-That-Hash
С января 2021 года, почти через два года после того, как началась работа над HAITI, появился проект под названием Name-That-Hash, потому что автору требовалась библиотека Python для Ciphey. Теперь есть два актуальных варианта для идентификации хеша.
Name That Hash определяет тип хеша. Программа поддерживает MD5, SHA256 и более 300 других хешей.
Особенности Name That Hash:
Для определения типа хеша укажите его с опцией -t (--text):
Например:
Пример вывода:
Хеши разбиты на две группы:
В выводе вы можете увидеть уже знакомые строки HC и JtR с номерами и названиями алгоритмов хеширования в Hashcat и John.
Кроме этого, имеется краткое описание применения, например:
Для проверки множества хешей используйте опцию -f (--file):
Формат файла — один хеш на строку.
Одна из этих опций (-t или -f) являются обязательной.
Если ваши хеши кодированы в Base64, то используйте опцию -b64 (--base64). Она говорит программе перед идентификацией декодировать хеши из Base64. Для файлов со смешанными строками Base64 и в обычном тексте программа пытается вначале декодировать base64 и если это не получается, то трактует хеш как обычную строку без кодировки.
Пример:
Обратите внимание, что в качестве хеша (после шапки) показана уже декодированная строка.
Опция -e (--extreme) включает поиск хешей в строке. Этот режим получит 5d41402abc4b2a76b9719d911017c592 из ####5d41402abc4b2a76b9719d911017c592###.
По идее, следующие две команды должны дать одинаковый результат:
Но у меня они получились разные. Поэтому используйте этот режим скорее как экспериментальный.
Бесплатное онлайн определение типа хеша
Сервис Онлайн определение типа хеша существует уже давно. Он работает очень просто — вы вводите хеш и получаете тип хеша. Ранее он основывался на утилитах hashID и HashTag. Теперь сервис обновлён и работает с утилитами HAITI и Name That Hash — самыми актуальными инструментами для определения типа хеша.
Адрес сервиса: https://suip.biz/ru/?act=hashtag
Заключение
Как можно убедиться, трудно выбрать, какая из программ лучше — HAITI или Name That Hash. Можно пользоваться или двумя. Либо если вам нужен вывод в формате JSON или вам нужна поддержка API или библиотека для определения хешей, то вы можете выбрать наиболее подходящую для ваших потребностей.
Зачем нужны новые инструменты идентификации типа хеша?
hashID не поддерживается с марта 2015 года, hash-identifier не поддерживается с 2011 года, Dagon с июня 2018 года и findmyhash с 2011 года. Все они не имеют вовсе, или имеют неправильную, ошибочную поддержку современных хешей, таких как Keccak/SHA3/Blake2 и т. д. Также такой инструмент, как hash-identifier, который является полностью интерактивным, не имеет параметров и не удобен для использования в скриптах. findmyhash имеет очень ограниченный набор обнаруживаемых хешей. Самый интересный инструмент — hashID (для идентификации хеша), но, поскольку он не поддерживается более 5 лет, проблемы и открытые PR (Pull Request — запросы на внесение изменения в исходный код) накапливаются, ошибки не исправляются, а некоторые функции отсутствуют.
Это всё могло побудить авторов создать новые инструменты с возможностями отсутствующими в предшественниках.
Посмотрим на сравнительную таблицу инструментов по определению типа хеша:
Условные обозначения:
- Ref.: показ рядом с типом хеша соответствующее название режима hashcat и john the ripper
: функция поддерживается
: функция не поддерживается
️: функция частично поддерживается- : язык программирования Ruby
- : язык программирования Python
: корректная поддержка современных хешей- : количество поддерживаемых хешей
Образцы хешей
Если вам нужны образцы хешей для поверки инструментов, то смотрите раздел «Где посмотреть примеры хешей».
Я отобрал несколько хешей для анализа:
- SHA3-224
Код:
412ef78534ba6ab0e9b1607d3e9767a25c1ea9d5e83176b4c2817a6c
- SHA3-512
Код:
7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e
- PKZIP Master Key
Код:
f1eff5c0368d10311dcfc419
- CRC32
Код:
c762de4a:00000000
- Keccak-512
Код:
2fbf5c9080f0a704de2e915ba8fdae6ab00bbc026b2c1c8fa07da1239381c6b7f4dfd399bf9652500da723694a4c719587dd0219cb30eabe61210a8ae4dc0b03
Хеши необходимо заключать в одинарные кавычки!
Хеши могу включать в себя специальные символы, которые имеют для оболочки специальное значение. Особенно это важно если вы работаете в Linux. Если вы не будете это учитывать, то программа по определению типа хеша хоть и не сообщит об ошибке, но получит строку отличную от той, которую вы думали что ввели.
Причём даже в двойных кавычках оболочка трактует некоторые символы как специальные. Поэтому чтобы не экранировать их, поместите весь хеш в одинарные кавычки.
Необязательно помещать в кавычки хеши, состоящие только из букв и цифр, но я предпочитаю все хеши передавать в одинарных кавычках.
HAITI
HAITI (HAsh IdenTifIer) — это инструмент командной строки (и библиотека) для идентификации типа заданного хеша. Библиотека особенно хороша для написания скриптов, поскольку не нужно заключать инструмент командной строки в подпроцесс.
Особенности:
- Определение типов 382+ хешей
- Поддержка современных алгоритмов (SHA3, Keccak, Blake2 и прочее)
- Краткая информация по использованию хеша с Hashcat и John the Ripper
- Инструмент командной строки и библиотека
- Цветной вывод
Использование программы очень простое — укажите ваш хеш после имени программы:
Код:
haiti ОПЦИИ 'ХЕШ'
Например:
Код:
haiti 7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e
Код:
SHA-512 [HC: 1700] [JtR: raw-sha512]
SHA3-512 [HC: 17600] [JtR: raw-sha3]
SHA3-512 [HC: 17600] [JtR: dynamic_400]
Keccak-512 [HC: 18000] [JtR: raw-keccak]
BLAKE2-512 [JtR: raw-blake2]
Whirlpool [HC: 6100] [JtR: whirlpool]
Salsa10
Salsa20
Skein-512 [JtR: skein-512]
Skein-1024(512)
Среди вывода есть и правильный ответ: SHA3-512
В выводе HC — это сокращение для Hashcat, а последующие цифры (например, 1700, 17600 и так далее) это номера режимов в данной программе.
JtR — это сокращение от John the Ripper, а последующие строки — это название алгоритмов хешей для взлома в данной программе (raw-sha512, raw-sha3 и так далее).
Цвет очень хорошо улучшает читаемость вывода, особенно если он обширный. Если вы хотите отключить цветной вывод, то используйте опцию --no-color:
Код:
haiti --no-color 412ef78534ba6ab0e9b1607d3e9767a25c1ea9d5e83176b4c2817a6c
Хотя зачастую вывод содержит более одного предположения о типе хеша, по умолчанию из него исключены алгоритмы с солью. Чтобы показать все возможные алгоритмы хеширования, в том числе с использованием соли используйте опцию -e или --extended:
Код:
haiti -e 7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e
Если вы хотите только узнать тип хеша и информация о режимах hashcat и john the ripper для вас является излишней, то вы можете указать опцию --short для укороченного вывода:
Код:
haiti --short f1eff5c0368d10311dcfc419
Name-That-Hash
С января 2021 года, почти через два года после того, как началась работа над HAITI, появился проект под названием Name-That-Hash, потому что автору требовалась библиотека Python для Ciphey. Теперь есть два актуальных варианта для идентификации хеша.
Name That Hash определяет тип хеша. Программа поддерживает MD5, SHA256 и более 300 других хешей.
Особенности Name That Hash:
- Рейтинги популярности — Сначала вы увидите самые популярные хеши.
- Сводки хешей — Name-that-hash выведет краткую информацию об основах использования каждого хеша, позволяя вам сделать осознанный выбор.
- Цветной вывод — контрастный и наглядный.
- Вывод в JSON и в API — вы можете использовать Name-That-Hash в своём проекте, поскольку программа имеет API и интерфейс командной строки. Используйте вывод JSON или импортируйте программу как модуль Python!
- Актуальна — Name-That-Hash — это проект 2021 года.
- Продуманность — авторы продумали функции, интерфейс и опции с мыслью об удобстве использования.
- Расширяемость — добавляйте новые хеши так быстро, как только сможете редактировать текстовый файл.
- Работа с файлами — программа считывает построчно файл и проверяет тип каждого хеша.
- Поиск хешей — экстремальный режим, который пытается выделить хеш даже если строка содержит мусор.
Для определения типа хеша укажите его с опцией -t (--text):
Код:
nth -t 'ХЕШ'
Код:
nth -t '7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e'
Хеши разбиты на две группы:
- Most Likely — более вероятные варианты
- Least Likely — менее вероятные варианты
В выводе вы можете увидеть уже знакомые строки HC и JtR с номерами и названиями алгоритмов хеширования в Hashcat и John.
Кроме этого, имеется краткое описание применения, например:
- Summary: Used in Bitcoin Blockchain and Shadow Files.
- Summary: Used in Wireguard, Zcash, IPFS and more.
- Summary: Not considered a hash function
Для проверки множества хешей используйте опцию -f (--file):
Код:
nth -f 'ФАЙЛ'
Одна из этих опций (-t или -f) являются обязательной.
Если ваши хеши кодированы в Base64, то используйте опцию -b64 (--base64). Она говорит программе перед идентификацией декодировать хеши из Base64. Для файлов со смешанными строками Base64 и в обычном тексте программа пытается вначале декодировать base64 и если это не получается, то трактует хеш как обычную строку без кодировки.
Пример:
Код:
nth -t 'ZjFlZmY1YzAzNjhkMTAzMTFkY2ZjNDE5Cg==' -b64
Опция -e (--extreme) включает поиск хешей в строке. Этот режим получит 5d41402abc4b2a76b9719d911017c592 из ####5d41402abc4b2a76b9719d911017c592###.
По идее, следующие две команды должны дать одинаковый результат:
Код:
nth -t '####5d41402abc4b2a76b9719d911017c592###' -e
nth -t '5d41402abc4b2a76b9719d911017c592'
Но у меня они получились разные. Поэтому используйте этот режим скорее как экспериментальный.
Бесплатное онлайн определение типа хеша
Сервис Онлайн определение типа хеша существует уже давно. Он работает очень просто — вы вводите хеш и получаете тип хеша. Ранее он основывался на утилитах hashID и HashTag. Теперь сервис обновлён и работает с утилитами HAITI и Name That Hash — самыми актуальными инструментами для определения типа хеша.
Адрес сервиса: https://suip.biz/ru/?act=hashtag
Заключение
Как можно убедиться, трудно выбрать, какая из программ лучше — HAITI или Name That Hash. Можно пользоваться или двумя. Либо если вам нужен вывод в формате JSON или вам нужна поддержка API или библиотека для определения хешей, то вы можете выбрать наиболее подходящую для ваших потребностей.
