IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

procédure "mot de passe"


Sujet :

C

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut procédure "mot de passe"
    Bonjour,
    bon ça l air assez simple mais j ai toujours pas réussi a le faire.
    La plupart des méthodes trouvées sur internet sont assez complexes et je pense qu il devrait y avoir un moyen plus simple.

    En gros je veux juste faire une procédure qui demande un mot de passe (non visible lors de la frappe bien sur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int lancement(void)
    {
    	char mot_de_passe[10];
    	do
    	{
    		printf("Entrez le mot de passe de la console admin :");
    		fgets(mot_de_passe,sizeof mot_de_passe,stdin);
    		fclean(mot_de_passe,stdin);//nettoie en cas de dépassement du buffer et supprime le retour chariot
    	}while (strcmp(mot_de_passe, "distrib") != 0);
    	return TRUE;
    }
    ça marche bien mais le problème c est l'echo lorsque l'utilisateur entre son mot de passe
    quelqu un a une idée ?
    Merci

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 801
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    Bonjour,
    bon ça l air assez simple mais j ai toujours pas réussi a le faire.
    La plupart des méthodes trouvées sur internet sont assez complexes et je pense qu il devrait y avoir un moyen plus simple.

    En gros je veux juste faire une procédure qui demande un mot de passe (non visible lors de la frappe bien sur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int lancement(void)
    {
    	char mot_de_passe[10];
    	do
    	{
    		printf("Entrez le mot de passe de la console admin :");
    		fgets(mot_de_passe,sizeof mot_de_passe,stdin);
    		fclean(mot_de_passe,stdin);//nettoie en cas de dépassement du buffer et supprime le retour chariot
    	}while (strcmp(mot_de_passe, "distrib") != 0);
    	return TRUE;
    }
    ça marche bien mais le problème c est l'echo lorsque l'utilisateur entre son mot de passe
    quelqu un a une idée ?
    Merci
    Cela demande un petit travail de gestion d'écran et ce travail dépend de ton environnement de programmation
    Si t'es sur UniX/Linux, tu peux regarder du coté de la librairie "curses" qui possède un mode "noecho". Si t'es sur zindow, je sais pas

    Cependant, même si ton écran n'affiche plus le mot de passe, celui-ci apparait en clair dans ton code (distrib) et il suffit d'un simple outil d'analyse de code (même très bas de gamme) pour retrouver ledit mot de passe. Rien que le programme "strings" (qui extrait les chaines d'un exécutable) sous Unix peut suffire.
    Donc pour pas que ton mot de passe soit visible, il te faut implémenter dans ton code un algo de signature puis appliquer la procédure suivante
    - je fais saisir le mot de passe
    - je traite le mot saisi par l'algo de signature
    - je compare le résultat du traitement avec la signature stockée dans mon code => s'ils sont identiques, alors le mot de passe est bon

    Pour l'algo, tu peux utiliser MD5 (qui est d'ailleurs utilisé sur Linux pour vérifier les mots de passe des utilisateurs)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    sous linux je n aurais pas trop de souci a le faire, je ferais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/bin/sh
     
    while true
    do
    	stty -echo
    	read pass
    	stty echo
     
    	test `echo $pass+beaucoup_plus_dur |md5sum |cut -f1 -d' '` = "feaced0098320d2a83f1a43066dce8ba" && break
    	echo "mot de passe incorrect, veuillez ressayer"
    done
     
    echo "mot de passe correct, bienvenue"
    mais sous windows

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Cependant, même si ton écran n'affiche plus le mot de passe, celui-ci apparait en clair dans ton code (distrib) et il suffit d'un simple outil d'analyse de code (même très bas de gamme) pour retrouver ledit mot de passe. Rien que le programme "strings" (qui extrait les chaines d'un exécutable) sous Unix peut suffire.
    Donc pour pas que ton mot de passe soit visible, il te faut implémenter dans ton code un algo de signature puis appliquer la procédure suivante
    - je fais saisir le mot de passe
    - je traite le mot saisi par l'algo de signature
    - je compare le résultat du traitement avec la signature stockée dans mon code => s'ils sont identiques, alors le mot de passe est bon

    Pour l'algo, tu peux utiliser MD5 (qui est d'ailleurs utilisé sur Linux pour vérifier les mots de passe des utilisateurs)
    Effectivement, le mot de pass va passer en clair dans l'application.
    Mais ça ne veut pas dire que la méthode avec un md5 est beaucoup plus sécurisée si l'application est sur ton ordinateur Sous linux/Unix, on peut passer outre cette protection très simplement (par exemple en interceptant la fonction strcmp puisque le hash sera lui en clair)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    ouai mais moi je suis sur Windows

    bon j ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    	void mdp(void)
    {
    	char car;
    	int i;
    	int ret;
    	char tab[100]="";
     
    	printf("Entrez votre mot de passe puis appuyez sur entree");
    	do {
    		i = 0;
    		do {
    			car = getch();
    			tab[i]=car;
    			i++;
    		}while (car != 13);
    		tab[7] = 0;
    		if (strcmp(tab,"distrib") == 0) ret = TRUE;
    		else ret = FALSE;
    	}while (ret != TRUE);
    }
    ça marche c est sur mais c est terriblement moche

  6. #6
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Sous Windows si tu utilises la fonction ReadConsole() tu dois pouvoir changer l'écho avec SetConsoleMode(), ou utiliser une bibliothèque comme PDcurses.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par défaut
    ok merci, j ai pas windows.h ici mais jvé installer tout ce qui faut

  8. #8
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    L'utilisation de PDCurses a l'avantage de permettre une solution portable.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. procédure réinitialisation de mot de passe
    Par gene69 dans le forum Débuter
    Réponses: 2
    Dernier message: 17/11/2009, 13h52
  2. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo