Gerador de Senhas

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

[ Hits: 2.022 ]

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

Instalação do winehq-staging e do Lutris em Debian 11 (Bullseye) para o Origin

backup

Pesquisa por arquivos redundantes (idênticos)

M4L Player Console

Tocar listas de músicas usando mpg123 e kdialog ou Xdialog


  

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