Gerador de Senhas
Publicado por Gustavo (última atualização em 03/12/2023)
[ Hits: 3.143 ]
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
4net.sh - Calcula velocidade de transmissão na rede
Script para verificar o Status da bateria
Script para desligar o computador de acordo como login
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI