Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.260 ]
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 para atualização de sistemas Debian, Ubuntu e variáveis.
Monitorando tentativas de conexões
Download, instalação e atualização de utilitários para Ubuntu
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)