• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Пишем простой генератор сложных паролей

Вы последнюю строку кода не вставили root.mainloop() без неё ничего не заработает.
 
Все вставил точно, вот скрин:
 

Вложения

  • 1.png
    1.png
    73,5 КБ · Просмотры: 266
В чём конкретно вопрос? Кто вообще код GUI-программы в консоль вставляет. Сделайте файл с любым названием, например generator.py и запустите в консоли python generator.py
 
Все понял, я балбес))). Можно ещё вопрос по расчету количества возможных паролей при например цифрах без 0 и букв английского алфавита большими.
 
Все понял, я балбес))). Можно ещё вопрос по расчету количества возможных паролей при например цифрах без 0 и букв английского алфавита большими.

Вот простейшая программа для подсчёта комбинаций. В переменной x пишете нужные символы.


Python:
def choose_symbols():
    print("Подсчёт комбинаций\n")
    x = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789')
    return x


def check(mix):
    numbers = input('Количество символов в слове: ')
    if numbers == '0':
        print("Ошибка! Введите целое число больше нуля!")
        return check(mix)
    elif numbers.isdigit():
        print('Количество комбинаций:', len(mix)**int(numbers))
    else:
        print("Ошибка! Введите целое число больше нуля!")
        return check(mix)


if __name__ == "__main__":
    check(choose_symbols())
 
Я положу сюда готовые файлы, гляньте почему не работают, нужные буквы и цифры я оставил. либо помогите доделать эти файлы и снова сюда положите я заберу ну и все кому нужно тоже.Спасибо.
 

Вложения

  • 1.zip
    1.zip
    1,4 КБ · Просмотры: 238
Последнее редактирование:
Можно юзать import string. Не надо будет этого хардкода с chars
 
Ну раз я сам заикнулся о варианте с сохранением в файл, то решил добавить эту функцию в программу. Теперь можно сгенерированные списки паролей сохранять.
Python:
# -*- coding:utf -8 -*-
#!/usr/bin/python3
__version__ = 'Version: 1.1'
from tkinter import *
import random
import string
from tkinter import filedialog as fd

root = Tk()
root.resizable(width=False, height=False)
root.title("Генератор паролей  " +str(__version__))
root.geometry("450x324+300+300")
calculated_text = Text(root,height=14, width=50)

def erase():  
    calculated_text.delete('1.0', END)

chars = '+-/*!&$#?=@<>abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'

def password():
    for n in range(int(number_entry.get())):      
        password =''
        for i in range(int(length_entry.get())):
            password += random.choice(chars)
        calculated_text.insert(END, password + "\n")

def savepass():
    file_name = fd.asksaveasfilename(filetypes=(("TXT files", "*.txt"),                                      
                                                ("All files", "*.*")),defaultextension='')
    f = open(file_name, 'w')
    s = calculated_text.get(1.0, END)
    f.write(s)
    f.close()
       
display_button = Button(text="Сгенерить", command=password)
erase_button = Button(text="Очистить", command=erase)
save = Button(text="Сохранить", command=savepass)

number_entry = Entry(width=10, justify=CENTER)
length_entry = Entry(width=10, justify=CENTER)
number_entry.insert(0, "8")
length_entry.insert(0, "25")
   
number_label = Label(text="      Количество паролей")
length_label = Label(text="      Длина пароля")
number_label.grid(row=0, column=0, sticky="w")
length_label.grid(row=1, column=0, sticky="w")
number_entry.grid(row=0,column=1, padx=1, pady=5)
length_entry.grid(row=1,column=1, padx=1, pady=5)

save.grid(row=3, column=2, padx=50, pady=5, sticky="w")
display_button.grid(row=3, column=0, padx=30, pady=5, sticky="e")
erase_button.grid(row=3, column=1, padx=30, pady=5, sticky="e")

scrollb = Scrollbar(root, command=calculated_text.yview)
scrollb.grid(row=4, column=3, sticky='nsew')
calculated_text.grid(row=4, column=0, sticky='nsew', columnspan=3)
calculated_text.configure(yscrollcommand=scrollb.set)

root.mainloop()
Посмотреть вложение 22189
А как тут задать обязательное условие не менее одной цифры и буквы в верхнем регистре?
не все пароли генерируются с использованием цифр и регистра.
 
А как тут задать обязательное условие не менее одной цифры и буквы в верхнем регистре?
не все пароли генерируются с использованием цифр и регистра.
Можно проверять регексом. Если не прошло - перегенерировать.
 
У меня это работает так:

количество паролей?
2
длина пароля?
5
*
*D
*DG
*DGv
*DGvf
w
we
we1
we1N
we1NZ
[Program finished]

Как убрать те, что короче пяти символов?
Должно быть так:

import time, os, random

chrs = '+-/*!&$#?=@<>abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'

file = open("test.txt", "w", encoding="utf-8")

number = int(input(" Кол-во паролей: "))
length_pass = int(input(" Длина пароля: "))

for n in range(number):
password =''
for i in range(length_pass):
password += random.choice(chrs)
if len(password) == length_pass:
password += "\n"
print(password)
file.write(password)
file.close()
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Курс AD