Created
May 21, 2026 19:20
-
-
Save 4DRIAN0RTIZ/49c374246e0f44a17d16fdc401e30015 to your computer and use it in GitHub Desktop.
CLI password generator, zero deps
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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