Back to blog
Jun 11, 2024
5 min read

Projet Bash : Générateur de Mot de Passe avec OpenSSL

Découvrez comment créer un script Bash simple mais puissant qui génère des mots de passe sécurisés et aléatoires en utilisant la robustesse cryptographique d'OpenSSL.

En m’initiant à la programmation Bash, j’ai commencé à expérimenter avec des scripts simples mais pratiques pour me familiariser avec le langage. L’un des premiers projets que j’ai entrepris est la création d’un générateur de mots de passe. Mon objectif était de m’assurer qu’il puisse générer des mots de passe forts et sécurisés, et l’utilisation d’OpenSSL a fourni la solution parfaite pour cela.

Dans le monde d’aujourd’hui, des mots de passe forts et aléatoires sont essentiels pour sécuriser les comptes en ligne et les données sensibles. Dans cet article, je vais vous guider à travers un simple script Bash qui génère des mots de passe aléatoires en utilisant l’outil OpenSSL. À la fin, vous aurez une compréhension claire de la manière de construire et d’utiliser un générateur de mots de passe sur votre machine Linux.

Le script complet

Voici le script complet pour référence. Nous allons le décomposer étape par étape ci-dessous.

#!/bin/bash

# Simple Password Generator

# Demande à l'utilisateur de donner la longueur du mot de passe souhaité
echo "Ceci est un générateur de mot de passe simple"
echo "Veuillez entrer la longueur souhaitée pour le mot de passe : "
read PASS_LENGTH

# Génère 5 mots de passe en boucle
for p in $(seq 1 5);
do
    openssl rand -base64 48 | cut -c1-$PASS_LENGTH
done

Comment ça fonctionne

1. Demande de saisie à l’utilisateur

Le script commence par demander à l’utilisateur la longueur souhaitée du mot de passe. La commande read stocke la valeur saisie par l’utilisateur dans la variable PASS_LENGTH.

echo "Ceci est un générateur de mot de passe simple"
echo "Veuillez entrer la longueur souhaitée pour le mot de passe : "
read PASS_LENGTH

Exemple : Si vous saisissez 12, le script générera des mots de passe de 12 caractères exactement.

2. Génération de données aléatoires avec OpenSSL

Cette commande est au cœur du générateur. Elle utilise OpenSSL pour générer un ensemble aléatoire d’octets, puis les encode en Base64.

openssl rand -base64 48
  • openssl rand : Cette sous-commande d’OpenSSL génère des données pseudo-aléatoires en utilisant des algorithmes cryptographiquement sécurisés.
  • -base64 : Ce drapeau assure que les octets aléatoires sont encodés en Base64. L’encodage Base64 convertit les données brutes en une chaîne qui inclut des lettres majuscules, des minuscules, des chiffres, et deux caractères spéciaux (+ et /).
  • 48 : Cela spécifie que 48 octets de données aléatoires seront générés. La sortie encodée sera plus longue que 48 caractères, mais cela garantit une entropie suffisante.

3. Coupe à la longueur désirée

C’est ici que la variable $PASS_LENGTH définie par l’utilisateur entre en jeu. La commande cut extrait uniquement les premiers $PASS_LENGTH caractères de la chaîne aléatoire générée.

cut -c1-$PASS_LENGTH
  • cut : Cette commande est utilisée pour “couper” des portions spécifiques de données d’entrée.
  • -c1-$PASS_LENGTH : Cet argument indique à cut d’extraire une plage de caractères, du premier (1) jusqu’au caractère dont la position correspond à la valeur de $PASS_LENGTH.

Pourquoi est-ce important ? Les chaînes encodées en Base64 sont généralement plus longues que nécessaire. Utiliser cut nous permet de réduire la chaîne à exactement le nombre de caractères demandé par l’utilisateur.

4. Répétition du processus

Cette ligne configure une boucle for qui répète le processus de génération de mot de passe cinq fois.

for p in $(seq 1 5);
do
    openssl rand -base64 48 | cut -c1-$PASS_LENGTH
done

$(seq 1 5) génère une séquence de nombres de 1 à 5, ce qui fait tourner la boucle cinq fois. À chaque itération, un nouveau mot de passe aléatoire est généré et affiché.

Exemple de sortie

Lorsque vous exécutez le script et spécifiez une longueur de 12, la sortie pourrait ressembler à ceci :

Screenshot - Générateur MDP OpenSSL

Ici, cinq mots de passe différents, chacun de 12 caractères, ont été générés. Vous pouvez choisir celui qui vous convient le mieux.

Conclusion

Ce script est un moyen simple et efficace de générer des mots de passe sécurisés en utilisant l’utilitaire OpenSSL. Il combine la robustesse cryptographique d’OpenSSL avec la capacité de Bash à manipuler les entrées pour créer des mots de passe aléatoires d’une longueur définie par l’utilisateur.

Ce n’est que le début de mon exploration des possibilités offertes par le scripting Bash. N’hésitez pas à l’expérimenter et à l’adapter à vos propres besoins !