
Анализатор и интерпретатор правил Hashcat — «Розеттский камень» для декодирования синтаксиса правил hashcat
_ _ _ _ ____ _ _
| | | | __ _ ___| |__ ___ __ _| |_| _ \ ___ ___ ___| |_| |_ __ _
| |_| |/ _` / __| '_ \ / __/ _` | __| |_) / _ \/ __|/ _ \ __| __/ _` |
| _ | (_| \__ \ | | | (_| (_| | |_| _ < (_) \__ \ __/ |_| || (_| |
|_| |_|\__,_|___/_| |_|\___\__,_|\__|_| \_\___/|___/\___|\__|\__\__,_|
Расшифруйте Розеттский камень правил взлома паролей
Проект на Python, предназначенный для анализа выходных файлов hashcat в режимах отладки 4 и 5 с целью выявления наиболее эффективных правил и отслеживания частотных шаблонов базовых слов, используемых при атаках на пароли.
--debug-mode 4 и --debug-mode 5) с автоматическим извлечением базовых слов и правилЕсли вы используете uv, можно запускать без установки:
# Клонируйте репозиторий
git clone https://github.com/bandrel/HashcatRosetta.git
cd HashcatRosetta
# Запуск как модуль (рекомендуется)
uv run python -m hashcat_rosetta --help
# Или используйте установленную команду
uv run hashcat-rosetta --help
uv tool install git+https://github.com/bandrel/HashcatRosetta.git
Инструменты разработки находятся в группе зависимостей dev.
# С uv (устанавливает группу dev по умолчанию)
uv sync
# С pip (25.1+)
pip install -e . --group dev
Анализ отладочного файла hashcat (по умолчанию показывает сводку):
hashcat-rosetta debug_output.txt
Показать топ правил по частоте:
hashcat-rosetta debug_output.txt --rules --top 10 --metric frequency
Показать топ правил по другим метрикам:
hashcat-rosetta debug_output.txt --rules --metric basewords
hashcat-rosetta debug_output.txt --rules --metric candidates
Показать базовые слова, встречающиеся несколько раз:
hashcat-rosetta debug_output.txt --basewords --top 10
Показать топ словарей (только режим отладки 5):
hashcat-rosetta debug_output.txt --wordlists --top 10
Показать подробную статистику по каждому словарю (уникальные базовые слова, кандидаты и правила):
hashcat-rosetta debug_output.txt --wordlists --top 10 --detail
Вывод --wordlists повторяет структуру --rules: заголовок Top N Wordlists, за которым следуют
пронумерованные строки Wordlist: <name> (<count>). Когда файл режима 5 анализируется без
каких-либо флагов вывода, сводка по умолчанию также включает раздел Wordlist Statistics.
Принудительно указать конкретный режим отладки вместо автоопределения:
hashcat-rosetta debug_output.txt --debug-mode 5 --wordlists
Показать подробный анализ базовых слов:
hashcat-rosetta debug_output.txt --basewords --top 10 --detail --min-occurrences 2
Экспортировать полный отчёт анализа:
hashcat-rosetta debug_output.txt --export report.json --format json
hashcat-rosetta debug_output.txt --export report.csv --format csv
Пошаговое объяснение того, что делает правило hashcat:
hashcat-rosetta --explain "c$1" --baseword admin
hashcat-rosetta --explain "u$!" --baseword myword
Генерация масок hashcat из описаний на английском языке с использованием локальной LLM:
hashcat-rosetta --mask "The word 'Summer' followed by six digits."
Вывод:
Mask Suggestions for: 'The word 'Summer' followed by six digits.'
======================================================================
1. Summer?d?d?d?d?d?d
literal "Summer", then 6 × digit → 1,000,000 candidates
Why: matches the literal word followed by a 6-digit number
Сохранить сгенерированную маску в файл:
hashcat-rosetta --mask "The word 'Summer' followed by six digits." -o masks.hcmask
Генерация масок из других описаний:
hashcat-rosetta --mask "a capitalized season, two digits, and a special char"
hashcat-rosetta --mask "year 2020-2025 followed by exclamation or question mark"
Функция генерации масок использует локальный сервер Ollama, работающий с чат-эндпоинтом,
совместимым с OpenAI. По умолчанию он подключается к http://localhost:11434 и использует модель
gemma3:27b (см. ниже). Их можно настроить через переменные окружения
или флаги CLI:
# Использование переменных окружения
OLLAMA_HOST=http://192.168.1.100:11434 OLLAMA_MODEL=llama2:70b \
hashcat-rosetta --mask "your description here"
# Использование флагов CLI (переопределяют переменные окружения)
hashcat-rosetta --mask "your description" --ollama-host http://custom.host:11434 --model llama2
Примечание по безопасности: Описания масок отправляются только на настроенный вами эндпоинт Ollama
(по умолчанию localhost, или туда, куда указывает --ollama-host/OLLAMA_HOST) — никогда
облачному провайдеру. OpenAI SDK используется исключительно как HTTP-клиент к этому эндпоинту;
никакие данные или API-ключ никогда не передаются на api.openai.com.
gemma3:27b?Значение по умолчанию выбирается скриптом scripts/benchmark_mask_models.py, который прогоняет фиксированный набор
из 14 промптов в стиле --mask — включая обратные ссылки на пользовательские наборы символов и промпты
на припоминание категорий (книги Библии, ссылки на библейские стихи, столицы европейских стран) — против каждой
локально установленной модели-кандидата и оценивает каждый ответ тремя способами:
mp64 из hashcat-utils (maskprocessor), если он установлен — это та же
проверка, которую сама generate_masks() выполняет для каждого предложения в продакшене, поэтому
жёсткий провал в бенчмарке здесь также означает, что реальное использование --mask его отклонило бы.gemma3:12b на второй машине, выбранная
специально потому, что она сама не является кандидатом — избегает предвзятости самооценки) оценивает
каждый ответ по шкале 1-5 на предмет того, насколько хорошо он удовлетворяет исходному запросу. Запросы отправляются
с включённым режимом размышления, поскольку медленная модель в любом случае уже тратит время на круговой обмен.