Développement d'un générateur de mots de passe aléatoires

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à créer un script générateur de mots de passe aléatoires qui répond à des exigences de sécurité spécifiques. Le script générera un mot de passe de 12 caractères comprenant au moins un chiffre, une lettre majuscule, une lettre minuscule et un caractère spécial parmi l'ensemble ><+-{}:.&;. Ce projet vous offrira une expérience pratique en matière de scripting et de manipulation de données aléatoires.

👀 Aperçu

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

🎯 Tâches

Dans ce projet, vous allez :

  • Configurer l'environnement du projet et créer le fichier de script nécessaire.
  • Implémenter la logique pour générer un mot de passe aléatoire qui répond aux exigences de complexité spécifiées.
  • Tester le script générateur de mots de passe pour vous assurer qu'il fonctionne correctement.

🏆 Réalisations

Une fois ce projet terminé, vous serez en mesure de :

  • Comprendre le processus de création d'un script générateur de mots de passe aléatoires.
  • Implémenter un algorithme de génération de mots de passe qui répond à des exigences spécifiques en matière de types de caractères.
  • Tester et valider les mots de passe générés pour confirmer qu'ils répondent aux critères souhaités.

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{{"Développement d'un générateur de mots de passe aléatoires"}} linux/test -.-> lab-301485{{"Développement d'un générateur de mots de passe aléatoires"}} linux/touch -.-> lab-301485{{"Développement d'un générateur de mots de passe aléatoires"}} linux/cd -.-> lab-301485{{"Développement d'un générateur de mots de passe aléatoires"}} linux/tr -.-> lab-301485{{"Développement d'un générateur de mots de passe aléatoires"}} linux/vim -.-> lab-301485{{"Développement d'un générateur de mots de passe aléatoires"}} end

Configurer l'environnement du projet

Dans cette étape, vous allez préparer votre environnement de travail et créer le fichier nécessaire pour le script générateur de mots de passe.

  1. Ouvrez votre terminal et accédez au répertoire /home/labex/project en utilisant la commande cd :

    cd /home/labex/project
  2. Créez un nouveau fichier nommé genpass.sh en utilisant la commande touch. C'est dans ce fichier que vous écrirez votre script générateur de mots de passe :

    touch genpass.sh
  3. Ouvrez le fichier genpass.sh dans un éditeur de texte. Vous pouvez utiliser nano, vim ou tout éditeur de texte de votre choix. Ajoutez la ligne de shebang suivante au tout début du fichier :

    #!/bin/zsh
    
    ## Générateur de mots de passe aléatoires
    ## Ce script génère un mot de passe aléatoire qui répond aux exigences spécifiées.

    Cette ligne indique au système d'utiliser le shell zsh pour exécuter le script. Les commentaires suivants la ligne de shebang fournissent une brève description du script.

Implémenter la logique de génération de mot de passe

Dans cette étape, vous allez ajouter la logique principale au script genpass.sh pour générer des mots de passe aléatoires qui répondent aux exigences de complexité.

  1. À l'intérieur du fichier genpass.sh, ajoutez la fonction suivante pour générer le mot de passe :

    ## Fonction pour générer un mot de passe aléatoire
    generate_password() {
      local length=12
      local password=''
    
      ## Caractères spéciaux
      local special_chars='><+-{}:.&;'
      local special_char="${special_chars:$RANDOM%${#special_chars}:1}"
      password+="$special_char"
    
      ## Chiffres
      local digits='0123456789'
      local digit="${digits:$RANDOM%${#digits}:1}"
      password+="$digit"
    
      ## Lettres majuscules
      local upper_case='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      local upper="${upper_case:$RANDOM%${#upper_case}:1}"
      password+="$upper"
    
      ## Lettres minuscules
      local lower_case='abcdefghijklmnopqrstuvwxyz'
      local lower="${lower_case:$RANDOM%${#lower_case}:1}"
      password+="$lower"
    
      ## Caractères restants
      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
    
      ## Mélanger l'ordre des caractères du mot de passe
      password=$(echo "$password" | fold -w1 | shuf | tr -d '\n')
    
      echo "$password"
    }

    Cette fonction fonctionne de la manière suivante :

    • Elle initialise le mot de passe avec un caractère spécial, un chiffre, une lettre majuscule et une lettre minuscule pour répondre aux critères de base.
    • Elle calcule le nombre de caractères restants pour atteindre la longueur souhaitée de 12 caractères.
    • Elle sélectionne aléatoirement les caractères restants parmi un ensemble de chiffres, de lettres (majuscules et minuscules) et de caractères spéciaux.
    • Elle mélange le mot de passe pour s'assurer que les caractères spécifiques ne sont pas toujours au début.
  2. Ajoutez le code suivant à la fin du fichier genpass.sh. Cette partie du script appelle la fonction generate_password et affiche le mot de passe généré dans la console :

    ## Générer le mot de passe et l'afficher
    generate_password

Tester le générateur de mots de passe

Dans cette étape, vous allez tester le script genpass.sh pour vous assurer qu'il génère des mots de passe qui répondent à toutes les exigences.

  1. Enregistrez le fichier genpass.sh dans votre éditeur de texte.

  2. Dans le terminal, rendez le script exécutable en utilisant la commande chmod :

    chmod +x genpass.sh

    Cette commande ajoute les autorisations d'exécution au fichier, permettant de l'exécuter comme un programme.

  3. Exécutez le script en utilisant la commande suivante :

    sh genpass.sh

    Le script devrait afficher un mot de passe aléatoire de 12 caractères dans la console. La sortie devrait contenir au moins un caractère spécial, un chiffre, une lettre majuscule et une lettre minuscule.

    ## Exemple
    2Dsxw9+xS:27
  4. Exécutez le script plusieurs fois de plus. Chaque fois, un mot de passe différent devrait être généré. Cela vérifie que la génération aléatoire du mot de passe fonctionne correctement.

Félicitations! Vous avez réussi à implémenter et tester un générateur de mots de passe aléatoires qui répond aux exigences de complexité spécifiées.

✨ Vérifier la solution et pratiquer

Résumé

Félicitations! Vous avez terminé ce projet et créé un script générateur de mots de passe aléatoires. Vous disposez désormais d'une base solide pour vos futurs projets de scripting.
Vous pouvez continuer à vous entraîner avec plus de laboratoires sur LabEx pour améliorer encore vos compétences.