Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
И то и то работает. Любую программу можно написать разными способами. random стандартно применяется для генерации последовательностей. В общем дело привычки.
Специально сейчас потестил на скорость выполнения кода - в обоих случаях оно примерно одинаковое.
Тема не новая, генераторов существует множество, однако такой простой код и глазу приятен, и место не занимает.
Для начала вставим в шапку кодировку и версию питона. Импортируем модуль random для генерации случайной последовательности. Зададим переменную chars и вобьём буквы в разном регистре, цифры и какие-нибудь спецсимволы для получения максимально взломостойкого пароля.
Чтобы программа тупо не генерила один пароль или строго заданное количество, разрешим пользователю самому решать сколько паролей он хочет сгенерировать. Кроме этого дадим возможность определять и длину пароля.
Python:
number = input('количество паролей?'+ "\n")
length = input('длина пароля?'+ "\n")
number = int(number)
length = int(length)
Осталось добавить самое главное - цикл случайной генерации символов, букв и цифр из нашей переменной, согласно параметрам введённым пользователем.
Python:
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
Вот собственно и всё - простой генератор сложных паролей готов.
Код полностью:
Python:
# -*- coding:utf -8 -*-
#!/usr/bin/python3
import random
chars = '+-/*!&$#?=@<>abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
number = input('количество паролей?'+ "\n")
length = input('длина пароля?'+ "\n")
number = int(number)
length = int(length)
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
Всё работает корректно, похоже вы напутали с отступами. В Python отступы имеют огромное значение, и должны быть кратны 4 пробелам, 2 отступа 8 пробелов.
Всё работает корректно, похоже вы напутали с отступами. В Python отступы имеют огромное значение, и должны быть кратны 4 пробелам, 2 отступа 8 пробелов.
Тема не новая, генераторов существует множество, однако такой простой код и глазу приятен, и место не занимает.
Для начала вставим в шапку кодировку и версию питона. Импортируем модуль random для генерации случайной последовательности. Зададим переменную chars и вобьём буквы в разном регистре, цифры и какие-нибудь спецсимволы для получения максимально взломостойкого пароля.
Чтобы программа тупо не генерила один пароль или строго заданное количество, разрешим пользователю самому решать сколько паролей он хочет сгенерировать. Кроме этого дадим возможность определять и длину пароля.
Python:
number = input('количество паролей?'+ "\n")
length = input('длина пароля?'+ "\n")
number = int(number)
length = int(length)
Осталось добавить самое главное - цикл случайной генерации символов, букв и цифр из нашей переменной, согласно параметрам введённым пользователем.
Python:
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
Вот собственно и всё - простой генератор сложных паролей готов.
Код полностью:
Python:
# -*- coding:utf -8 -*-
#!/usr/bin/python3
import random
chars = '+-/*!&$#?=@<>abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
number = input('количество паролей?'+ "\n")
length = input('длина пароля?'+ "\n")
number = int(number)
length = int(length)
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
Результат работы:
Не нужно искать сложных путей, если есть простые решения
в прочем написано хорошо но такая фигня паролей может быть миллиард и они от 6 до 15 цифр и при этом не удобно каждый раз вводить заново кол во паролей вот бы сделать так что бы можно было вводить промежуток
в прочем написано хорошо но такая фигня паролей может быть миллиард и они от 6 до 15 цифр и при этом не удобно каждый раз вводить заново кол во паролей вот бы сделать так что бы можно было вводить промежуток
Не вижу практической пользы от миллиарда паролей. Хотя...это может быть полезно для составления словарей под брут. Там не сложно доделать - нужно написать 2 инпута для ввода диапазона, и прогнать всё через цикл.
import random
chars = '123qwe'
number = int (input('количество паролей?'+ "\n"))
length = 5
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
import random
chars = '123qwe'
number = int (input('количество паролей?'+ "\n"))
length = 5
for n in range(number):
password =''
for i in range(length):
password += random.choice(chars)
print(password)
import itertools
for i in itertools.product('123qwe', repeat=5):
print(''.join(i))
Все комбинации без повторов выведутся только тогда, когда не задаётся жёстко количество. В данном коде repeat отвечает за количество символов в выводе.
@explorer , я по первому пирмеру (через itertools) написал себе под "местные" цели для создания словаря для брута, но если в пароле много символов, у меня бук греется будто на нем майнят ))
А под небольшую длину - очень хорошо )
Кстати, если уж развивать тему, то было бы неплохо генерить пароли не последовательно по символам, а рандомно )
Неплохо бы уже самому немного потренироваться кодингу ) Ну если нужен рандомный вариант, значит нужно использовать модуль random, логично?
Держи рандомный вариант:
Python:
import itertools
import random
mix = list('123qwe')
random.shuffle(mix)
a = 0
for i in itertools.product(mix, repeat=5):
a += 1
print(''.join(i))
print('Количество комбинаций:' + str(a))
При каждом запуске всегда будет разная последовательность из паролей.
я немного не то имел ввиду... Перемешать нужно уже сгенерированый список.
методом проб и ошибок наговнокодил вот такую дзичь:
Python:
import itertools
import random
simbols = input("Введи предпогалаемые символы:\n")
dlina = int(input("Кол-во символов:\n"))
words = itertools.product(simbols, repeat = dlina)
brut_file = [] #создаем пустой словарь(список)
for i in words: # цикл генерации
words = (''.join(i))
brut_file.append(words) #и записи полученных слов в brut_file
print(brut_file)
random.shuffle(brut_file) # перемешиваем ранее полученный brut_file
print ('\nПосле перемешивания получаем\n', brut_file)
#запись в файл
brut_file = str(brut_file)
file = open ("E:\python\password.txt", 'a') #открываем куда писать полученные данные
file.write(brut_file) # записываем файл
file.close() # закрываем файл
теперь я не знаю как ['13', '22', '32', '21', '23', '33', '11', '12', '31']
привести к виду:
13
22
32
21
и т.д. ))))))
Мозг лопается, но я учусь )
я немного не то имел ввиду... Перемешать нужно уже сгенерированый список.
методом проб и ошибок наговнокодил вот такую дзичь:
Python:
import itertools
import random
simbols = input("Введи предпогалаемые символы:\n")
dlina = int(input("Кол-во символов:\n"))
words = itertools.product(simbols, repeat = dlina)
brut_file = [] #создаем пустой словарь(список)
for i in words: # цикл генерации
words = (''.join(i))
brut_file.append(words) #и записи полученных слов в brut_file
print(brut_file)
random.shuffle(brut_file) # перемешиваем ранее полученный brut_file
print ('\nПосле перемешивания получаем\n', brut_file)
#запись в файл
brut_file = str(brut_file)
file = open ("E:\python\password.txt", 'a') #открываем куда писать полученные данные
file.write(brut_file) # записываем файл
file.close() # закрываем файл
теперь я не знаю как ['13', '22', '32', '21', '23', '33', '11', '12', '31']
привести к виду:
13
22
32
21
и т.д. ))))))
Мозг лопается, но я учусь )
я немного не то имел ввиду... Перемешать нужно уже сгенерированый список.
методом проб и ошибок наговнокодил вот такую дзичь:
Python:
import itertools
import random
simbols = input("Введи предпогалаемые символы:\n")
dlina = int(input("Кол-во символов:\n"))
words = itertools.product(simbols, repeat = dlina)
brut_file = [] #создаем пустой словарь(список)
for i in words: # цикл генерации
words = (''.join(i))
brut_file.append(words) #и записи полученных слов в brut_file
print(brut_file)
random.shuffle(brut_file) # перемешиваем ранее полученный brut_file
print ('\nПосле перемешивания получаем\n', brut_file)
#запись в файл
brut_file = str(brut_file)
file = open ("E:\python\password.txt", 'a') #открываем куда писать полученные данные
file.write(brut_file) # записываем файл
file.close() # закрываем файл
теперь я не знаю как ['13', '22', '32', '21', '23', '33', '11', '12', '31']
привести к виду:
13
22
32
21
и т.д. ))))))
Мозг лопается, но я учусь )
Это простой вариант:
Замени строку brut_file = str(brut_file)
на brut_file = "\n".join(brut_file)
Метод join объединит все элементы списка, а разделителем сделает символ переноса строки.
Есть другой вариант, более экономный и, наверное, более правильный:
Замени весь блок записи на эти 2 строчки
Python:
#запись в файл
with open("E:\python\password.txt", 'a') as writer:
writer.write("\n".join(brut_file))
Конструкция with при записи или чтении данных сама закроет поток после окончания операции.
================================================= И несколько замечаний по поводу кода:
Придерживайся одного стиля написания имён переменных:
если уж все пишешь на английском, заморочься, открой Google переводчик,
который подскажет тебе, что длина по английски - length
Нужные тебе переменные, если это возможно, создавай в самом начале кода,
чтобы потом не искать их далее.
Ну и последнее: выделяй блоки кода в отдельные функции.
Есть у тебя в коде запись данных в файл, так создай для этого случая
отдельную функцию, которая будет принимать, к примеру, список и сама его записывать.
Python:
def write_data_to_disk(target_data: list):
"""Функция записывает массив target_data в файл"""
file = open ("E:\python\password.txt", 'a') #открываем куда писать полученные данные
file.write("\n".join(target_data)) # записываем файл
file.close() # закрываем файл
write_data_to_disk(brut_file)
Во-первых:
Обрати внимание, сколько раз ты уже переписал эту программу,
сколько добавил новых строк и сколько раз что-то удалил.
И просто представь, что у тебя в программе не 20 строк, а 120 и
тебе каждый раз нужно отслеживать отступы, смотреть, как бы не
влезть в область видимости этого сегмента.
Всё это я к тому, что вероятность ошибиться в 4 строках когда
и в 10 принципиально разная, поэтому лучше написать функцию
где-то сверху и забыть о ней, до её вызова.
Во-вторых:
Ты можешь написать эту функцию один единственный раз,
а потом банально импортировать её во всех файлах, в которых
тебе нужно записывать массив, очень часто это помогает многократно
использовать один и тот же код.
И, наконец, в третьих:
Причина банальная - простота работы с кодом.
Представь, что ты видишь какую-то объёмную конструкцию вида
Python:
file = open ("E:\python\password.txt", 'a') #открываем куда писать полученные данные
file.write("\n".join(target_data)) # записываем файл
file.close() # закрываем файл
На каждой строчке комментарий, там нужно разобраться с переменными,
здесь нужно вникнуть в этот код, подумать, как он используется,
прикинуть, как его разместить, ниже или выше.
А вот здесь ты видишь вызов функции в названии которой четко написано,
что конкретно она делает write_data_to_disk(brut_file)
Согласись, что второй пример, не заставит тебя долго размышлять над тем,
что происходит на этой строке.
А уж если ты приучишь себя после написания имени функции и её параметров
писать строку описание - это первая строка в коде функции, которая
заключена в тройные кавычки, то при вызове этой функции в коде,
сама IDE тебе подскажет, что конкретно делает этот код.
Выглядит это примерно так
На данном сайте используются cookie-файлы, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших cookie-файлов.