Simple password generator using passphrase in Russian
Project description
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: __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
Оценка сложности пароля
Сложность пароля проверяется с помощью библиотеки 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:
pip3 install --user ADspecial/fraza
- Запуск приложения в терминале командой:
fraza
Дополнительно можно сформировать свой словарь с помощью скрипта gendict.py:
python gendict.py [путь_до_списка_слов.txt]
Что стоит сделать
проблема: медленная генерация большого количества паролей
использование параллелизма При генерации большого количества паролей сделать --no-color Ограничение количества генерации паролей при выводе в консоль (max = 100) При сохранении в файл (max = 10000) При использовании QR (max = 20)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0770164aeca81b36b5d9ed69d31fcc9b6bcb7269d6de7fb462d53829cac93bbe
|
|
| MD5 |
cd9987d3b92d23f4ba695a0570f12915
|
|
| BLAKE2b-256 |
6f45e599a6cf681f4684db046016993720dda5c456bc8617609870c6b1533875
|
Provenance
The following attestation bundles were made for fraza-0.1.0.tar.gz:
Publisher:
python-publish.yml on ADspecial/fraza
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fraza-0.1.0.tar.gz -
Subject digest:
0770164aeca81b36b5d9ed69d31fcc9b6bcb7269d6de7fb462d53829cac93bbe - Sigstore transparency entry: 238885813
- Sigstore integration time:
-
Permalink:
ADspecial/fraza@6019d204f1636d6ca6f12c1a2b334407af74c926 -
Branch / Tag:
refs/tags/init - Owner: https://github.com/ADspecial
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6019d204f1636d6ca6f12c1a2b334407af74c926 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66d4dd7780f439c3e2d96d307fff99323ddc1fb99bc3ad6045744daf90f5a348
|
|
| MD5 |
97cda8ceb7de5819dc44763bfa1f1d64
|
|
| BLAKE2b-256 |
c8cc6ab30b77440c8e23d5dc3a705643d79e7badd04642f9434fb2ff57388769
|
Provenance
The following attestation bundles were made for fraza-0.1.0-py3-none-any.whl:
Publisher:
python-publish.yml on ADspecial/fraza
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fraza-0.1.0-py3-none-any.whl -
Subject digest:
66d4dd7780f439c3e2d96d307fff99323ddc1fb99bc3ad6045744daf90f5a348 - Sigstore transparency entry: 238885815
- Sigstore integration time:
-
Permalink:
ADspecial/fraza@6019d204f1636d6ca6f12c1a2b334407af74c926 -
Branch / Tag:
refs/tags/init - Owner: https://github.com/ADspecial
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6019d204f1636d6ca6f12c1a2b334407af74c926 -
Trigger Event:
release
-
Statement type: