PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Passwort Check echo?



403
09-05-2006, 18:06
Hallo,

Ich habe hier einen sehr simplen Passwort Check, und mich stoert das
das Passwort auf der Console noch zu sehen ist, wie stellt man das denn
ab?



int check_pass() {
int valid_change;
struct passwd *p;
char user[100];
const char pword[100];
const char newpasswd[100];

printf("Enter Password:");
scanf("%s",&newpasswd);
if (strcmp(newpasswd,"foobar") == 0) {
fprintf(stderr, "password is valid\n");
valid_change = 1;

}
else {
fprintf(stderr, "password is not valid\n");
exit (1);
}

}

Joghurt
09-05-2006, 19:21
man 3 getpass

Edit: Oops. Ist als "obsolete" markiert.

In diesem Falle mach es besser so, wie hier beschrieben:
http://www.erlenstar.demon.co.uk/unix/faq_4.html

403
11-05-2006, 21:19
Hallo Joghurt :)

Danke, ich seh es mir mal an.
Bin grad dabei meine C Kentnisse aufzufrischen und es macht Spass :)
Ich poste das Ergebnis dann spaeter.


Gruss 403

403
12-05-2006, 13:37
Hm, hat etwas laenger gedauert, weil ich den Unterschied zwischen


1


printf("x1");
sleep(2);
printf("x2");

und

2


printf("x1\n");
sleep(2);
printf("x2\n");


noch nicht kannte. Ist jedenfalls auf FreeBSD6 so, das in 1 erst
geschlafen wird und dann gedruckt.




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


char p1() {
printf("Enter Password:\n");
}


char p2() {
printf("Re-Enter Password:\n");
}

int main(int argc, char * argv[]) {
char * z;
FILE *fp;

fp=(fopen("/tmp/x", "r+"));

p1();
z=getpass(stdin);
fwrite(z,1,1,fp);
sleep (2);
p2();
z=getpass(stdin);
//fwrite(z,1,fp);

fclose(fp);
return(0);
}


Gruss 403 :D

BLUESCREEN3D
12-05-2006, 13:47
printf("x1");
sleep(2);
printf("x2");
Hier könntest du auch vor dem sleep() ein fflush(stdout) aufrufen, falls du eigentlich keine Zeilenwechsel an der Stelle wolltest.



char p1()
char p2()
Hier solltest du char durch void ersetzen, da diese Funktionen keine Werte zurückgeben.

403
12-05-2006, 14:09
Hallo,

Danke fuer die Tips. fflush kannte ich noch gar nicht.

PS1=
Habe grade eine gute Ressource gefunden:
http://www.cs.cf.ac.uk/Dave/C/node1.htm