anun1

lunes, 14 de abril de 2025

Crear un generador de contraseñas en python

Hola amigos hoy crearemos un generador de contraseñas en python, ya que estoy aprendiendo este lenguaje se me hiso interesante crear uno ya que podria servir para ser los keygen asi que empesamos

primero importamos las librerias a usar

from tkinter import Tk,Label,Button,Entry

from functools import partial 

import tkinter as tk

import random

luego crearemos la ventana con sus dimensiones, con su titulo y color asi

ventana=Tk()

ventana.title("Password Generator")

ventana.geometry("600x200")

ventana.config(bg="black") 

despues creamos una etiqueta que tendra como contenido password y declaramos su color de fondo,su color de letra, ancho, alto y posicion

etiqueta=Label(ventana,text="Password:",bg="black",fg="white")

etiqueta.place(x=100,y=5,width=70,height=30)

despues creamos el cuadro de texto donde se mostraran las contraseñas y con las mismas caracteristicas, ancho,color de fondo,color de letra,ancho,alto y posicion

texto=Entry(ventana,bg="black",fg="white",justify="center")

texto.place(x=180,y=10,width=300,height=20)

luego inicializamos la variable t en nulo

t=""

despues cremos 2 botones el cual uno sera para detener el generador de contraseñas y otro para generarlas automaticamente asi

boton1=Button(text="Generar",bg="black",fg="white",command=partial(inicio,"0"))

boton1.place(x=200,y=50)

boton2=Button(text="Detener",bg="black",fg="white",command=partial(inicio,"1"))

boton2.place(x=300,y=50)

estos botones al darle clic mandan llamar a una funcion llamada inicio, por ultimo mandamos llamar al metodo mainloop() de la ventana

ventana.mainloop()

asi que ahora pasaremos a crear las funciones primero haremos la funcion inicio esta

def inicio(n):

    global t

    t=n

    if t=="0":

       t="0" 

       etiqueta.after(100,star)

    elif t=="1":

       t="1"   

la variable t la usaremos como variable global para que pueda ser usada dentro de las fucniones, la funcion inicio recibe un valor y ese valor puede ser 0 o 1 cuando lo reciva se lo pasa a la variable global t y esta es comparada en el if si es igual a 0 ejecuta la funcion star la cual veremos adelante y es la encargada de generar las contraseñas y si es 1 no hace nada solo me asegure que si se vuelve a ejecutar la funcion inicio t siguiera valiendo 1 y deje de generar contraseñas...ahora pasamos a la funcion star

def star():

    cadena="ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz0123456789"

    n=random.randrange(15,30) #genera un numero al azar desde 15 a 30 que sera la longitud de la contraseña

    largo=len(cadena) #optiene la longitud de la variable cadena

    clave="" #inicializa la variable en nulo

    valor=texto.get() #extrae el contenido del campo de texto

    if valor!="": #pregunta si es diferente de nulo

        texto.delete(0,tk.END) #borra el contenido del campo de texto

    for x in range(0,n): #ciclo for se repite segun el valor de n

       digito=random.randrange(0,largo) #genera un numero al azar desde 0 a la longitud de la variable cadena

       clave+=cadena[digito:digito+1] #extrae el digito de la variable cadena y lo concatena en la variable clave

    texto.insert("end",clave) #inserta el valor de la variable clave al campo de texto     

    inicio(t) #manda llamar la funcion inicio

lo que hace esta funcion es inicializar la variable cadena con todos los digitos a usar en las contraseñas, yo puse esos solo para el ejemplo ustedes pueden agregarle mas como paréntesis u otros signos.

bueno despues inicializa la variable n en un rango de 15 a 30 digitos que es la longitud de la contraseña a generar, seguimos inicializando la variable largo que toma la longitud de la variable cadena y la variable clave es inicializada en nulo.

despues extraemos lo que contiene el campo de texto y lo pasamos a la variable valor y pregunta si es diferente de nulo con el comando if y si esta nulo sigue no entra al if pero si entra es borrado el contenido del campo texto.

luego entra al for donde la variable digito toma una posicion al azar con el comando random desde 0 a la longitud de la variable cadena y despues extraemos ese digito de la variable cadena y se le concatena a la variable clave....Saliendo del for al cuadro de texto se le incerta el valor de la variable clave que es la contraseña que se genero al azar para despues mandar llamar la funcion inicio.

bueno aqui el codigo completo

from tkinter import Tk,Label,Button,Entry
from functools import partial 
import tkinter as tk
import random

def star():
    cadena="ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz0123456789"
    n=random.randrange(15,30)
    largo=len(cadena)
    clave=""
    valor=texto.get()
    
    if valor!="":
        texto.delete(0,tk.END)
    
    for x in range(0,n):
       digito=random.randrange(0,largo)
       clave+=cadena[digito:digito+1]
    texto.insert("end",clave)     
    inicio(t) 
    
def inicio(n):
    global t
    t=n
    if t=="0":
       t="0" 
       etiqueta.after(100,star)
    elif t=="1":
       t="1"       
       
ventana=Tk()
ventana.title("Password Generator")
ventana.geometry("600x200")
ventana.config(bg="black")

etiqueta=Label(ventana,text="Password:",bg="black",fg="white")
etiqueta.place(x=100,y=5,width=70,height=30)

texto=Entry(ventana,bg="black",fg="white",justify="center")
texto.place(x=180,y=10,width=300,height=20)

t=""

boton1=Button(text="Generar",bg="black",fg="white",command=partial(inicio,"0"))
boton1.place(x=200,y=50)

boton2=Button(text="Detener",bg="black",fg="white",command=partial(inicio,"1"))
boton2.place(x=300,y=50)

ventana.mainloop()

 y les dejo una foto como ejemplo



bueno eso es todo saludos y espero les guste Flamer


No hay comentarios.:

Publicar un comentario