Исходник Алгоритм бота EasyStrongPassword

Sos
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
26 Авг 2019
Сообщения
256
Реакции
55
WARNING! SHIT CODE!

Видел темы где челики просто написали "".join(choice(chars) for i in range(16))
и постили с этим тему.
Вот вам генератор пароля который в 1000 раз лучше

Сразу хочу сказать, что это не официальный алгоритм оригинального бота.

Мне просто было интересно сделать, кто хочет может запилить для себя бота (правда зачем?)

Ну вообщем, есть говно код, кто то из вас мог сделать данный алгоритм в 5 строчек и т.п,
Можете поковырять данную какаху палочкой.

Можете сделать парсер слов, подключить aiogram, добавить пару кнопок и у вас есть бот 1:1 как оригинал.
Python:
Expand Collapse Copy
from random import *
from transliterate import translit
from transliterate.decorators import transliterate_function

# список слов (можно заменить добавить парсер и получать слова из источника)
words = [
    "Простота",
    "Старость",
    "Гадость",
    "Страх",
    "Вред"
]

# + 100 лет к брутфорсу вашего пароля
punct = ["!", "@", "#", "$", "%", "&", "*", "?", "+", "-", "(", ")", "[", "]"]

# Выбираем слова из списка
def select_words():

    selected_words = []

    while len(selected_words) < 3:

        word = words[randint(0, len(words)-1)]
        if word not in selected_words:
            selected_words.append(word)

    return selected_words

# Делаем эту хуйню (спиздил с документации)
@transliterate_function(language_code="ru", reversed=True)
def translit(word):
    return word

# Закинем выбранные слова в функцию выше
def translator(words_list):

    new_word_list = []
    for i in words_list:
        new_word_list.append(
            translit(i).capitalize()
        )
    return new_word_list

# Возьмём первые 4 буквы с каждого слова
def update_words(words):

    new_words = []

    for i in words:

        new_words.append(i[:4])

    return new_words

# Сделаем пароль
def do_password(words, symbol, g1, g2):

    password = ""

    for i in words:

        if i == words[0]:
            password += f"{i}{g1}"
        elif i == words[1]:
            password += f"{i}{g2}"
        else:
            password += f"{i}{randint(10, 99)}"

    password += symbol

    return password

# Просто для удобства
def get_symbol():

    return punct[randint(0, len(punct)-1)]

# Главный метод
def main():

    # Берём слова
    sw = select_words()
    # UPD: Добавит ещё рандома :\
    shuffle(sw)

    # Берём первые 4 буквы слова
    new_words = update_words(sw)
    # Прогоняем через транслитератор
    new_words = translator(new_words)
    # Берём случайные цифры в деапозоне от 0 до 9
    # Сделано как в оригинале (можно не делать)
    g1 = randint(0, 9)
    g2 = randint(0, 9)

    # Берём 3 пароля (как в оригинале)
    password_list = [do_password(new_words, get_symbol(), g1, g2) for i in range(3)]

    # Вывод в консоль
    print(password_list)
    # return password_list



# Запуск
if __name__ == '__main__':
    main()

UPD: что бы скрипт работал надо установить вот эту либу: pip install transliterate
 
Последнее редактирование:
брутфорс наверное стороной обходит комбинацию из частей слов, а вот рандомный набор символов нацелено подбирает! и ведь нельзя в обычном джоине добавить спец. символы!!
 
брутфорс наверное стороной обходит комбинацию из частей слов, а вот рандомный набор символов нацелено подбирает! и ведь нельзя в обычном джоине добавить спец. символы!!
Почему ? join ведь присоединяет что то к строке ?
брутфорс наверное стороной обходит комбинацию из частей слов, а вот рандомный набор символов нацелено подбирает! и ведь нельзя в обычном джоине добавить спец. символы!!
Брутфорс это перебор паролей, ведь глупо генерировать какие то случайные символы, что бы взломать пароль от аккаунта. Берётся база паролей, загружается в брутфорс и идёт атака. Форсили же эти генераторы дискорд нитро или купоны для какой то поеботы где типо просто стоит цикл While True, и генерация рандомных символов. Шанс сгенерировать такой код ≈ 1 на 1.000.000.000 +-
 
Последнее редактирование:
Назад
Сверху Снизу