Gerador de Senhas

Publicado por Gustavo (última atualização em 03/12/2023)

[ Hits: 2.812 ]

Download 7350.gerasenha




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.

  



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

Scripts recomendados

Cadastrando usuários no Squid através de Shell Script

Enviar mensagem para os terminais ltsp

Papéis de parede aleatórios direto da internet

getw.bash

Xqemu! Uma interface gráfica simples para o qemu.


  

Comentários
[1] Comentário enviado por maurixnovatrento em 24/01/2024 - 21:13h

Bem elaborado.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro
Meu GitHub Pessoal: https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts