você está aqui: Home  → Arquivo de Mensagens

Geração automática de senhas com makeky e encrippass

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 25 de Abril de 1997

Muitas instituições possuem a necessidade, de tempos em tempos, de criar um grande número de contas. A digitação de senhas consumiria um tempo enorme, requerendo a mobilização de um grande número de pessoas para suprir a esta demanda.

Para acelerar este processo pode-se gerar as senhas automaticamente e utilizar um outro programa para encripta-las. Para efetuar a encriptação das senhas pode-se usar o programa makekey ou similares. O programa makekey é encontrado no sistema operacional AIX. A plataforma Solaris não possui este programa mas a versão existente no SunOS funciona normalmente. Os exemplos que se seguem utilizam o programa makekey.

Por exemplo, para encriptar a senha xptouytr executar o comando

  echo xptouytr12 | makekey > encrippass

O arquivo encrippass irá conter a senha encriptada. O argumento para o programa makekey deve conter obrigatoriamente 10 caracteres sendo que os 8 primeiros consistem da senha que sera utilizada. (Para maiores detalhes sobre o programa makekey, consultar a manpage em anexo).

No nosso exemplo em particular o arquivo encrippass irá conter a string 12foa4VUwoL6E, que deve então ser inserida no arquivo /etc/passwd ou /etc/shadow, etc.

Deve-se tomar bastante cuidado com esta edição para evitar que erros de programação estraguem os arquivos passwd. Recomenda-se sempre que se gere um backup dos arquivos password antes da sua edição.

Outra recomendação importante é que todas as senhas criadas por este método sejam expiradas, requerendo do usuário a sua troca quando do primeiro login. A maneira de se implementar isto varia de sistema para sistema.

Deve-se também imprimir uma carta ao usuário contendo, além da identificação do usuário e sua senha, as normas e políticas de uso dos computadores.

Existem vários programas disponíveis para geração aleatória de senhas. Incluo a seguir o código fonte do programa genp.c, que pode ser utilizado com esta finalidade.

  -----------------------------  genp.c ----------------------------------------
  
  /* genp - generate pronounceable passwords.
   * David Sherman, The Law Society of Upper Canada, dave@lsuc.on.ca
   */
  
  #include <stdio.h>
  
  char pwd[100];
  char *vowels[]=
  {
  	"a",
  	"e",
  	"i",
  	"o",
  	"u",
  	"y",
  	"ai",
  	"ou",
  	"oy",
  	"ay",
  	"ow",
  	"ar",
  	"al",
  	"el",
  	"er",
  	"or",
  	"ax",
  	"ex",
  	"ix",
  	"il",
  	0
  };
  
  char *consonants[]=
  {
  	
  	"b",
  	"c",
  	"ch",
  	"d",
  	"dr",
  	"f",
  	"fl",
  	"g",
  	"h",
  	"j",
  	"k",
  	"kn",
  	"kr",
  	"m",
  	"n",
  	"p",
  	"s",
  	"sh",
  	"sm",
  	"sn",
  	"st",
  	"t",
  	"th",
  	"v",
  	"z",
  	0
  };
  
  
  main(argc, argv)
  	char **argv;
  {
  	register int maxvowels, maxcons;
  	int total;
  	register int r, i;
  	int j;
  	char **p;
  #define DEFTOTAL 1
  
  	if(argc < 2)
  		total = DEFTOTAL;
  	else
  		total = atoi(argv[1]);
  	if(total < 1)
  		total = DEFTOTAL;
  
  	for(p=vowels; *p; p++)
  		;
  	maxvowels = p-vowels;
  
  	for(p=consonants; *p; p++)
  		;
  	maxcons = p-consonants;
  
  
  	srand(getpid());
  
  	for(j=0; j<total; j++)
  	{
  		r = rand();
  		strcpy(pwd, consonants[r%maxcons]);
  		for(i=r%5; i>0; i--)
  			r = rand();
  		strcat(pwd, vowels[r%maxvowels]);
  		r = rand();
  		strcat(pwd, consonants[r%maxcons]);
  		for(i=r%7; i>0; i--)
  			r = rand();
  		strcat(pwd, vowels[r%maxvowels]);
  		r = rand();
  		strcat(pwd, consonants[r%maxcons]);
  		for(i=r%3; i>0; i--)
  			r = rand();
  		strcat(pwd, vowels[r%maxvowels]);
  		puts(pwd);
  	}
  }

--------------- man page makekey (aix 4.1.4) ----------------------

  makekey Command
  
  Purpose
  
  Generates an encryption key.
  
  Syntax
  
  makekey [ ASCIICharacters ... ]
  
  Description
  
  The makekey command generates an encryption key for use with programs
  that perform encryption. Its input and output are usually pipes.
  
  The makekey command reads 10 characters from standard input and writes
  13 characters to standard output. The first 8 of the 10 input characters
  can be any sequence of ASCII characters, as specified by the ASCIICharacters
  parameter. The last two input characters, called the salt, are chosen
  from the sets 0 through 9, a through z, A through Z, . (period), and
  / (slash). The salt characters are repeated as the first two characters
  of the output. The remaining 11 output characters are chosen from
  the same set as the salt and constitute the output key that you use
  as the encryption key parameter of programs that perform encryption.
  
  Examples
  
  Entering the following example at the command line generates an encryption
  key:
  
  makekey
  1234567890
  
  The makekey command generates an encryption key based on the input
  string 1234567890 and displays the following encryption key below,
  with the $_ (shell prompt) appearing immediately after the generated
  key and on the same line.
  
  90y744T/NXw1U$_
  
  Implementation Specifics
  
  Software Product/Option:	Base Operating System/ Base Application Development
  Toolkit
  
  Standards Compliance:	BSD 4.3
  
  Related Information
  
  The crypt, encrypt, or setkey subroutine.


Veja a relação completa dos artigos de Rubens Queiroz de Almeida

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script