
быстрый генератор списков паролей, инструмент для создания Smartlist и гибридного маскировочного анализа паролей, написанный на чистом безопасном Rust
Cracken — быстрый генератор списков паролей, инструмент для создания Smartlist и анализа гибридных масок паролей, написанный на чистом безопасном Rust (подробнее в [talk/][talk]). Вдохновлён такими замечательными инструментами, как [maskprocessor][mp], [hashcat][hashcat], [Crunch][crunch] и 🤗 HuggingFace [tokenizers][tokenizers].
На конференции [DeepSec2021][talk-abstract] мы представили новый метод анализа паролей как гибридных масок, использующий общие подстроки в паролях с помощью NLP-токенизаторов (подробнее в [talk/][talk]).
Наш метод разделяет пароль на подслова вместо обычной маски символов. HelloWorld123! разбивается на ['Hello', 'World', '123!'], поскольку эти три подслова очень распространены и в других паролях.
?w1?w2?l?d).
полная таблица здесь
гибридных масок ОЧЕНЬ БЫСТРО 🦸⚡💨 (см. раздел производительность)Smartlist'ов — компактных и представительных списков подслов из заданных файлов паролей (с использованием 🤗 HuggingFace [tokenizers][tokenizers])гибридных масок — построения статистики для лучших кандидатов паролей (опять же очень быстро)cracken -w rockyou.txt -w 100-most-common.txt '?w1?w2?d?d?d?d?s'hashcat, john или любую другую программу для взлома паролей.cracken createcracken entropyгибридные маски для быстрой генерации кандидатов паролей — cracken generate -i hybrid-masks.txtПодробнее см. раздел Использование
скачать (только Linux на данный момент): [последний релиз 🔗][releases]
другие варианты установки см. в разделе установка
Запуск Cracken:
сгенерировать все слова длиной 8, начинающиеся с заглавной буквы, затем 6 строчных и цифра:
$ cracken -o pwdz.lst '?u?l?l?l?l?l?l?d'
сгенерировать слова из двух списков слов с суффиксом года (1000–2999) <имя><фамилия><год>
$ cracken --wordlist firstnames.txt --wordlist lastnames.lst --charset '12' '?w1?w2?1?d?d?d'
создать Smartlist размером 50 000 из подслов, извлечённых из rockyou.txt
$ cracken create -f rockyou.txt -m 50000 --smartlist smart.lst
оценить энтропию гибридной маски пароля HelloWorld123! с использованием Smartlist'а
$ cracken entropy -f smart.lst 'HelloWorld123!'
hybrid-min-split: ["hello", "world1", "2", "3", "!"]
hybrid-mask: ?w1?w1?d?d?s
hybrid-min-entropy: 42.73
--
charset-mask: ?l?l?l?l?l?l?l?l?l?l?d?d?d?s
charset-mask-entropy: 61.97
На момент написания Cracken, вероятно, самый быстрый в мире генератор списков паролей:
Cracken имеет примерно 25% прирост производительности по сравнению с быстрым [maskprocessor][mp] от hashcat, написанным на C.
Cracken может генерировать около 2 ГБ/с на ядро.
Подробнее в benchmarks/ 🔗
Почему скорость важна? Типичный GPU может проверять миллиарды паролей в секунду в зависимости от хеш-функции пароля. Если генератор списков паролей выдает меньше слов в секунду, чем может обработать инструмент взлома, скорость взлома снижается.
Cracken использует алгоритм A* для очень быстрого анализа паролей. Он может найти минимальную гибридную маску файла паролей со скоростью ~100 000 паролей/с (cracken entropy -f words1.txt -f words2.txt ... -p pwds.txt)
установить Cracken или скомпилировать из исходников
скачать последний релиз из [releases 🔗][releases]
Cracken написан на Rust и требует rustc для компиляции. Cracken должен поддерживать все платформы, которые поддерживает Rust.
инструкции по установке [cargo 🔗][rustc-installation]
Есть два варианта сборки из исходников — установка через cargo из crates.io (предпочтительно) или ручная компиляция из исходников.
установка с помощью cargo:
$ cargo install cracken
клонировать Cracken:
$ git clone https://github.com/shmuelamar/cracken
собрать Cracken:
$ cd cracken
$ cargo build --release
запустить:
$ ./target/release/cracken --help
$ cracken --help
Cracken v1.0.0 - быстрый генератор списков паролей
ИСПОЛЬЗОВАНИЕ:
cracken [SUBCOMMAND]
ФЛАГИ:
-h, --help Вывод справки
-V, --version Вывод версии
ПОДКОМАНДЫ:
generate (по умолчанию) - Генерирует слова, разделённые новой строкой, в соответствии с заданной маской и файлами списков слов
create Создать новый smartlist из входного файла(ов)
entropy
Вычисляет приблизительную энтропию пароля или файла паролей.
Энтропия пароля — это log2(размер пространства) пароля.
Существует два типа оценки размера пространства:
* mask — пространство каждого символа (цифры=10, строчные=26...).
* hybrid — поиск минимального разбиения на подслова и наборы символов.
Для справки по конкретной подкоманде выполните: cracken <subcommand> --help
Примеры использования:
## Примеры подкоманды Generate:
# все цифры от 00000000 до 99999999
cracken ?d?d?d?d?d?d?d?d
# все цифры от 0 до 99999999
cracken -m 1 ?d?d?d?d?d?d?d?d
# слова с префиксом pwd - pwd0000 до pwd9999
cracken pwd?d?d?d?d
# все пароли длиной 8, начинающиеся с заглавной, затем 6 строчных, затем цифра
cracken ?u?l?l?l?l?l?l?d
# то же, но вывод в pwds.txt вместо stdout
cracken -o pwds.txt ?u?l?l?l?l?l?l?d
# пользовательский набор символов - все шестнадцатеричные значения
cracken -c 0123456789abcdef '?1?1?1?1'
# 4 пользовательских набора символов - порядок определяет id набора
cracken -c 01 -c ab -c de -c ef '?1?2?3?4'
# 4 строчных символа с суффиксом годов 2000-2019
cracken -c 01 '?l?l?l?l20?1?d'
# начинается с имени из списка слов, затем 4 цифры
cracken -w firstnames.txt '?w1?d?d?d?d'
# начинается с имени из списка слов с фамилией из списка слов, оканчивается символом
cracken -w firstnames.txt -w lastnames.txt -c '!@#$' '?w1?w2?1'
# повторение списков слов несколько раз и комбинирование наборов символов
cracken -w verbs.txt -w nouns.txt '?w1?w2?w1?w2?w2?d?d?d'
## Примеры подкоманды Create Smartlist: