Skip to main content

fraza

Simple password generator using passphrase in Russian preview

Правила формирования пароля:

  • Пароль создается на основе парольной фразы на русском языке;
  • Беруться первые несколько букв из каждого слова в парольной фразе;
  • Пароль набирается в ангийской раскладке клавиатуры;
  • Дополнительно могут добавлятся числа, спецсимволы, разные регистры.

Идея правил генерации была вдохновлена парольным генератором в продуктах 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

Пример вывода в терминале

alt text

Оценка сложности пароля

Сложность пароля проверяется с помощью библиотеки zxcvbn. Энтропия рассчитывается по формуле: Энтропия (бит) = log₂(guesses) Где guesses — примерное число попыток подбора. Энтропия показывает, сколько бит информации содержит пароль с точки зрения сложности перебора — чем выше, тем безопаснее.

Энтропия (бит) Примерный уровень безопасности
20–40 Слабый
40–60 Средний
60–80 Хороший
80+ Отличный

Оценка времени взлома берётся из параметра offline_fast_hashing_1e10_per_second — оффлайн-атака с быстрым хэшированием, предполагающая 10 миллиардов попыток в секунду.

Установка

  1. Обновление и установка необходимых инструментов:
sudo apt update
sudo apt install git python3 python3-pip
  1. Установка пакета Fraza:
pip install fraza
  1. Запуск приложения в терминале командой:
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)

Source distribution for fraza 0.2.0
File Size Uploaded
fraza-0.2.0.tar.gz 627.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fraza 0.2.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page