Pular para o conteúdo

Script gerador de senha

Dica publicada em Linux / Segurança
Xerxes xerxeslins
Hits: 1.480 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

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!

Jogue de graça Brutal Doom: Hell on Earth Starter Pack

Brutal DOOM no Slackware

Thunar fechando quando se clica em ícones (RESOLVIDO)

Realizar overclock no Miyoo Mini (plus ou normal)

Menu do OpenSuSE no Arch Linux

SNMP Scan no OCS Inventory só funciona com HTTPS corretamente configurado

Descobrindo informações variadas do alvo pelo BackTrack 4

Proteja os seus dados - criptografia

Como evitar execução de backdoors em diretórios de upload do teu site

Bloqueando arquivos até para o root

Contribuir com comentário

Entre na sua conta para comentar.