Notizia:
  • Rilasciata Precise Pangolin 12.04. Per ottenerla, visitate questa pagina, oppure provate il tour dal vivo con un browser web moderno.
  • Nuovo forum di Ubuntu-it, l'annuncio. È consigliato aggiornare il proprio profilo e controllare la sezione Gruppo Forum per problemi noti.
  • Rilasciata la versione italiana di Precise Pangolin 12.04. Per maggiori informazioni, consultare questa discussione.
  • Il vincitore del Concorso desktop del mese di aprile è Jerico. L'elenco dei precedenti vincitori è qui.
  • È uscito il numero 17 della Newsletter italiana di Ubuntu. Lo trovate a questo indirizzo.
  • È uscito il numero 59 di Full Circle Magazine in italiano. Lo trovate a questo indirizzo.

Mascherare password in c

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Mascherare password in c

Messaggioda ubuntujtr » martedì 16 gennaio 2007, 23:11

Ciao a tutti, volevo chiedervi se qualcuno conosce una funzione che svolga lo stesso compito della scanf, con la piccola differenza che non deve far visualizzare a schermo ciò che viene scritto dall'utente.
ubuntujtr
Prode Principiante
 
Messaggi: 26
Iscrizione: giugno 2006

Re: Mascherare password in c

Messaggioda ryuujin » martedì 16 gennaio 2007, 23:39

ubuntujtr ha scritto:Ciao a tutti, volevo chiedervi se qualcuno conosce una funzione che svolga lo stesso compito della scanf, con la piccola differenza che non deve far visualizzare a schermo ciò che viene scritto dall''utente.

una funzione standard no :)

devi usare le termios, ecco un esempio:
Codice: Seleziona tutto
#include stdio.h
#include stdlib.h
#include termios.h
#include unistd.h

int main(void)
{
   struct termios ts, old_ts;
   char passtr[1024];

   tcgetattr(STDIN_FILENO, &ts);
   old_ts = ts;

   ts.c_lflag &= ~ECHO;
   ts.c_lflag |= ECHONL;
   tcsetattr(STDIN_FILENO, TCSAFLUSH, &ts);

   //andrebbe controllato che il settaggio e'' andato a buon fine
   //andanod a rileggere le impostazioni del terminale e vedere se l''ECHO e'' stato disbilitato

   printf("bla bla password: ");
   fflush(stdout);
   fgets(passtr, 1025, stdin);
   
   tcsetattr(STDIN_FILENO, TCSANOW, &old_ts);

  return 0;
}


in pratica, devi cambiare le impostazioni del terminale e disabilitare l''ECHO. Le impostazioni vanno lette con tcgetattr e memorizzate in una struttura termios. Salvi le impostazioni originali in old_ts per ripristinarle dopo.

Disabiliti l''ECHO e abiliti l''ECHONL.

Fai immettere l''input all''utente...

Ripristini la console.

per delucidazioni man termios :P

r.
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
Avatar utente
ryuujin
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1015
Iscrizione: aprile 2006
Località: Pescara

Re: Mascherare password in c

Messaggioda difesaparcosempione » mercoledì 17 gennaio 2007, 14:08

puoi usare la getpass(3)

man getpass

devi includere < unistd.h >

ciao

;)
http://difesasempione.wordpress.com/
http://torino.pro-natura.it/
www.pattomutuosoccorso.org
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
 
Messaggi: 5178
Iscrizione: luglio 2006
Località: Torino

Re: Mascherare password in c

Messaggioda ubuntujtr » giovedì 18 gennaio 2007, 9:44

Grazie delle dritte stasere provo!!! (b2b)
ubuntujtr
Prode Principiante
 
Messaggi: 26
Iscrizione: giugno 2006


Torna a Programmazione

Chi c’è in linea

Visualizzano questa pagina: Nessuno e 4 ospiti