#1 Le 16/06/2013, à 23:13
- Crone123
[Résolu] Crypter un mot de passe en C/C++
Bonjour,
Je voudrais savoir comment crypter un mot de passe de façon a ce qu'il soit reconnu correctement par le système si on le met dans /etc/shadow
Je crois que la fonction crypt() le fait mais comment l'utiliser?
Merci
Dernière modification par Crone123 (Le 17/06/2013, à 13:51)
Hors ligne
#2 Le 17/06/2013, à 04:02
- grim7reaper
Re : [Résolu] Crypter un mot de passe en C/C++
Bonjour,
En lisant le man. Ce dernier est clair, et la fonction ne prends que deux paramètres donc tu devrais t’en sortir.
Hors ligne
#3 Le 17/06/2013, à 06:14
- pingouinux
Re : [Résolu] Crypter un mot de passe en C/C++
Bonjour,
Dans /etc/shadow, le mot de passe est encodé comme ceci :
$TYPE$SALT$MOT_DE_PASSE_CHIFFRÉ
On peut obtenir cette chaîne complète :
en shell
mkpasswd -m sha-512 "mot_de_passe" SALT # Si TYPE=6
en C
printf("%s\n",crypt("mot_de_passe","$TYPE$SALT$"));
Hors ligne
#4 Le 17/06/2013, à 13:12
- Crone123
Re : [Résolu] Crypter un mot de passe en C/C++
Donc si par exemple je veux comparer 2 mot de passes, celui de /etc/shadow et celui qu'as entré un utilisateur pour lequel je veux vérifier qu'il a bien un compte système et qu'il peut s'y connecter:
Je récupère TYPE et SALT de /etc/shadow pour le mot de passe de l'utilisateur, et je teste:
Si MDP_CRYPTE est bien égal a string(crypt(MDP_ENTRE.c_str(), string("$" + TYPE + "$" + SALT).c_str())) ?
Merci
Hors ligne
#5 Le 17/06/2013, à 13:19
- grim7reaper
Re : [Résolu] Crypter un mot de passe en C/C++
Ton programme est censé être exécuté par root ou par un utilisateur normal ?
Dernière modification par grim7reaper (Le 17/06/2013, à 13:19)
Hors ligne
#6 Le 17/06/2013, à 13:20
- Crone123
Re : [Résolu] Crypter un mot de passe en C/C++
Par root normalement, ce sera un daemon de gestion de mon serveur.
EDIT: Les commandes seront exécutées en tant que d'autres utilisateurs puisqu'à ce moment là "su" ne demande plus de mdp pour changer de compte.
Dernière modification par Crone123 (Le 17/06/2013, à 13:22)
Hors ligne
#7 Le 17/06/2013, à 13:50
- grim7reaper
Re : [Résolu] Crypter un mot de passe en C/C++
Ok.
Sinon oui, c’est bien comme ça qu’il faut faire la comparaison.
Hors ligne
#8 Le 17/06/2013, à 13:50
- Crone123
Re : [Résolu] Crypter un mot de passe en C/C++
OK Merci
Hors ligne
#9 Le 17/06/2013, à 14:07
- pingouinux
Re : [Résolu] Crypter un mot de passe en C/C++
Si MDP_CRYPTE est bien égal a string(crypt(MDP_ENTRE.c_str(), string("$" + TYPE + "$" + SALT).c_str())) ?
Il manque un $ après SALT, et le résultat de la commande
string(crypt(MDP_ENTRE.c_str(), string("$" + TYPE + "$" + SALT+"$").c_str()))
est
$TYPE$SALT$MOT_DE_PASSE_CHIFFRÉ
Hors ligne
#10 Le 17/06/2013, à 14:10
- Crone123
Re : [Résolu] Crypter un mot de passe en C/C++
Effectivement ça poserait un problème....
Merci
Hors ligne