Skip to main content

Simple password generator using passphrase in Russian

Project description

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]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fraza-0.2.0.tar.gz (627.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fraza-0.2.0-py3-none-any.whl (619.2 kB view details)

Uploaded Python 3

File details

Details for the file fraza-0.2.0.tar.gz.

File metadata

  • Download URL: fraza-0.2.0.tar.gz
  • Upload date:
  • Size: 627.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fraza-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d01e45cd444a6043b26fae5a1f5afa626215dd89d62437b2b505f1b09ba081a7
MD5 083c4a328baebe5e205a0c01d398c047
BLAKE2b-256 6494ab2a6df5b2a6c1142df755eebf32aa1c3394cb73a40e87590c03289e7bbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for fraza-0.2.0.tar.gz:

Publisher: python-publish.yml on ADspecial/fraza

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fraza-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: fraza-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 619.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for fraza-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 865c5ad37eaed06f1bb30e832f98db4e9104e45eadfd8b9d853da4f48299a201
MD5 dc21959c2009133a350b937a6d21b115
BLAKE2b-256 585a4930474323dd579ee9534caabab6e060bfc3b9d9ffdfd6395d6f69819d3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fraza-0.2.0-py3-none-any.whl:

Publisher: python-publish.yml on ADspecial/fraza

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page