você está aqui: Home  → Arquivo de Mensagens

Como gerar senhas aleatórias a partir da linha de comando

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 11 de fevereiro de 2015

Existem diversas maneiras de se gerar senhas aleatórias. Esta dica irá mostrar algumas formas estranhas e interessantes de se fazer o mesmo usando a linha de comando.

  $ date +%s | sha256sum | base64 | head -c 32 ; echo
  YjQzMzA2MmQyMjAzYTc0NzUwNGEwMjc5

Fácil de guardar, não? Se você quiser que a senha gerada tenha menos caracteres, basta alterar o comando head -c 32. 32 é o número de caracteres que são selecionados do comando para exibir na senha. O comando head exibe por padrão o número de linhas, a opção "-c" muda o comportamento do programa para exibir um número determinado de bytes do arquivo ou da saida do comando.

O método a seguir utiliza o recurso /dev/urandom e filtra com o comando tr apenas os caracteres que normalmente usamos em senhas, letras maiúsculas e minúsculas e números.

   < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32};echo;
  oiixwchjBMtaprHoF4VdzRrZQxn9Kgcf

Ainda uma outra forma, usando a função rand do programa openssl.

  openssl rand -base64 32
  ETOARSsghkOrvJdYVpWgyrdqi+T9yrjhgzeg0SHyysM=

Para encerrar, uma maneira mais fácil de se gerar uma senha, usando o comando date:

  date | md5sum
  b948c540b63afd5e06bbd2756b3f783f  -

Para limitar o número de caracteres da senha:

  date | md5sum | head -c8 ; echo
  828e4863

Veja também

Este texto foi baseado em grande parte no artigo "10 Ways to Generate a Random Password from the Command Line"



 

 

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

Opinião dos Leitores

Rafael Bantu
17 Fev 2015, 11:23
Eu uso sempre o pwgen
Gustavo Chaves
11 Fev 2015, 08:48
Olá Queiroz.

Apesar de as senhas resultantes parecerem todas igualmente "aleatórias" há
uma diferença muito grande entre os exemplos dados. O comando "date" é muito
mais previsível que o "openssl rand" ou que o "cat /dev/urandom" e não
deveria ser usado pra gerar senhas seguras.

Suponha que um malfeitor saiba qual o comando que você usa pra gerar suas
senhas e também que sua senha atual tenha sido gerada nos últimos 12
meses. (Ele pode não saber mas "desconfiar fortemente". Por exemplo, ele
pode ser leitor do Dicas-L. :-)

Se você gerou sua senha com um dos comandos que usam o comando "date" como
entrada, então há "apenas" 31,6 milhões de senhas possíveis, i.e., o número
de segundos em um ano. Um algoritmo de força bruta deve ser capaz de
testá-las todas em questão de minutos ou horas.

Agora, se você gerou sua senha com um dos comandos que usam como entrada um
gerador de números aleatórios de qualidade (como os que você usou nos
exemplos acima) então o número de senhas que o malfeitor precisaria testar
por força bruta é função do tamanho da saída e não da entrada. Como você
está gerando senhas com 32 caracteres alfa-numéricos (63 caracteres
diferentes, considerando letras maiúsculas e minúsculas, além do underline),
o número de senhas possíveis é 63^32, ou 3,8*10^58 (se consegui ler minha
calculadora correramente). Ou seja, esses geradores são 1,2*10^50 vezes
"mais fortes" que os baseados no comando "date".

Go figure!
*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