Pular para o conteúdo

Gerador de Senhas

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.
Gustavo Gusta95
Hits: 3.794 Categoria: Shell Script Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download 7350.gerasenha Enviar nova versão

Esconder código-fonte

#!/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

Menu no terminal usando Shell Script

Convertendo rotas Linux para Fortigate

Automatizar a criação de domínios, sites e usuários de FTP

Backup mysqldump usando Shell Script

Relatórios do LightSquid por Grupos

Contribuir com comentário

Entre na sua conta para comentar.