Script gerador de senha

Publicado por Xerxes em 12/06/2024

[ Hits: 274 ]

 


Script gerador de senha



Basta executar o script a seguir e você poderá obter diversos tipos de senhas. A explicação do script vem logo a seguir.

Abra um novo arquivo de texto e cole o seguinte conteúdo:

#!/bin/bash

# Função para gerar uma senha
gerar_senha() {
local comprimento=$1
local usar_numeros=$2
local usar_caracteres_especiais=$3
local usar_letras_maiusculas=$4
local usar_letras_acentuadas=$5

# Base da senha apenas com letras minúsculas
local caracteres='abcdefghijklmnopqrstuvwxyz'

# Adicionar números
if [[ $usar_numeros == 's' ]]; then
caracteres+='0123456789'
fi

# Adicionar letras maiúsculas
if [[ $usar_letras_maiusculas == 's' ]]; then
caracteres+='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
fi

# Adicionar letras acentuadas
if [[ $usar_letras_acentuadas == 's' ]]; then
caracteres+='áéíóúâêîôûàèìòùãõäëïöüç'
fi

# Adicionar caracteres especiais
if [[ $usar_caracteres_especiais == 's' ]]; then
caracteres+='!@#$%^&*()_+=-[]{}|;:,.<>?'
fi

# Gerar senha
senha=''
for i in $(seq 1 $comprimento); do
senha+="${caracteres:RANDOM % ${#caracteres}:1}"
done

echo -e "\nSenha gerada usando as seguintes opções:"
echo " - Quantidade de caracteres: $comprimento"
echo " - Incluir números: ${usar_numeros^^}"
echo " - Incluir caracteres especiais: ${usar_caracteres_especiais^^}"
echo " - Incluir letras maiúsculas: ${usar_letras_maiusculas^^}"
echo " - Incluir letras acentuadas: ${usar_letras_acentuadas^^}"
echo -e "\nSenha gerada: $senha"
}

# Perguntar ao usuário as configurações da senha
read -p "Quantidade de caracteres na senha: " comprimento
read -p "Incluir números? (s/n): " usar_numeros
read -p "Incluir caracteres especiais? (s/n): " usar_caracteres_especiais
read -p "Incluir letras maiúsculas? (s/n): " usar_letras_maiusculas
read -p "Incluir letras acentuadas? (s/n): " usar_letras_acentuadas

# Chamar a função para gerar a senha
gerar_senha $comprimento $usar_numeros $usar_caracteres_especiais $usar_letras_maiusculas $usar_letras_acentuadas

Salve o arquivo com o nome que desejar como por exemplo "gerador_de_senhas.sh".

Trone-o executável:

chmod +x gerador_de_senhas.sh

Execute-o:

./gerador_de_senhas.sh

O script é simples e não é a prova de usuário. Por exemplo, quando for perguntado quantos caracteres a senha deve ter, se o usuário digitar algo sem sentido como "b", o script continua. Só não vai funcionar.

Segue a explicação do script:

  • #!/bin/bash: Esta linha indica que o script deve ser executado usando o interpretador Bash.
  • gerar_senha() { ... }: Esta sintaxe define uma função chamada gerar_senha. Funções em Bash ajudam a organizar o código de forma reutilizável.
  • local comprimento=$1: Esta linha define uma variável local chamada comprimento e a atribui ao primeiro argumento passado para a função ($1).
  • local usar_numeros=$2, local usar_caracteres_especiais=$3, local usar_letras_maiusculas=$4, local usar_letras_acentuadas=$5: Definem variáveis locais para os outros argumentos que serão passados para a função.
  • local caracteres='abcdefghijklmnopqrstuvwxyz': Cria uma variável chamada caracteres inicializada apenas com letras minúsculas.
  • if [[ $usar_numeros == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir números. Se sim (== 's'), adiciona a sequência '0123456789' à variável caracteres.
  • if [[ $usar_letras_maiusculas == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir letras maiúsculas. Se sim, adiciona letras maiúsculas à variável caracteres.
  • if [[ $usar_letras_acentuadas == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir letras acentuadas. Se sim, adiciona as letras acentuadas à variável caracteres.
  • if [[ $usar_caracteres_especiais == 's' ]]; then ... fi: Verifica se o usuário escolheu incluir caracteres especiais. Se sim, adiciona os caracteres à variável caracteres.
  • senha='': Inicializa uma variável chamada senha como uma string vazia.
  • for i in $(seq 1 $comprimento); do ... done: Cria um loop que executa de 1 até o valor de comprimento. Por exemplo, se comprimento for 12, o loop será executado 12 vezes.
  • senha+="${caracteres:RANDOM % ${#caracteres}:1}": Em cada iteração do loop, um caractere aleatório da variável caracteres é adicionado à variável senha.
  • echo -e "\nSenha gerada usando as seguintes opções:": Exibe uma mensagem informativa no terminal indicando que mostramos as opções usadas para gerar a senha. O -e habilita a interpretação de caracteres de escape (como \n para nova linha).
  • echo -e "\nSenha gerada: $senha": Exibe a senha gerada.
  • read -p "Quantidade de caracteres na senha: " comprimento: Exibe a pergunta ao usuário e armazena a resposta na variável comprimento.
  • read -p "Incluir números? (s/n): " usar_numeros: Exibe a pergunta ao usuário e armazena a resposta na variável usar_numeros.
  • read -p "Incluir caracteres especiais? (s/n): " usar_caracteres_especiais: Exibe a pergunta ao usuário e armazena a resposta na variável usar_caracteres_especiais.
  • read -p "Incluir letras maiúsculas? (s/n): " usar_letras_maiusculas: Exibe a pergunta ao usuário e armazena a resposta na variável usar_letras_maiusculas.
  • read -p "Incluir letras acentuadas? (s/n): " usar_letras_acentuadas: Exibe a pergunta ao usuário e armazena a resposta na variável usar_letras_acentuadas.
  • gerar_senha $comprimento $usar_numeros $usar_caracteres_especiais $usar_letras_maiusculas $usar_letras_acentuadas: Chama a função gerar_senha, passando as respostas do usuário como argumentos.

Curiosidade:

E o que significa "^^" em alguns lugares do script? O operador "^^" é utilizado com a notação "${variável^^}" para converter uma string para maiúsculas. Aqui está um exemplo para ilustrar:

Se você tiver a variável "usar_numeros" com o valor "s":
- "${usar_numeros^^}" converterá "s" para "S".

Teste no terminal:

variavel="olá, mundo!"
$ echo "${variavel^^}"


É isso!
Outras dicas deste autor

Invertendo botões touchpad no Xubuntu 11.04

Trinity Desktop no Linux Mint

Eliminando bordas feias ao usar Compiz no Xfce

Thunar fechando quando se clica em ícones (RESOLVIDO)

Trocando tela de login do Fedora 17

Leitura recomendada

A importância de rastrear comandos com o HISTFILE

Evintando envios de ping para o servidor

Backup com Arkeia Free

Atualização do Windows KB2536276 impede acesso ao Samba

Vídeo laboratório de Pentest - LFI a code execution

  

Comentários
[1] Comentário enviado por maurixnovatrento em 23/06/2024 - 20:26h

Muito bom esse script.
______________________________________________________________________
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