Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.595 ]
Por curiosidade e vontade de aprender resolvi criar um gerador de senhas.
Mas não queria que fosse um simples gerador de senhas, então o script está integrado com uma api que valida se a senha que foi criada está comprometida em algum vazamento de dados.
E caso o retorno da api informe que a senha está comprometida o script irá gerar uma nova senha até conseguir uma senha segura.
#!/bin/bash
repeat="True"
check_password_pwned() {
local password="$1"
local hashed_password
local hash_prefix
local hash_suffix
local response
local hash_suffix_from_response
hashed_password=$(echo -n "$password" | sha1sum | awk '{print $1}') # Obtém o hash SHA-1 da senha
hash_prefix=${hashed_password:0:5} # Obtém os primeiros 5 caracteres do hash
response=$(curl -s "https://api.pwnedpasswords.com/range/$hash_prefix")
hash_suffix=$(echo -n "$password" | sha1sum | awk '{print toupper($1)}' | cut -c 6-40)
while IFS= read -r line; do
hash_suffix_from_response=$(echo "$line" | cut -d ":" -f 1)
if [ "$hash_suffix" = "$hash_suffix_from_response" ]; then
echo -e "Mas esta senha foi encontrada em vazamentos conhecidos. Vamos gerar uma nova, aguarde.\n"
return 1 # Senha comprometida
fi
done <<< "$response"
echo "Esta senha não foi encontrada em vazamentos conhecidos."
return 0 # Senha não comprometida
}
# Função para gerar senha forte
generate_password() {
local password
# Usando /dev/urandom para gerar uma senha aleatória de 16 caracteres
password1=$(tr -dc '[:alnum:]!@#$%^&*()_+=' < /dev/urandom | head -c 6)
password2=$(tr -dc '[:alnum:]!@#$%^&*()_+=' < /dev/urandom | head -c 6)
password3=$(tr -dc '[:alnum:]!@#$%^&*()_+=' < /dev/urandom | head -c 6)
echo "$password1-$password2-$password3"
}
while [[ "$repeat" == "True" ]]; do
# Gera uma senha forte
strong_password=$(generate_password)
echo "Senha forte gerada: $strong_password"
check_password_pwned "$strong_password"
if [ $? -eq 0 ]; then
repeat="False"
fi
done
Slapt CP 1.0 - salvar os pacotes baixados no Gslapt
Reduz ou aumenta o tamanho da imagem
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (15)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









