Générer un mot de passe aléatoire
Pour l’une de ces commandes de mot de passe aléatoire, vous pouvez soit les modifier pour afficher une longueur de mot de passe différente, soit vous pouvez utiliser les premiers caractères x du mot de passe généré si vous ne voulez pas un mot de passe trop long.
Cette méthode utilise SHA pour hachage de la date, passe à travers base64, puis les sorties des 32 premiers caractères.
1
| date +%s | sha256sum | base64 | head -c 32 ; echo
|
Cette méthode a utilisé la fonction intégrée /dev/urandom et filtre uniquement les caractères que vous utilisez normalement dans un mot de passe
1
| < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
|
Celui-ci utilise la fonction rand d’openssl, qui peut ne pas être installée sur votre système.
1
| openssl rand -base64 32
|
Celui-ci fonctionne comme l’autre urandom, mais fait juste le travail à l’envers
1
| tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
|
vous devez récupérer la chaine en variable pour le script, exemple :
1
| mdp=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w12 | head -n1)
|
Voici un autre exemple qui filtre à l’aide de la commande strings, qui génère des chaînes imprimables à partir d’un fichier, qui dans ce cas est la fonction urandom.
1
| strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
|
Voici une version encore plus simple de l’urandom.
1
| < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c6
|
Celui-ci parvient à utiliser la très utile commande dd.
1
| dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
|
Vous pouvez même créer un mot de passe aléatoire gauche, qui vous permettrait de taper votre mot de passe d’une seule main.
1
| </dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c8; echo ""
|
Si vous allez utiliser tout le temps, c’est probablement une meilleure idée de le mettre dans une fonction. Dans ce cas, une fois que vous exécutez la commande une fois, vous serez en mesure d’utiliser randpw chaque fois que vous souhaitez générer un mot de passe aléatoire. Vous voudrez probablement mettre cela dans votre fichier ~/.bashrc
1
| randpw(){ < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo;}
|
Vous pouvez utiliser cette même syntaxe pour en faire une de ces fonctions - il suffit de remplacer tout dans le {}
openssl : Générer des données aléatoires
Générer une chaine aléatoire de 128 octets encodée en BASE64 :
1
| $ openssl rand -base64 128
|
1
2
3
| 2/X1yDvXHdAsDYPBmToCNYFI9Vjhtt4ynVMFCcMfV0jJm+EytH22MEyMs7XV4rbB
6CdddwCD0T3sYu7hCF+Q5Dy72S3LKhZL5cbB8gaf2l+Guv/GCU/oiYTezRwLsAaN
82Sig1bnsyJeI3q67PsLS2yUhWTXiyRxv6/69EL/i30=
|
Générer une chaine aléatoire de 16 octets encodée en HEX :
1
| e114c246088060ef2af0b4f4f518b875
|
Conversion des minuscules en majuscules
1
| $ echo "e114c246088060ef2af0b4f4f518b875" | tr [a-f] [A-F]
|
1
| E114C246088060EF2AF0B4F4F518B875
|
Générer une chaine aléatoire de 20 octets encodée en HEX avec les lettres en majuscule:
1
| $ openssl rand -hex 20 | tr [a-f] [A-F]
|
1
| 7B4704BED590598DDC8394BE05F958A089BF92FD
|
Générer un fichier binaire de 1024 octets :
1
2
| $ openssl rand -out random-data.bin 1024
$ ls -l random-data.bin
|
1
| -rw-r--r-- 1 root root 1024 Apr 11 18:21 random-data.bin
|
Générer une chaine aléatoire de 64 octets en utilisant le fichier spécial /dev/urandom et encodée avec la commande openssl en BASE64 :
1
| $ head -c 64 /dev/urandom | openssl enc -base64
|
1
2
| 3wZ9RXe5bwCKzfEUElHOEJNb97SNN7QfKetKdSfAXvNhaiyCwWBWBEJupPAM2K/Q
6zx09thfwss2ffCGvencfg==
|
Un petit enchainement de commandes permettant de générer des mots de passe aléatoires :
1
| $ echo $(head -c 32 /dev/urandom | strings -1) | sed 's/[[:space:]]//g'
|