Question sur fonction basique

Question sur fonction basique - C - Programmation

Marsh Posté le 02-03-2005 à 12:53:47    

c est une question de tuturial traduit de langlais par mes soins  :D  
 
le code suivant est utilise dans un programmme de verification de password.

Code :
  1. char user[10], passwd[10], crypt[10], cpwd[10];
  2. void encrypt () { ... }
  3. void getpwd() { ... }
  4. readwd (str)
  5.   char *str;
  6. {
  7.   int ch;
  8.   while ((ch = getchar ()) != '\n' && ch != EOF)
  9.     *str++ = ch;
  10.   *str = 0;  /* NULL terminate the string */
  11. }
  12. ...
  13.   /* Check user and password */
  14.   readwd (user);          /* Read in user's name */
  15.   getpwd (user, crypt);   /* Get user password from file */
  16.   echo_off ();            /* No echo while reading password */
  17.   readwd (passwd);        /* Read password from user */
  18.   echo_on ();
  19.   encrypt (passwd, cpwd); /* Encrypt password to compare */
  20.   if (strcmp (crypt, cpwd) != 0)) {
  21.     printf ("Bad password\n" );
  22.     exit (1);
  23.   }


 
Quelles characteristiques de l algo le rende raisonnablement securise.
What are the features of this password scheme which help make it reasonably secure?
 
le cryptage du pass ? encrypt (passwd, cpwd);
 
Le prog ci-dessus pose quelque problems quand a son implementation en C. Dans quelles mesures le programme de  verification de pass pourrait echouer dans loptique d une securite adequate.
 
cest la que je vois pas
 
The above scheme has some problems with the way it is implemented in C. In what ways might the above password checking facility fail to provide adequate security? (Hint: look carefully at readwd.)
 
merci, :hello:

Reply

Marsh Posté le 02-03-2005 à 12:53:47   

Reply

Marsh Posté le 02-03-2005 à 13:27:36    

xiluoc a écrit :


[cpp]
readwd (str)
  char *str;
{
  int ch;
 
  while ((ch = getchar ()) != '\n' && ch != EOF)
    *str++ = ch;
  *str = 0;  /* NULL terminate the string */
}


Etant donné que ce code ne vérifie pas la taille du tableau de destination, c'est un bug comme gets(). Classement vertical...
 
Et ceci dans un contexte de sécurité  
 
MOUARF!!!
 :lol:  :lol:  :lol:


Message édité par Emmanuel Delahaye le 02-03-2005 à 13:28:53

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-03-2005 à 13:44:46    

contexte de sécurité ?
une fonction comme gets, moi je considère qu'elle ne fonctionne tout simplement pas puisqu'elle ne me permet pas de lire une ligne ET de continuer mon programme :)

Reply

Marsh Posté le 02-03-2005 à 14:05:05    

Taz a écrit :

contexte de sécurité ?
une fonction comme gets, moi je considère qu'elle ne fonctionne tout simplement pas puisqu'elle ne me permet pas de lire une ligne ET de continuer mon programme :)


Je me suis mal exprimé. Je voulais dire qu'utiliser une telle fonction dans un contexte de sécurité (mot de passe) c'était à se rouler par terre !


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-03-2005 à 12:00:19    

je faisais que renchérir hein :)

Reply

Marsh Posté le 03-03-2005 à 12:42:34    

Taz a écrit :

je faisais que renchérir hein :)


Boujour le dialogue de sourd... :):):)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed