# bot/pwdgen.py
from random import choice
from xkcdpass import xkcd_password
class XKCD:
# Весь список разделителей, отдельно цифры, отдельно – спецсимволы
delimiters_numbers = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
delimiters_full = ["!", "$", "%", "^", "&", "*", "-", "_", "+", "=", ":", "|", "~", "?", "/", ".", ";"] + delimiters_numbers
def __init__(self, filename: str):
# Загрузка словаря в память
self.wordlist = xkcd_password.generate_wordlist(
wordfile=filename, valid_chars="[a-z]",
min_length=4, max_length=10,
)
def weak(self):
# Слабый пароль: 2 слова без раздетилей
return xkcd_password.generate_xkcdpassword(
self.wordlist, numwords=2,
delimiter="", )
def normal(self):
# Средний пароль: 3 слова, разделитель
# в виде случайной цифры
return xkcd_password.generate_xkcdpassword(
self.wordlist, numwords=3, case="random", random_delimiters=True,
valid_delimiters=self.delimiters_numbers
)
def strong(self):
# Сильный пароль: 4 слова и большой выбор разделителей
return xkcd_password.generate_xkcdpassword(
self.wordlist, numwords=4, case="random", random_delimiters=True,
valid_delimiters=self.delimiters_full
)
def custom(self, count: int, separators: bool, prefixes: bool):
# Произвольный пароль:
# сложность зависит от настроек пользователя
pwd = xkcd_password.generate_xkcdpassword(
self.wordlist, numwords=count, case="random",
delimiter="", random_delimiters=separators,
valid_delimiters=self.delimiters_full
)
if prefixes == separators:
return pwd
elif separators and not prefixes:
return pwd[1:-1]
elif prefixes and not separators:
return f"{choice(self.delimiters_full)}{pwd}{choice(self.delimiters_full)}"
Теперь ваш сложный пароль будет знать автор бота, хостинг бота и Телеграм. А еще, возможно, ваш товарищ, который заглянет в телефон. Каждый из них будет утверждать, что ничего не смотрит, но кто ж им мешает?)
Зачем это нахер нужно
Провел рукой справа налево или слева направо по клавиатуре вот тебе и сложный пароль, а все остальное создано чтобы красть пароли
А нафига? Я бы понял, если бы вы написали инструкцию по установке и защите Bitwarden, но телеграм бот, который просто генерирует пароли, на сервере. Ээ.
Рад за автора, что он попрактиковался в кодинге. Но для всех людей есть — "qwerty1234", для тех, кто решил, что для всех сервисов нужен больше, чем один пароль — 1password, для тех, кто не доверяет компаниям и сможет запустить свой сервер — bitwarden (да, можно сохранять все и на сервера bitwarden) / pass
Никогда бы подобному не доверился. Зачем просить сгенерить тебе сложный пароль, который уже вбит в базу? Проще придумать самим, записать где-то и всё.
все равно все пароли как обычно забываются