Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.205 ]
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
Bloquear Whatsapp, Facebook, Youtube e outros pelo IPTABLES
Script Para Manutenção de usuários do Sistema
Biblioteca de cores para o Bash
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Problema com nome composto e organização na tela do yad (0)
Formatando cartão de memoria que nao formata[AJUDA] (18)
Primeira vez utilizando Linux Ubuntu 22.04 e já tenho problemas… (5)
warsaw parou de funcionar após atualização do sistema (solução) (1)