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 :
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 !