Skip to content

Instantly share code, notes, and snippets.

@4DRIAN0RTIZ
Created May 21, 2026 19:20
Show Gist options
  • Select an option

  • Save 4DRIAN0RTIZ/49c374246e0f44a17d16fdc401e30015 to your computer and use it in GitHub Desktop.

Select an option

Save 4DRIAN0RTIZ/49c374246e0f44a17d16fdc401e30015 to your computer and use it in GitHub Desktop.
CLI password generator, zero deps
#!/usr/bin/env python3
"""
Generador de contraseñas Python.
Este script genera una contraseña aleatoria basada en los siguientes criterios:
- Longitud de la contraseña.
- Incluir letras mayúsculas.
- Incluir letras minúsculas.
- Incluir números.
- Incluir símbolos.
- Integrar firma opcional.
Autor: 4DRIAN0RTIZ
Versión: 1.1.0
Fecha: 24-12-2024
"""
import random
import string
import argparse
def generar_contrasenia(longitud, incluir_mayusculas, incluir_minusculas, incluir_numeros, incluir_simbolos, firma):
"""
Genera una contraseña basada en los parámetros especificados.
Args:
longitud (int): La longitud de la contraseña a generar.
incluir_mayusculas (bool): Incluir letras mayúsculas en la contraseña.
incluir_minusculas (bool): Incluir letras minúsculas en la contraseña.
incluir_numeros (bool): Incluir números en la contraseña.
incluir_simbolos (bool): Incluir símbolos en la contraseña.
firma (str): Una firma opcional para añadir al final de la contraseña.
Returns:
str: La contraseña generada.
"""
caracteres = ""
if incluir_mayusculas:
caracteres += string.ascii_uppercase
if incluir_minusculas:
caracteres += string.ascii_lowercase
if incluir_numeros:
caracteres += string.digits
if incluir_simbolos:
caracteres += "!@#$%^&*"
if not caracteres:
raise ValueError("Debe incluir al menos un tipo de carácter (mayúsculas, minúsculas, números o símbolos).")
# Asegurarse de que la longitud solicitada no sea negativa
if longitud <= 0:
raise ValueError("La longitud de la contraseña debe ser mayor que la longitud de la firma más 1.")
contrasenia = []
while len(contrasenia) < longitud:
contrasenia.append(random.choice(caracteres))
final_contrasenia = "".join(contrasenia)
if firma:
final_contrasenia += f"_{firma}"
return final_contrasenia
def main():
parser = argparse.ArgumentParser(description="Generador de contraseñas aleatorias.")
parser.add_argument("-l", "--longitud", type=int, required=True, help="Longitud de la contraseña.")
parser.add_argument("-m", "--mayusculas", action="store_true", help="Incluir letras mayúsculas.")
parser.add_argument("-n", "--minusculas", action="store_true", help="Incluir letras minúsculas.")
parser.add_argument("-d", "--digitos", action="store_true", help="Incluir números.")
parser.add_argument("-s", "--simbolos", action="store_true", help="Incluir símbolos.")
parser.add_argument("-f", "--firma", type=str, help="Firma opcional para agregar al final de la contraseña.")
args = parser.parse_args()
contrasenia = generar_contrasenia(
args.longitud, args.mayusculas, args.minusculas, args.digitos, args.simbolos, args.firma
)
print(contrasenia)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment