fraza
Simple password generator using passphrase in Russian
Правила формирования пароля:
- Пароль создается на основе парольной фразы на русском языке;
- Беруться первые несколько букв из каждого слова в парольной фразе;
- Пароль набирается в ангийской раскладке клавиатуры;
- Дополнительно могут добавлятся числа, спецсимволы, разные регистры.
Идея правил генерации была вдохновлена парольным генератором в продуктах ViPNet.
Правила генерации парольной фразы:
password phrase = (attribute) + subject + (adverbial) + predicate + object
где:
- subject - подлежащее;
- object - дополнение;
- predicate - сказуемое;
- attribute - определение;
- adverbial - обстоятельство.
Парольная фраза генерируется случайно на основе размеченного словаря. Пример структуры словаря представлена ниже:
{
"subject": [
{
"word": "цезарь",
"normal_form": "цезарь",
"pos": "NOUN",
"gender": "masc",
"number": "sing",
"case": "nomn",
"inflections": {
"(nomn, sing, masc)": "цезарь",
"(accs, sing, masc)": "цезаря",
...
}
}
],
...
}
Замечание - морфологическая связность в фразах не полная. Фразы зачастую генерируются не складно. Например: Конституционного Ларина Повсеместно Нахмурился Имущество.
Аргументы
usage: fraza [-h] [-d {1,2,3,simple,standart,complex}] [-w WORD] [-l LETTER] [-n] [-c] [--wc] [-p PASSWORDS] [-a]
[-f FILE] [--cp] [--cpall] [--qr] [--sec SEC] [--no-color]
Генератор паролей на основе фраз
optional arguments:
-h, --help show this help message and exit
-d {1,2,3,simple,standart,complex}, --difficulty {1,2,3,simple,standart,complex}
Уровень сложности пароля (1|simple, 2|standart, 3|complex)
-w WORD, --word WORD Количество слов во фразе (max = 5)
-l LETTER, --letter LETTER
Количество букв из каждого слова (max = 4)
-n, --number Добавить числовой префикс (10-99)
-c, --capitalized Использовать заглавные буквы в начале слов
--wc, --wildcard Использовать спецсимволы в пароле, разграничители между словами в парольной фразе по очереди (!, @, #, $)
-p PASSWORDS, --passwords PASSWORDS
Количество паролей для генерации
-a, --analyze Показать анализ сложности
-f FILE, --file FILE Путь к файлу сохранения сгенерированных паролей
--cp, --copy Скопировать сгенерированные пароли в буфер обмена
--cpall, --copyall Скопировать весь вывод в буфер обмена
--qr Вывести QR-код сгенерированных паролей
--sec SEC Сохранить сгенерированные пароли в зашифрованный ZIP-файл. Пароль от файла сохраняется в буфер обмена. Нужно указать путь к файлу
--no-color Отключить цветовую подсветку вывода
По умолчанию генерация одного simple пароля.
Генерация паролей трех уровней:
| Уровень | Слова | Буквы | Число | Заглавные | Спецсимволы |
|---|---|---|---|---|---|
| simple | 4 | 3 | Нет | Нет | Нет |
| standart | 4 | 4 | Да | Да | Нет |
| complex | 5 | 4 | Да | Да | Да |
Примеры использования
> fraza
дверной обком здравствовал контакт -> ldtj,rplhrjy
> fraza -d 3 -p 5 -a
75 Индустриальный Василий Политически Напрягал Багаж -> 75Byle!Dfcb@Gjkb#Yfgh$,fuf | Entropy bits: 85.27, Crack time: centuries
91 Наидлиннейшее Слияние Любезно Разделось Домик -> 91Yfbl!Ckbz@K.,t#Hfpl$Ljvb | Entropy bits: 86.37, Crack time: centuries
84 Ловкий Привод Аналогично Отсутствовал Неприязнь -> 84Kjdr!Ghbd@Fyfk#Jnce$Ytgh | Entropy bits: 86.37, Crack time: centuries
76 Некрасивейшее Ружье Налицо Прошло Арест -> 76Ytrh!He;m@Yfkb#Ghji$Fhtc | Entropy bits: 86.37, Crack time: centuries
77 Согласный Посреди Совместно Изложил Раздел -> 77Cjuk!Gjch@Cjdv#Bpkj$Hfpl | Entropy bits: 86.37, Crack time: centuries
> fraza -w 5 -l 3 -c -n --wc -a
86 Огненная Смертность Глубоко Оценила Госпиталь -> 86Juy!Cvt@Uke#Jwt$Ujc | Entropy bits: 69.76, Crack time: centuries
Оценка сложности пароля
Сложность пароля проверяется с помощью библиотеки zxcvbn.
Энтропия рассчитывается по формуле: Энтропия (бит) = log₂(guesses)
Где guesses — примерное число попыток подбора.
Энтропия показывает, сколько бит информации содержит пароль с точки зрения сложности перебора — чем выше, тем безопаснее.
| Энтропия (бит) | Примерный уровень безопасности |
|---|---|
| 20–40 | Слабый |
| 40–60 | Средний |
| 60–80 | Хороший |
| 80+ | Отличный |
Оценка времени взлома берётся из параметра offline_fast_hashing_1e10_per_second — оффлайн-атака с быстрым хэшированием, предполагающая 10 миллиардов попыток в секунду.
Установка
- Обновление и установка необходимых инструментов:
sudo apt update
sudo apt install git python3 python3-pip
- Установка пакета Fraza:
pip install fraza
- Запуск приложения в терминале командой:
fraza
Запуск в термналах без поддержки ANSI escape codes (cmd, PowerShell):
fraza --no-color
Также без поддеркжки ANSI escape codes некорректно выводится qr-коды паролей.
Дополнительно можно сформировать свой словарь с помощью скрипта gendict.py:
python gendict.py [путь_до_списка_слов.txt]
Metadata
Release files for fraza 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fraza-0.2.0.tar.gz | 627.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fraza-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.2 MB
Release files / fraza-0.2.0.tar.gz
| Download URL | fraza-0.2.0.tar.gz |
|---|---|
| Size | 627.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d01e45cd444a6043b26fae5a1f5afa626215dd89d62437b2b505f1b09ba081a7
|
|
BLAKE2b-256 checksum How to use checksums |
6494ab2a6df5b2a6c1142df755eebf32aa1c3394cb73a40e87590c03289e7bbd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 16, 2025.
Transparency logRelease files / fraza-0.2.0-py3-none-any.whl
| Download URL | fraza-0.2.0-py3-none-any.whl |
|---|---|
| Size | 619.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
865c5ad37eaed06f1bb30e832f98db4e9104e45eadfd8b9d853da4f48299a201
|
|
BLAKE2b-256 checksum How to use checksums |
585a4930474323dd579ee9534caabab6e060bfc3b9d9ffdfd6395d6f69819d3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 16, 2025.
Transparency log