Keyword generator

hellhyde

Новичок
Пользователь
Июл 28, 2020
28
4
3
Доброго всем времени суток. Помогите доделать код.
Нужно что бы условия аргументов работали не только по отдельности, типа B S N L , а и BL, ls и тд.
Но если к примеру ввести слово site, то работать не должно. Вот код
Python:
import itertools
import string
import sys

print('Keyword generator\n\n')
print('B - Большие буквы\n'
      'L - Маленькие буквы\n'
      'S - Спецсимволы\n'
      'N - Числа\n')


try:
    def upper():
        print('kek')
        password_len = int(input("Количество символов в слове: "))
        chars = string.ascii_uppercase
        total = 0
        for _ in itertools.product(chars, repeat=int(password_len)):
            total += 1
        print('Количество комбинаций: ', total)
        with open('dict_gen.txt', 'w') as file:
            for item in itertools.product(chars, repeat=int(password_len)):
                file.writelines(item)
                file.writelines('\n')
        print('Done')

    def lower():
        print('Выбраны lowercase')
        password_len = int(input("Количество символов в слове: "))
        charsl = string.ascii_lowercase
        total = 0
        for _ in itertools.product(charsl, repeat=int(password_len)):
            total += 1
        print('Количество комбинаций: ', total)
        with open('dict_gen.txt', 'w') as file:
            for item in itertools.product(charsl, repeat=int(password_len)):
                file.writelines(item)
                file.writelines('\n')
        print('Done')

    def digits():
        password_len = int(input("Количество символов в слове: "))
        charsd = string.digits
        total = 0
        for _ in itertools.product(charsd, repeat=int(password_len)):
            total += 1
        print('Количество комбинаций: ', total)
        with open('dict_gen.txt', 'w') as file:
            for item in itertools.product(charsd, repeat=int(password_len)):
                file.writelines(item)
                file.writelines('\n')
        print('Done')

    def spec():
        password_len = int(input("Количество символов в слове: "))
        charss = '+-/*!&$#?=@<>|}{'
        total = 0
        for _ in itertools.product(charss, repeat=int(password_len)):
            total += 1
        print('Количество комбинаций: ', total)
        with open('dict_gen.txt', 'w') as file:
            for item in itertools.product(charss, repeat=int(password_len)):
                file.writelines(item)
                file.writelines('\n')
        print('Done')

    x = input('Выберите аргументы : ')
    if x == 'B' or x == 'b':
        upper()
    elif x == 'L' or x == 'l':
        lower()
    elif x == 'N' or x == 'n':
        digits()
    elif x == 'S' or x == 's':
        spec()
    else:
        print('Нужно выбрать соответствующую опцию!')
        sys.exit()

except ValueError:
    print('Ошибка, введите целое число больше нуля!')
except KeyboardInterrupt:
    print('\nОтменено пользователем')
 
  • Мне нравится
Реакции: Student

hellhyde

Новичок
Пользователь
Июл 28, 2020
28
4
3
Решение
Python:
import itertools
import string

print('Keyword generator\n\n')
print('B - Большие буквы\n'
      'L - Маленькие буквы\n'
      'S - Спецсимволы\n'
      'N - Числа\n')

try:
    x = input('Выберите аргументы : ').lower()
    password_len = int(input("Количество символов в слове: "))
    passwords_dict = {'b': string.ascii_uppercase,
                      'l': string.ascii_lowercase,
                      'n': string.digits,
                      's': string.punctuation}
    target_dict = ''
    total = 0

    for letter in list(x):
        if letter in passwords_dict:
            target_dict = target_dict + passwords_dict.get(letter)
        else:
            print('Введите правильные значения аргументов')
    res = itertools.product(target_dict, repeat=int(password_len))
    for i in res:
        total += 1
    print('Количество комбинаций: ', total)
    with open('dict_gen.txt', 'w') as file:
        for item in itertools.product(target_dict, repeat=int(password_len)):
            file.writelines(''.join(item))
            file.writelines('\n')
    print('Done')
except Exception as e:
    print('Ошибка', e)
 

Форум IT Специалистов