Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.603 ]
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
Script em Xdialog para montar/desmontar dispositivos
Instalação e desinstalação do Flash Player
Advix - controle de processos judiciais para advogados
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Instalar Dual Boot, Linux+Windows. (8)
Eaí? Já programou no windows? (2)
Erro ao enviar arquivos para o Storage Synology NAS (0)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









