Est ce que quelqu'un connait une version Unix de scanf "aveugle",
permettant la saisie de mot de passe, soit en remplacant les caractères
par des *, soit en n'affichant rien du tout ?
--
Cordialement
Dominique MICOLLET Email : enlevez le .fr.fr
Universite de Bourgogne
9, Avenue Alain SAVARY BP 47870 Tel : +33/(0)3-80-39-59-27
21078 DIJON CEDEX FRANCE Tfx : +33/(0)3-80-39-68-69
Le 20/10/05 16:48, dans <4357ae25$0$18864$, « » a écrit :
Est ce que quelqu'un connait une version Unix de scanf "aveugle", permettant la saisie de mot de passe, soit en remplacant les caractères par des *, soit en n'affichant rien du tout ?
Aucun rapport avec le C standard, mais il existe des fonctions comme getpass (Unix V7, et tous les dérivés) ou readpassphrase (OpenBSD, Mac OS X...)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 20/10/05 16:48, dans <4357ae25$0$18864$636a55ce@news.free.fr>,
« Dominique.Micollet@u-bourgogne.fr.fr.fr »
<Dominique.Micollet@u-bourgogne.fr.fr.fr> a écrit :
Est ce que quelqu'un connait une version Unix de scanf "aveugle",
permettant la saisie de mot de passe, soit en remplacant les caractères
par des *, soit en n'affichant rien du tout ?
Aucun rapport avec le C standard, mais il existe des fonctions comme getpass
(Unix V7, et tous les dérivés) ou readpassphrase (OpenBSD, Mac OS X...)
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Le 20/10/05 16:48, dans <4357ae25$0$18864$, « » a écrit :
Est ce que quelqu'un connait une version Unix de scanf "aveugle", permettant la saisie de mot de passe, soit en remplacant les caractères par des *, soit en n'affichant rien du tout ?
Aucun rapport avec le C standard, mais il existe des fonctions comme getpass (Unix V7, et tous les dérivés) ou readpassphrase (OpenBSD, Mac OS X...)
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Patrick 'Zener' Brunet
Bonjour.
Je réponds à
Est ce que quelqu'un connait une version Unix de scanf "aveugle", permettant la saisie de mot de passe, soit en remplacant les caractères par des *, soit en n'affichant rien du tout ?
C'est pas trop un problème de C, ça relève des fonctions système de la console. Ca consiste à supprimer l'echo (retour du clavier vers l'écran). Il doit y avoir une manière propriétaire de le faire pour un matériel donné, mais je ne suis pas sûr que ça soit standardisé.
En demandant "unix console keyboard echo" à Google, il donne ça par exemple: http://wiki.tcl.tk/14693 et ça semble compatible avec Windows aussi.
Hope It Helps,
Cordialement,
-- /*************************************** * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe ***************************************/
Bonjour.
Je réponds à Dominique.Micollet@u-bourgogne.fr.fr.fr
<Dominique.Micollet@u-bourgogne.fr.fr.fr>
Est ce que quelqu'un connait une version Unix de scanf "aveugle",
permettant la saisie de mot de passe, soit en remplacant les
caractères par des *, soit en n'affichant rien du tout ?
C'est pas trop un problème de C, ça relève des fonctions système de la
console. Ca consiste à supprimer l'echo (retour du clavier vers l'écran). Il
doit y avoir une manière propriétaire de le faire pour un matériel donné,
mais je ne suis pas sûr que ça soit standardisé.
En demandant "unix console keyboard echo" à Google, il donne ça par exemple:
http://wiki.tcl.tk/14693
et ça semble compatible avec Windows aussi.
Hope It Helps,
Cordialement,
--
/***************************************
* Patrick BRUNET
* E-mail: lien sur http://zener131.free.fr/ContactMe
***************************************/
Est ce que quelqu'un connait une version Unix de scanf "aveugle", permettant la saisie de mot de passe, soit en remplacant les caractères par des *, soit en n'affichant rien du tout ?
C'est pas trop un problème de C, ça relève des fonctions système de la console. Ca consiste à supprimer l'echo (retour du clavier vers l'écran). Il doit y avoir une manière propriétaire de le faire pour un matériel donné, mais je ne suis pas sûr que ça soit standardisé.
En demandant "unix console keyboard echo" à Google, il donne ça par exemple: http://wiki.tcl.tk/14693 et ça semble compatible avec Windows aussi.
Hope It Helps,
Cordialement,
-- /*************************************** * Patrick BRUNET * E-mail: lien sur http://zener131.free.fr/ContactMe ***************************************/
Dominique.Micollet
Merci pour vos réponses bien que je ne sois pas dans le bon groupe (j'ai tendance à penser qu'il y a de C que sous Unix :-) )
-- Cordialement
Dominique MICOLLET Email : enlevez le .fr.fr Universite de Bourgogne 9, Avenue Alain SAVARY BP 47870 Tel : +33/(0)3-80-39-59-27 21078 DIJON CEDEX FRANCE Tfx : +33/(0)3-80-39-68-69
Merci pour vos réponses bien que je ne sois pas dans le bon groupe
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
--
Cordialement
Dominique MICOLLET Email : enlevez le .fr.fr
Universite de Bourgogne
9, Avenue Alain SAVARY BP 47870 Tel : +33/(0)3-80-39-59-27
21078 DIJON CEDEX FRANCE Tfx : +33/(0)3-80-39-68-69
Merci pour vos réponses bien que je ne sois pas dans le bon groupe (j'ai tendance à penser qu'il y a de C que sous Unix :-) )
-- Cordialement
Dominique MICOLLET Email : enlevez le .fr.fr Universite de Bourgogne 9, Avenue Alain SAVARY BP 47870 Tel : +33/(0)3-80-39-59-27 21078 DIJON CEDEX FRANCE Tfx : +33/(0)3-80-39-68-69
Targeur fou
wrote:
Bonjour,
Merci pour vos réponses bien que je ne sois pas dans le bon groupe (j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bon hé bien si c'est sous windows, tu peux regarder du côté des fonctions non-standard, des borlanderies ou microsofteries répondant aux noms de getch() (saisie sans écho). Pour chaque caractère saisi sans écho, tu réalises toi même l'écho avec le caractère exotique que tu veux, c'est l'unique partie dépendante de l'implémentation. Ensuite, disposant de la vraie chaine saisie dans un tampon, tu as tous les outils du C standard pour analyser la chaine comme tu le souhaites.
/* !! PAS PORTAB' !! */ void GetSecretLine(char * buff, int size) { int ch, cnt = 1;
/* Récup du premier car sans écho*/ ch = getch(); while (ch != 'n' && ch != 'r' && cnt <= size) { /* Prévention de saisie touches de fonction et flèches */ /* On passe */ if (ch == 0 || ch == 0xE0) { getch(); ch = getch(); continue; } /* On affiche * à la place (écho sur stdout) */ putc('*', stdout); buff[cnt-1] = ch; ++cnt; /* Récup du caractère suivant sans écho ...*/ ch = getch(); } /* On s'assure que l'on a une chaine litérale */ buff[cnt-1] = ' '; putc('n', stdout); }
int main(void) { char password[16] = { ' ' };
int incorrect = 1, numTentative = 0;
while (incorrect && numTentative < 3) { printf("Mot de passe (16 car. max) : "); fflush(stdout); GetSecretLine(password, 16); ++numTentative; if (strcmp(password, "fclcmaniac") == 0) { puts("OK"); incorrect = 0; } else { puts("Mot de passe incorrect"); } }
return 0; }
A+ Regis
Dominique.Micollet@u-bourgogne.fr.fr.fr wrote:
Bonjour,
Merci pour vos réponses bien que je ne sois pas dans le bon groupe
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bon hé bien si c'est sous windows, tu peux regarder du côté des
fonctions non-standard, des borlanderies ou microsofteries répondant
aux noms de getch() (saisie sans écho). Pour chaque caractère saisi
sans écho, tu réalises toi même l'écho avec le caractère exotique
que tu veux, c'est l'unique partie dépendante de l'implémentation.
Ensuite, disposant de la vraie chaine saisie dans un tampon, tu as tous
les outils du C standard pour analyser la chaine comme tu le souhaites.
/* !! PAS PORTAB' !! */
void GetSecretLine(char * buff, int size)
{
int ch, cnt = 1;
/* Récup du premier car sans écho*/
ch = getch();
while (ch != 'n' && ch != 'r' && cnt <= size)
{
/* Prévention de saisie touches de fonction et flèches */
/* On passe */
if (ch == 0 || ch == 0xE0) {
getch();
ch = getch();
continue;
}
/* On affiche * à la place (écho sur stdout) */
putc('*', stdout);
buff[cnt-1] = ch;
++cnt;
/* Récup du caractère suivant sans écho ...*/
ch = getch();
}
/* On s'assure que l'on a une chaine litérale */
buff[cnt-1] = ' ';
putc('n', stdout);
}
int main(void)
{
char password[16] = { ' ' };
int incorrect = 1, numTentative = 0;
while (incorrect && numTentative < 3)
{
printf("Mot de passe (16 car. max) : ");
fflush(stdout);
GetSecretLine(password, 16);
++numTentative;
if (strcmp(password, "fclcmaniac") == 0)
{
puts("OK"); incorrect = 0;
}
else {
puts("Mot de passe incorrect");
}
}
Merci pour vos réponses bien que je ne sois pas dans le bon groupe (j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bon hé bien si c'est sous windows, tu peux regarder du côté des fonctions non-standard, des borlanderies ou microsofteries répondant aux noms de getch() (saisie sans écho). Pour chaque caractère saisi sans écho, tu réalises toi même l'écho avec le caractère exotique que tu veux, c'est l'unique partie dépendante de l'implémentation. Ensuite, disposant de la vraie chaine saisie dans un tampon, tu as tous les outils du C standard pour analyser la chaine comme tu le souhaites.
/* !! PAS PORTAB' !! */ void GetSecretLine(char * buff, int size) { int ch, cnt = 1;
/* Récup du premier car sans écho*/ ch = getch(); while (ch != 'n' && ch != 'r' && cnt <= size) { /* Prévention de saisie touches de fonction et flèches */ /* On passe */ if (ch == 0 || ch == 0xE0) { getch(); ch = getch(); continue; } /* On affiche * à la place (écho sur stdout) */ putc('*', stdout); buff[cnt-1] = ch; ++cnt; /* Récup du caractère suivant sans écho ...*/ ch = getch(); } /* On s'assure que l'on a une chaine litérale */ buff[cnt-1] = ' '; putc('n', stdout); }
int main(void) { char password[16] = { ' ' };
int incorrect = 1, numTentative = 0;
while (incorrect && numTentative < 3) { printf("Mot de passe (16 car. max) : "); fflush(stdout); GetSecretLine(password, 16); ++numTentative; if (strcmp(password, "fclcmaniac") == 0) { puts("OK"); incorrect = 0; } else { puts("Mot de passe incorrect"); } }
return 0; }
A+ Regis
Targeur fou
wrote:
Merci pour vos réponses bien que je ne sois pas dans le bon groupe
Oui et non. La réponse C, c'est de conseiller de minimaliser ce qui est dépendant de l'implémentation pour ton cas, à savoir, faire la saisie de caractère sans écho.
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Ben non (voir le post boutade précédent, même si c'est un exple nul à chier ;-) ). Les fonctions C présentées ici http://www.erlenstar.demon.co.uk/unix/faq_4.html ne sont pas plus présentes dans la bibliothèque C standard que getch() par exemple. Par contre, il est vrai d'une part qu'Unix a été écrit en C et que les fonctions C Unix sont plus "standard" que d'autres, car elles ont été reprises pour beaucoup dans l'API C de POSIX (ce qui représente un grand avantage en terme de portabilité), et que des systèmes Unix, il y en beaucoup comme plate-formes statégiques (serveurs, calculateurs, etc..) et plate-formes de développement.
Mais ce n'est pas bien de penser qu'il n'y du C que sous Unix.
A+ Regis
Dominique.Micollet@u-bourgogne.fr.fr.fr wrote:
Merci pour vos réponses bien que je ne sois pas dans le bon groupe
Oui et non. La réponse C, c'est de conseiller de minimaliser ce qui
est dépendant de l'implémentation pour ton cas, à savoir, faire la
saisie de caractère sans écho.
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Ben non (voir le post boutade précédent, même si c'est un exple nul
à chier ;-) ). Les fonctions C présentées ici
http://www.erlenstar.demon.co.uk/unix/faq_4.html ne sont pas plus
présentes dans la bibliothèque C standard que getch() par exemple.
Par contre, il est vrai d'une part qu'Unix a été écrit en C et que
les fonctions C Unix sont plus "standard" que d'autres, car elles ont
été reprises pour beaucoup dans l'API C de POSIX (ce qui représente
un grand avantage en terme de portabilité), et que des systèmes Unix,
il y en beaucoup comme plate-formes statégiques (serveurs,
calculateurs, etc..) et plate-formes de développement.
Mais ce n'est pas bien de penser qu'il n'y du C que sous Unix.
Merci pour vos réponses bien que je ne sois pas dans le bon groupe
Oui et non. La réponse C, c'est de conseiller de minimaliser ce qui est dépendant de l'implémentation pour ton cas, à savoir, faire la saisie de caractère sans écho.
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Ben non (voir le post boutade précédent, même si c'est un exple nul à chier ;-) ). Les fonctions C présentées ici http://www.erlenstar.demon.co.uk/unix/faq_4.html ne sont pas plus présentes dans la bibliothèque C standard que getch() par exemple. Par contre, il est vrai d'une part qu'Unix a été écrit en C et que les fonctions C Unix sont plus "standard" que d'autres, car elles ont été reprises pour beaucoup dans l'API C de POSIX (ce qui représente un grand avantage en terme de portabilité), et que des systèmes Unix, il y en beaucoup comme plate-formes statégiques (serveurs, calculateurs, etc..) et plate-formes de développement.
Mais ce n'est pas bien de penser qu'il n'y du C que sous Unix.
A+ Regis
Emmanuel Delahaye
Par contre, il est vrai d'une part qu'Unix a été écrit en C et que les fonctions C Unix sont plus "standard" que d'autres, car elles ont
Tu veux sans doute dire 'portables'...
-- C is a sharp tool
Par contre, il est vrai d'une part qu'Unix a été écrit en C et que
les fonctions C Unix sont plus "standard" que d'autres, car elles ont
Le 21/10/05 16:03, dans <4358f550$0$18823$, « Emmanuel
Par contre, il est vrai d'une part qu'Unix a été écrit en C et que les fonctions C Unix sont plus "standard" que d'autres, car elles ont
Tu veux sans doute dire 'portables'...
Non, il veut dire standard au sens ISO 9945-1 et non pas standard au sens ISO 9899 :-)
Hors-sujet donc...
-- C is a sharp tool
Harpo
Antoine Leca wrote:
wrote:
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bien sûr. Comme l'écrivait Brian Kernighan en 1978
Production compilers also exist for several other machines, including the IBM System/370, the Honeywell 6000, and the Interdata 8/32.
Sous UNIX(md), probablement.
Je ne sais pas s'il existait de 'production compilers' C en 1978 sur IBM/370, ça devait être 'secret défense', je ne pense pas qu'ils aient montré de véléités avant le début des 80. Quand à Honeywell, si c'est ce truc d'informatique française pour lesquels j'ai travaillé un moment, il développaient un langage du style C, j'ai été employé sur le debugger, printer le stack, desassembler les instructions et ce genre de conneries plus chiantes que la mort, le chef du projet je ne l'ai jamais vu que derrière son bocal en verre dans lequel il devait peaufiner une notation BNF avec son stylo et du papier, je me suis cassé en oubliant de les en avertir. Il faudrait que je les appelle pour savoir si leur langage va bientôt sortir.
Antoine Leca wrote:
Dominique.Micollet@u-bourgogne.fr.fr.fr wrote:
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bien sûr. Comme l'écrivait Brian Kernighan en 1978
Production compilers also exist for several other machines,
including the IBM System/370, the Honeywell 6000, and the
Interdata 8/32.
Sous UNIX(md), probablement.
Je ne sais pas s'il existait de 'production compilers' C en 1978 sur
IBM/370, ça devait être 'secret défense', je ne pense pas qu'ils aient
montré de véléités avant le début des 80.
Quand à Honeywell, si c'est ce truc d'informatique française pour
lesquels j'ai travaillé un moment, il développaient un langage du style
C, j'ai été employé sur le debugger, printer le stack, desassembler les
instructions et ce genre de conneries plus chiantes que la mort, le
chef du projet je ne l'ai jamais vu que derrière son bocal en verre
dans lequel il devait peaufiner une notation BNF avec son stylo et du
papier, je me suis cassé en oubliant de les en avertir.
Il faudrait que je les appelle pour savoir si leur langage va bientôt
sortir.
(j'ai tendance à penser qu'il y a de C que sous Unix :-) )
Bien sûr. Comme l'écrivait Brian Kernighan en 1978
Production compilers also exist for several other machines, including the IBM System/370, the Honeywell 6000, and the Interdata 8/32.
Sous UNIX(md), probablement.
Je ne sais pas s'il existait de 'production compilers' C en 1978 sur IBM/370, ça devait être 'secret défense', je ne pense pas qu'ils aient montré de véléités avant le début des 80. Quand à Honeywell, si c'est ce truc d'informatique française pour lesquels j'ai travaillé un moment, il développaient un langage du style C, j'ai été employé sur le debugger, printer le stack, desassembler les instructions et ce genre de conneries plus chiantes que la mort, le chef du projet je ne l'ai jamais vu que derrière son bocal en verre dans lequel il devait peaufiner une notation BNF avec son stylo et du papier, je me suis cassé en oubliant de les en avertir. Il faudrait que je les appelle pour savoir si leur langage va bientôt sortir.