Je cherche à mettre un mot de passe dans un script bash je m’explique :
avec read je demande un mot de passe, quand je l’entre il faut que le script vérifie s’il est bon. J’ai pas d’idée… Sauriez vous comment faire pour que ce soit TOTALEMENT sécurisé ?
Et en utilisant md5sum? (par exemple, ou un autre “système”… je ne suis pas sûr que md5 soit assez “solide” dans ce cas…) Tu fais la somme de ce qui est entré et tu la compare avec “l’empreinte” de ton mot de passe… … mais bon, ce n’est pas secure à 100% ça… rien n’empêche, par exemple, un bon vieux brute force des familles, si le pass est trop court… …
HASH="FBsDK2zxt0IXE"
read MOTDEPASSE
if [ `mkpasswd $MOTDEPASSE FB` = $HASH ] ; then
echo Yes man
else
echo go to hell
fi
essayez de trouver le mot de passe …
Merci pour toutes vos réponse oui c’est vrai que niveau sécurité c’est plutôt pour éviter que les nombreux utilisateurs de mon serv’ ne puisse lire le mdp et puis ils sont pas trop doué niveau prog donc ça va
Question à fran.b : ton script est opérationnel ?
Merci et désolé pour le délai entre chaques réponses
Je l’ai essayé en modifiant les variables marche pas mais ça me rappelle un peu ce que j’ai fait dans un script avec useradd où il faut crypter le mdp en md5 pour qu’il puisse etre reconnu par useradd ja sais pas…
[quote=“Excess”]Merci pour toutes vos réponse oui c’est vrai que niveau sécurité c’est plutôt pour éviter que les nombreux utilisateurs de mon serv’ ne puisse lire le mdp et puis ils sont pas trop doué niveau prog donc ça va
Question à fran.b : ton script est opérationnel ?
[/quote]
Ben oui
[quote]francois@totoche:~$ mkpasswd ploc FB
FBFh7VjzSuqpw
francois@totoche:~$ emacs /tmp/gre.sh
francois@totoche:~$ /tmp/gre.sh
ploc
Yes man
francois@totoche:~$ /tmp/gre.sh
grouc
go to hell
francois@totoche:~$ cat /tmp/gre
gre/ gre.sh
francois@totoche:~$ cat /tmp/gre.sh
#!/bin/sh
HASH="FBFh7VjzSuqpw"
read MOTDEPASSE
if [ mkpasswd $MOTDEPASSE FB = $HASH ] ; then
echo Yes man
else
echo go to hell
fifrancois@totoche:~$
[/quote]
FB dans cet exemple est appelé “SALT”: man crypt: salt is a two-character string chosen from the set [a–zA–Z0–9./]. This
string is used to perturb the algorithm in one of 4096 different ways.
[quote=“tukuyomi”]FB dans cet exemple est appelé “SALT”: man crypt: salt is a two-character string chosen from the set [a–zA–Z0–9./]. This
string is used to perturb the algorithm in one of 4096 different ways. [/quote]Mais dans ce cas la longueur du mot de passe prise en compte n’est que de 8 caractères, non? … je ne suis pas allé voir le man ( ) mais j’ai essayé “empiriquement”:$ mkpasswd 01234567 FB
FB/BqFT17mT9A
$ mkpasswd 012345678 FB
FB/BqFT17mT9A
Alors que sans le “salt”:$ mkpasswd 01234567
OquagfYktXQmo
$ mkpasswd 012345678
g6bJMks1Nsiig
[quote]francois@totoche:~$ mkpasswd 012345678 g6
g6bJMks1Nsiig
francois@totoche:~$ mkpasswd 01234567 Oq
OquagfYktXQmo
francois@totoche:~$ mkpasswd 012345678 Oq
OquagfYktXQmo
francois@totoche:~$ mkpasswd 01234567 g6
g6bJMks1Nsiig
francois@totoche:~$
[/quote]Seuls les 8 premiers caractères sont pris en compte (mais ça c’est connu sur ce type de mot de passe).
Quand tu ne précises pas la graine, celle ci est aléatoire:
Merci pour ces précisions… … donc avec mkpasswd on est “limité” à 8 caractères… avec ou sans “graine” … c’est ça? … (il me semble d’ailleurs avoir entendu il y a longtemps ça… c’était pas utilisé pour le hashage des pass “système” avant? … il me semble qu’un collègue m’avait dit qu’il s’en était apperçu “par hazard”… en faisant une faute dans son long mot de passe, après le 8eme caractère et que c’était passé… … mais ce ne sont que de vague souvenir… )
Absolument, cela dit un mot de passe de 8 caractères avec des chiffres majuscules et minuscules reste très sûr, ça te fait 281474976710656 possibilités soit à raison d’un test toutes les microsecondes, ça te fait en gros une espérance de 2-3 ans pour craquer un mot de passe. À mon avis c’est jouable. Avec johntheripper (en ayant le Hash), tu as une espérance de 1 an avant de craquer le mot de passe sur une machine 3.6GHz… Mias désormais c’est envisageable…
Si on met un “sleep 1” après le “go to hell”, ça fait un test par seconde au lieu d’un test par microseconde. Ca change un peu les calculs.
Sinon j’ai lu quelques trucs pour sécuriser un script shell :
#!/bin/sh -
PATH='/usr/local/bin:/usr/bin:/bin'
\export PATH
\unalias -a
hash -r # supprimer les commandes en memoire
ulimit -H -c 0 -- # pas de fichier core
umask 0077 # a adapter
Si on met un “sleep 1” après le “go to hell”, ça fait un test par seconde au lieu d’un test par microseconde. Ca change un peu les calculs.[/quote]Pas si on a accès aux “sources”… sleep ou pas, le hash tu l’as… …
#!/bin/sh
HASH="63ae418041958618dbc9c66cf47377ce"
read MOTDEPASSE
if [ `echo -n $MOTDEPASSE | md5sum | cut -f1 -d" "` = $HASH ] ; then
echo Yes man
else
echo go to hell
fi
[quote=“fran.b”]Mais on peut remplacer le mkpasswd par md5sum:
#!/bin/sh
HASH="63ae418041958618dbc9c66cf47377ce"
read MOTDEPASSE
if [ `echo -n $MOTDEPASSE | md5sum | cut -f1 -d" "` = $HASH ] ; then
echo Yes man
else
echo go to hell
fi[/quote]Arrête!!! t’es vraiment pas cool!!! j’ai pas encore fini de casser ton premier mot de passe… …