Desarrollo de un generador de contraseñas aleatorias

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás cómo crear un script generador de contraseñas aleatorias que cumpla con requisitos de seguridad específicos. El script generará una contraseña de 12 caracteres que incluya al menos un dígito, una letra mayúscula, una letra minúscula y un carácter especial del conjunto ><+-{}:.&;. Este proyecto te proporcionará experiencia práctica en scripting y en trabajar con datos aleatorios.

👀 Vista previa

$ cd /home/labex/project
$ sh genpass.sh
## Ejemplo
2Dsxw9+xS:27

🎯 Tareas

En este proyecto, realizarás lo siguiente:

  • Configurar el entorno del proyecto y crear el archivo de script necesario.
  • Implementar la lógica para generar una contraseña aleatoria que cumpla con los requisitos de complejidad especificados.
  • Probar el script generador de contraseñas para asegurarte de que funcione correctamente.

🏆 Logros

Al completar este proyecto, podrás:

  • Comprender el proceso de creación de un script generador de contraseñas aleatorias.
  • Implementar un algoritmo de generación de contraseñas que satisfaga requisitos específicos de tipos de caracteres.
  • Probar y validar las contraseñas generadas para confirmar que cumplen con los criterios deseados.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/tr("Character Translating") linux/VersionControlandTextEditorsGroup -.-> linux/vim("Text Editing") subgraph Lab Skills linux/echo -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} linux/test -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} linux/touch -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} linux/cd -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} linux/tr -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} linux/vim -.-> lab-301485{{"Desarrollo de un generador de contraseñas aleatorias"}} end

Configurar el entorno del proyecto

En este paso, prepararás tu entorno de trabajo y crearás el archivo necesario para el script generador de contraseñas.

  1. Abre tu terminal y navega hasta el directorio /home/labex/project utilizando el comando cd:

    cd /home/labex/project
  2. Crea un nuevo archivo llamado genpass.sh utilizando el comando touch. Este será el archivo donde escribirás tu script generador de contraseñas:

    touch genpass.sh
  3. Abre el archivo genpass.sh en un editor de texto. Puedes usar nano, vim o cualquier editor de texto que prefieras. Agrega la siguiente línea de shebang al principio del archivo:

    #!/bin/zsh
    
    ## Generador de contraseñas aleatorias
    ## Este script genera una contraseña aleatoria que cumple con los requisitos especificados.

    Esta línea le dice al sistema que use la shell zsh para ejecutar el script. Los comentarios que siguen a la línea de shebang proporcionan una breve descripción del script.

Implementar la lógica de generación de contraseñas

En este paso, agregarás la lógica central al script genpass.sh para generar contraseñas aleatorias que cumplan con los requisitos de complejidad.

  1. Dentro del archivo genpass.sh, agrega la siguiente función para generar la contraseña:

    ## Función para generar una contraseña aleatoria
    generate_password() {
      local length=12
      local password=''
    
      ## Caracteres especiales
      local special_chars='><+-{}:.&;'
      local special_char="${special_chars:$RANDOM%${#special_chars}:1}"
      password+="$special_char"
    
      ## Dígitos
      local digits='0123456789'
      local digit="${digits:$RANDOM%${#digits}:1}"
      password+="$digit"
    
      ## Letras mayúsculas
      local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      local upper="${upper_case:$RANDOM%${#upper_case}:1}"
      password+="$upper"
    
      ## Letras minúsculas
      local lower_case='abcdefghijklmnopqrstuvwxyz'
      local lower="${lower_case:$RANDOM%${#lower_case}:1}"
      password+="$lower"
    
      ## Caracteres restantes
      local remaining_length=$((length - 4))
      local characters='><+-{}:.&;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
      local num_characters=${#characters}
    
      for ((i = 0; i < remaining_length; i++)); do
        local random_char="${characters:$RANDOM%$num_characters:1}"
        password+="$random_char"
      done
    
      ## Mezclar el orden de los caracteres de la contraseña
      password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')
    
      echo "$password"
    }

    Esta función funciona de la siguiente manera:

    • Inicializa la contraseña con un carácter especial, un dígito, una letra mayúscula y una letra minúscula para cumplir con los criterios básicos.
    • Calcula el número de caracteres restantes para alcanzar la longitud deseada de 12.
    • Selecciona aleatoriamente los caracteres restantes de un grupo de dígitos, letras (mayúsculas y minúsculas) y caracteres especiales.
    • Mezcla la contraseña para asegurar que los caracteres específicos no estén siempre al principio.
  2. Agrega el siguiente código al final del archivo genpass.sh. Esta parte del script llama a la función generate_password e imprime la contraseña generada en la consola:

    ## Generar contraseña y mostrarla
    generate_password

Probar el generador de contraseñas

En este paso, probarás el script genpass.sh para asegurarte de que genere contraseñas que cumplan con todos los requisitos.

  1. Guarda el archivo genpass.sh en tu editor de texto.

  2. En la terminal, haz el script ejecutable utilizando el comando chmod:

    chmod +x genpass.sh

    Este comando agrega permisos de ejecución al archivo, lo que permite ejecutarlo como un programa.

  3. Ejecuta el script utilizando el siguiente comando:

    sh genpass.sh

    El script debería mostrar una contraseña aleatoria de 12 caracteres en la consola. La salida debe contener al menos un carácter especial, un dígito, una letra mayúscula y una letra minúscula.

    ## Ejemplo
    2Dsxw9+xS:27
  4. Ejecuta el script varias veces más. Cada vez, se debería generar una contraseña diferente. Esto verifica que la aleatoriedad del generador de contraseñas funcione correctamente.

¡Felicidades! Has implementado y probado con éxito un generador de contraseñas aleatorias que cumple con los requisitos de complejidad especificados.

✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto y creado un script generador de contraseñas aleatorias. Ahora tienes una base sobre la cual construir futuros proyectos de scripting.
Puedes continuar practicando con más laboratorios en LabEx para mejorar aún más tus habilidades.