Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 smile

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 smile

Hors ligne

#9 Le 17/06/2013, à 14:07

pingouinux

Re : [Résolu] Crypter un mot de passe en C/C++

Crone123   #4 a écrit :

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.... yikes
Merci big_smile

Hors ligne