Leitura de Senhas

Publicado por Fagner Amaral de Souza Candido 22/07/2008

[ Hits: 7.314 ]

Homepage: https://github.com/fagnercandido

Download senhaInv.c




Todas as vezes que lemos senhas, os caracteres são apresentados na tela. Isso talvez não seja o que você deseja.

Uma possível solução é a função getch, da conio.h. Mas ela não é portável. Observando o nosso querido Linux, ele também tem uma forma de fazer a leitura, sem que os caracteres da senha sejam apresentados(su, sudo su....).

O código que posto é bem simples, mas pode ajudar a muitos(espero).


Abraços a Todos

  



Esconder código-fonte

/*
   Autor : Fagner Candido
   E-mail : fagner7777777@gmail.com
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#define MAX_SENHA 10 // Máximo para a Senha


int main(int argc, char **argv){
   // Declarações
      /*Define as estrutura manipularão o terminal*/
      struct termios antigoTermios, novoTermios;
      char senha[MAX_SENHA];
   // Instruções
      /*
         Função que obtém as informações do Terminal
         file(stdin) : Entrada Padrão
         antigoTermios : Recebe as informações
      */
      tcgetattr(fileno(stdin), &antigoTermios);
      /*
         Atribuímos as características do terminal
         a estrutura
      */
      novoTermios = antigoTermios;
      /*
         Definimos uma Propriedade : Terminal não irá imprimir nada
      */
      novoTermios.c_lflag &= ~ECHO;
      printf("Informe a Senha : ");
      /*
         Novas Características ao Terminal
      */
      if(tcsetattr(fileno(stdin), TCSAFLUSH, &novoTermios ) != 0 ){  /*Caso dê erro*/
           printf("Erro!\n" );  
                exit(0);  
           }  
           else{  /*Caso dê Certo*/
           fgets(senha, MAX_SENHA, stdin);
                tcsetattr(fileno(stdin), TCSANOW, &antigoTermios );  
           }  
           printf("\nSenha : %s", senha); 
      return 0;

}

Scripts recomendados

utilities_linux.h - Biblioteca com diversas funções para o Linux

Exemplo de daemon em C II

Comando switch

Balanceamento de parênteses utilizando Pilha

Milesegundos em C


  

Comentários
[1] Comentário enviado por gabrield em 02/01/2010 - 08:54h

Muito bom!
Tinha lido esta dica há algum tempo mas nunca pensei que teria que usar, mas hoje me foi bem útil, parabéns e obrigado!
[]'s


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts