Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.656 ]
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
Jogo de labirinto feito em shell script
Configuramdo proxy/Squid com Dialog
Instalar TDE em sistemas Debian
Script Basico para Tunnel Broker
Papagaiando o XFCE com temas e recursos
WhatsApp com Chamadas no Linux via Waydroid
XFCE - quase um Gnome ou Plasma mas muito mais leve
LXQT - funcional para máquinas pererecas e usuários menos exigentes
Removendo entradas de boot UEFI "fantasmas" via terminal
Atualizações de Segurança Automáticas no Debian
Como cortar as partes de um vídeo com passagens de áudio em branco
Tiling automático no KDE Plasma
SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado
Alguém tem que acabar com ANATEL!!! (2)
Uma pergunta bem simples mas não achei resposta (ainda) (0)
Reflexão sobre a sobrevivência do Gentoo Linux (6)









