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 10/04/2008, à 12:02

WARDI

C : Ne pas afficher le caractaire lors d'une frappe sur clavier

Bonjour tout le monde ,
J'ai ecrit un programme C sous Ubuntu , Ce programme consiste a saisir un mots de LOGIN est un PASSWORD , verifier si ils existe dans un fichier predefinit ..

#include <stdio.h>
#include <string.h>

int main (void)
{
  FILE *user;
  char password[16];
  char login[16];
  char get_login[16];
  char get_pass[16];
  int test=0;
  
  user=fopen("/home/wardi/tst/login.txt","r");
  puts("done");
  if(user!=NULL) {
  	fscanf(user,"%s %s",login,password);
  	do {
  		printf("Login :\t");scanf("%s",get_login);
  		printf("Password :\t");scanf("%s",get_pass);
  		if(strcmp(get_login,login)!=0) {
  			puts("User not found!!");
  			test=1;
		} else if(strcmp(get_pass,password)!=0) {
			puts("Wrong password!!");
			test=1;
		} else {
			printf("Wellcome %s",login);
			test=0;
		}
	} while(test);
	fclose(user);
  } else  {
  		user=fopen("/home/wardi/tst/login.txt","w");
  		printf("New user :\n\n");
  		puts("Login :");scanf("%s",get_login);
  		printf("Password :\t");scanf("%s",get_pass);
  		fprintf(user,"%s %s",get_login,get_pass);
  		printf("Wellcome %s",get_login);
  		fclose(user);
	}
   return 0;

Je veut remplacer les caractaire saisie du get_pass par des etoile ,
a l'aide de la bibliotheque conio.h(qui n'existe pas sous linux ) utilisant la fonction getch() le frappe clavier n'apparait pas sur l'ecrant,  Est ce qu'il ya une fonction que le ressemble sur linux...
Merci d'avance..:-)

Hors ligne

#2 Le 10/04/2008, à 12:41

Karl_le_rouge

Re : C : Ne pas afficher le caractaire lors d'une frappe sur clavier

info libc
==> http://www.gnu.org/software/libc/manual/html_mono/libc.html#getpass
Au passage, tu NCurses qui offre des fonctionnalités similaires dont getch (qui est au passage définie dans la norme Posix)

[1] scanf saimal, utilise fgets plutôt.
[2] 1 l à Welcome, avec deux ailes, il risquerait de s'envoler.

Hors ligne

#3 Le 10/04/2008, à 13:47

Le Farfadet Spatial

Re : C : Ne pas afficher le caractaire lors d'une frappe sur clavier

Salut à tous !

   Contrairement à Karl_le_rouge, lorsque je regarde dans mes documentations de références sur la bibliothèque standard C et la bibliothèque POSIX.1, je ne trouve pas de fonction nommée « getch. » Par contre, dans l'en-tête « stdio.h, » je trouve les fonctions « getc, » « fgetc, » « getchar, » « ungetc, » « gets » et « fgets. » Cela dit, dans tout ça, je crains qu'il n'y ait pas exactement ce que recherche WARDI dans tout ça.

   Par contre, je suis entièrement d'accord avec Karl_le_rouge au sujet de « scanf » et « fgets, » « NCurses » (qui en plus a l'avantage d'être portable) et « welcome. » Il y a moyen de faire avec POSIX.1 ce que tu veux faire, WARDI, mais, en effet, avec NCurses, ce sera sans doute plus simple et portable.

   Enfin, si tu veux implémenter un système de mot de passe vraiment valable et pas simplement de la poudre aux yeux, quelques conseils :

   1. Ne pas faire de différence à l'affichage entre un nom d'utilisateur non valable et un mot de passe non valable. En effet, cette distinction donne trop d'information : quelqu'un qui essaye d'entrer par effraction pourra ainsi d'abord chercher des noms d'utilisateurs valables avant d'en chercher les mots de passe. Si, quoiqu'il arrive, tu fais saisir un nom d'utilisateur et un mot de passe et, en cas d'erreur tu ne dis que « saisie incorrecte, » alors tu donnes beaucoup moins d'information et donc rend la tâche plus difficile pour le pirate.

   2. Stocker les mots de passe en clair, c'est comme les afficher au vu et au su de tous. Il faut les crypter, a minima avec une somme MD5. De plus, il vaut mieux crypter toute la base de données. En effet, si dans la base les noms d'utilisateurs apparaissent en clair avec une connexion évidente avec les mots de passe, alors il peut être facile de court-circuiter le processus d'identification.

   3. Il est en effet préférable de ne pas afficher le mot de passe en clair lors de sa saisie. Cela dit, afficher des étoiles donne déjà une information importante : le nombre de caractère que contient le mot de passe. Il vaut mieux ne rien afficher du tout.

   Hé oui ! La sécurité en informatique, c'est un vrai problème !

   À bientôt.

                                                                                                                     Le Farfadet Spatial

Dernière modification par Le Farfadet Spatial (Le 10/04/2008, à 13:49)

Hors ligne

#4 Le 10/04/2008, à 15:34

Karl_le_rouge

Re : C : Ne pas afficher le caractaire lors d'une frappe sur clavier

@Le Farfadet Spatial: effectivement, je me suis trompé de standard pour getch, ce n'est pas Posix mais SUS (Single Unix Specification).
SUS définit également la présence d'une bibliothèque XSI Open/Curses, NCurses est censé être compatible avec la spécification.
http://www.unix.org/apis/2.r.html

Hors ligne

#5 Le 10/04/2008, à 17:30

nicolas.sitbon

Re : C : Ne pas afficher le caractaire lors d'une frappe sur clavier

PDCurses reste LA référence dans ce domaine, c'est la seule à ma connaissance à implémenter la totalité de SUS V3, et la seule à être vraiment portable (pas besoin de cygwin sous WIN32 par exemple wink).

Hors ligne

#6 Le 10/04/2008, à 18:04

gene69

Re : C : Ne pas afficher le caractaire lors d'une frappe sur clavier

@ Le Farfadet Spatial, point 1. entièrement d'accord, il ne faut pas donner d'informations supplémentaires au pirate. J'ajouterai qu'il y a bien longtemps ssh avait un bug: le temps de réponse entre un refus de connexion parce que le mot de passe était mauvais ou parce que le login est inexistant était trop différent et on arrivait ainsi à savoir quels users étaient définis.

je crois que dans la fac c de developpez ya un tutorial qui explique comment faire des saisies "raw". attention cependant: quand tu utilises les flux d'entrées sorties il se peut que d'autres processus y ait accès.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne