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: __main__.py [-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 Да Да Да

Примеры использования

> pyhton -m fraza
дверной обком здравствовал контакт -> ldtj,rplhrjy

> pyhton -m 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

> pyhton -m 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:
pip3 install --user ADspecial/fraza
  1. Запуск приложения в терминале командой:
fraza

Дополнительно можно сформировать свой словарь с помощью скрипта gendict.py:

python gendict.py [путь_до_списка_слов.txt]

Что стоит сделать

проблема: медленная генерация большого количества паролей

использование параллелизма При генерации большого количества паролей сделать --no-color Ограничение количества генерации паролей при выводе в консоль (max = 100) При сохранении в файл (max = 10000) При использовании QR (max = 20)

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.1.0.tar.gz (627.5 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.1.0-py3-none-any.whl (619.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fraza-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0770164aeca81b36b5d9ed69d31fcc9b6bcb7269d6de7fb462d53829cac93bbe
MD5 cd9987d3b92d23f4ba695a0570f12915
BLAKE2b-256 6f45e599a6cf681f4684db046016993720dda5c456bc8617609870c6b1533875

See more details on using hashes here.

Provenance

The following attestation bundles were made for fraza-0.1.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: fraza-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 619.3 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66d4dd7780f439c3e2d96d307fff99323ddc1fb99bc3ad6045744daf90f5a348
MD5 97cda8ceb7de5819dc44763bfa1f1d64
BLAKE2b-256 c8cc6ab30b77440c8e23d5dc3a705643d79e7badd04642f9434fb2ff57388769

See more details on using hashes here.

Provenance

The following attestation bundles were made for fraza-0.1.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