Como verificar senha no shell script

Publicado por Cézar Augusto em 29/01/2019

[ Hits: 6.502 ]

Blog: https://www.cezarcampos.com.br/

 


Como verificar senha no shell script



Olá tudo bem? Se por alguma razão bem aleatória você quer pôr uma senha no seu shell script para dar acesso a determinada função, ou qualquer outra coisa (só depende de você), dá para verificar se ela está correta sem colocar a sua senha de verdade no código-fonte.

Método ERRADO

Aqui vou testar a autenticidade que, por incrível que pareça é bastante comum de se ver por aí.

#!bin/sh
echo Digite a sua senha...
read senha
if [ $senha -eq "102374" ] ; then
echo "Senha correta"
else
echo "Senha ERRADA!"
fi

Por que este método é errado? Colocar a senha em texto puro no script é uma tremenda falha de segurança, qualquer espertinho pode dar um grep no seu script e localizá-la. Mas como verificar a senha sem expô-la no shell script? Usando uma soma de verificação.

Sinta-se livre para testar o código abaixo e digite a mesma senha que estava exposta no código acima.

#!bin/sh
echo Digite a sua senha...
read senha
echo "dbbe235510a12c4ceea53cfa2150859e  senha" > senha.md5
echo $senha > senha
md5sum -c --status senha.md5
if [ $? -eq 0 ] ; then
echo "Senha correta"
else
echo "Senha ERRADA!"
fi
rm senha.md5 senha

Viu como funciona? Foi criado uma forma de verificação da senha ao invés de expor no código fonte o seu conteúdo cru. Bem mais seguro, sem falar que você pode usar verificações ainda mais pesadas como SHA256 ou SHA512.

Criando a soma de verificação

Para criar a soma de verificação da sua senha é simples. Faça no terminal:

echo sua_senha > arquivoqualquer

e depois:

md5sum arquivoqualquer

que vai sair com a soma de verificação da sua senha para você pô-la no código-fonte.

Outras dicas deste autor

Máscara simples em JavaScript

Como lidar com strings complicadas no PHP

Como montar arquivos .img do Android

Alterar resolução de tela pelo Xorg

Alterar resolução de tela pelo monitors.xml

Leitura recomendada

Substituir espaços em branco por underlines em nome de arquivos

Verificando disco de backup e enviando e-mail

Todos os logs com o multitail

Baixando jogos do ClickJogos - UOL

Gravando logs dos comandos digitados

  

Comentários
[1] Comentário enviado por edivandjs em 29/01/2019 - 13:54h

Muito legal, principalmente pra mim que estou iniciando no mundo da programação.

[2] Comentário enviado por hrcerq em 05/02/2019 - 23:06h

Boa dica. Eu não sei em qual shell você usou ou criou esse script. Mas no bash ainda poderia usar a opção "-s" do comando read, pra evitar que algum "espertinho" fique olhando pra sua tela enquanto você digita a senha. Infelizmente essa opção não faz parte do padrão posix.

---

Atenciosamente,
Hugo Cerqueira

Devuan - https://devuan.org/

[3] Comentário enviado por cizordj em 06/02/2019 - 11:26h


[2] Comentário enviado por hrcerq em 05/02/2019 - 23:06h

Boa dica. Eu não sei em qual shell você usou ou criou esse script. Mas no bash ainda poderia usar a opção "-s" do comando read, pra evitar que algum "espertinho" fique olhando pra sua tela enquanto você digita a senha. Infelizmente essa opção não faz parte do padrão posix.

Obrigado Hugo pelo detalhe que faltou rsrs eu não sabia desse parâmetro do read (se sabia também é porque me esqueci). Mas sim, realmente contribui pro script ficar mais seguro.

[4] Comentário enviado por tcboeira em 05/07/2019 - 14:35h

Bem bacana...
E se eu precisar testar uma senha, ou um nome de usuario que esteja no AD, de uma rede?
Um usuario de dominio?

[5] Comentário enviado por cizordj em 06/07/2019 - 21:15h


[4] Comentário enviado por tcboeira em 05/07/2019 - 14:35h

Bem bacana...
E se eu precisar testar uma senha, ou um nome de usuario que esteja no AD, de uma rede?
Um usuario de dominio?

Bom aí você vai ter acessar eles diretamente... Algum servidor SAMBA e tal, se o acesso não for negado a senha não está errada.

Mas essa dica que eu dei tem a ver com criptografia de senhas, você tem que ter elas baixadas na sua máquina para testar.

[6] Comentário enviado por msoliver em 09/05/2020 - 23:57h

Gostei Cesar.
Um detalhe.
Corrija o "shebang",
falta uma "/"
Uma melhoria.
Já que o parâmetro "--status", retorna "0 ou 1".....
Pode ser feito:
if md5sum -c --status senha.md5;then
echo "Senha correta";
else
echo "Senha INCORRETA";
fi
______________________________________________________________________
[b]Importante:[/b] echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts