
Генератор угадывания паролей на основе вероятностной контекстно-свободной грамматики (PCFG)
PCFG = Вероятностная контекстно-свободная грамматика
PCFG = Очень Крутой Нечеткий Угадыватель
Короче: Набор инструментов для исследования того, как люди создают пароли. Их можно использовать для взлома хешей паролей, а также для генерации синтетических паролей (honeywords) или помощи в разработке более совершенных алгоритмов оценки стойкости паролей.
Trainer: 4.4
Guesser: 4.6
PRINCE_LING: 4.3
Password_Scorer: 4.4
Sphinx используется для динамического создания руководства разработчика на основе строк документации в коде. Чтобы собрать руководство разработчика, обратитесь к инструкциям в /doc/INSTRUCTIONS.rst
Предварительно собранный PDF-файл руководства разработчика также можно найти в /doc/build/latex/pcfgdevelopersguide.pdf. Обратите внимание: я не буду перестраивать это руководство между крупными релизами, чтобы история git оставалась чище. Иначе коммиты PDF быстро становятся беспорядочными. Поэтому предварительно собранное руководство может быть немного устаревшим; если вы используете его для помощи в написании/изменении кода, рекомендуется собрать руководство самостоятельно, а не использовать предварительно собранное.
Этот проект использует машинное обучение для выявления привычек создания паролей пользователями. Модель PCFG создается путем обучения на списке раскрытых паролей в открытом виде (или взломанных). В контексте этого проекта модель называется набором правил и содержит множество различных частей паролей, выявленных во время обучения, вместе с их вероятностями. Такое разбиение на составные части может быть полезно для других инструментов взлома, таких как PRINCE, и/или части набора правил могут быть напрямую включены в более традиционные атаки на основе словарей. Этот проект также включает генератор предположений PCFG, который использует этот набор правил для генерации паролей в порядке убывания вероятности. Это гораздо мощнее стандартных словарных атак, и в тестах доказано, что он способен взламывать пароли в среднем с использованием значительно меньшего количества попыток, чем другие общедоступные методы. Недостатком является то, что генерация предположений в порядке вероятности медленная — в среднем 50–100 тысяч попыток в секунду, в то время как алгоритмы на GPU могут выдавать миллионы и миллиарды (и больше) попыток в секунду для быстрых алгоритмов хеширования. Поэтому угадыватель PCFG лучше всего использовать для большого количества соленых хешей или других медленных алгоритмов хеширования, где точность предположений компенсирует вычислительные затраты.
pip3 install chardetНабор правил по умолчанию, включенный в этот репозиторий, был создан путем обучения на подмножестве из 1 миллиона паролей из набора RockYou. Лучшей производительности можно достичь, обучаясь на полном наборе из 32 миллионов паролей RockYou, но он был исключен, чтобы уменьшить размер загрузки. Вы можете использовать набор правил по умолчанию для начала генерации паролей без необходимости обучения на новом списке, но рекомендуется обучаться на целевом наборе паролей, который может быть ближе к тому, что вы хотите атаковать. Если вы создаете свой собственный набор правил, вот краткое руководство:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6
b. --save_sensitive: Если указано, чувствительные данные, такие как адреса электронной почты и полные веб-сайты, обнаруженные во время обучения, будут сохранены в наборе правил. Хотя генератор предположений PCFG в настоящее время не использует эти данные, они очень ценны в реальной атаке на взлом паролей. По умолчанию эта опция отключена, чтобы упростить использование этого инструмента в академических целях. Обратите внимание: даже если эта опция отключена, в наборе правил почти наверняка останутся персональные данные, поэтому защищайте созданные наборы правил соответствующим образом. Пример: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive
c. --comments: Добавляет комментарий в файл конфигурации набора правил. Это полезно, чтобы позже, взглянув на него, вы знали, почему и как был создан этот набор правил. Заключите комментарий, который хотите добавить, в кавычки.Это генерирует предположения в stdout, используя ранее обученный набор правил PCFG. Эти предположения затем можно передать по конвейеру в любую программу, которая будет их использовать. Если набор правил не указан, будет использоваться набор правил по умолчанию DEFAULT. Для целей этого руководства предполагается, что используется набор правил NEW_RULESET.