Password non visibile da linea di comando in ansi c

di il
4 risposte

Password non visibile da linea di comando in ansi c

Ciao a tutti.. è possibile richiedere l'inserimento di una password da terminale (con scanf o altro) senza che sia in chiaro mentre l'utente la scive? tipo intercettando il carattere digitato e sostiuirlo con un * oppure bloccando il cursore senza fargli scrivere niente simulando quello che accade nelle richieste di password nei sistemi unix..

Grazie a tutti...

4 Risposte

  • Re: Password non visibile da linea di comando in ansi c

    Certo che si può:
    
    #include <stdlib.h>
    #include <stdio.h>
    
    #include <termios.h> //è necessario questa include affinchè tu possa utilizzare la funzione tcsetattr
    #include <string.h>
    
    static struct termios stored_settings;
    
    void echo_off(void)
    {
    	struct termios new_settings;
    	tcgetattr(0,&stored_settings);
    	new_settings = stored_settings;
    	new_settings.c_lflag &= (~ECHO);
    	tcsetattr(0,TCSANOW,&new_settings);
    	return;
    }
    
    void echo_on(void)
    {
    	tcsetattr(0,TCSANOW,&stored_settings);
    	return;
    }
    
    int main(){
    	
    	char pass[128];
    	
    	printf("Inserisci la password:\n");
    	
    	echo_off();
    	gets(pass);
    	echo_on();
    	
    	printf("Hai inserito %s\n",pass);
    	
    	return 0;
    }
    
    relativamente alla funzione tcsetattr, ti posto il link alla sua man:
    http://man.he.net/man2/tcsetatt

    spero di esserti stato utile, ciao
  • Re: Password non visibile da linea di comando in ansi c

    Grazie mille.. mi sei stato di grande aiuto.. ciao.. alla prossima...
  • Re: Password non visibile da linea di comando in ansi c

    Non avrei mai pensato di trovare una libreria del genere, mi avete fatto risparmiare non so quanto tempo, io già stavo pensando di rimappare la tastiera :? , grazie mille!!! :D


    Wiliam
  • Re: Password non visibile da linea di comando in ansi c

Devi accedere o registrarti per scrivere nel forum
4 risposte