shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Lendo uma lista de possível senhas para uma lista de hosts


From: George Robinson
Subject: Lendo uma lista de possível senhas para uma lista de hosts
Date: Wed, 5 Jul 2017 18:49:34 -0300

Olá pessoal,

Estou tentando criar um formato para que eu consiga pegar uma lista de hosts, exemplo:

host1
host2
host3
....
host(n)

e para cada um desses, eu consiga testar uma lista de possíveis senhas.

Até o momento, eu consegui fazer uma comparação 1 para 1, ou seja, primeiro host com a primeira senha, e ele retorna se está correto ou não. Usei os seguintes scripts:

hosts_dev.txt:
host1
host2
host3

pws_dev.txt:
senha1
senha2
senha3

Utilizei um arquivo que testa as senhas pwtest.exp:

#!/usr/bin/expect -f
################################################################################################################
## Script para testar a conexao com servidor e checar se a senha do usuario root esta correta
## Utiliza o comando expect para fazer o acesso e inserir a senha ##
## Referencia: http://www.pantz.org/software/expect/expect_examples_and_tips.html ##
## Nix - 23/08/2013 ##
################################################################################################################
######### Variaveis #########
set timeout 5
set HOST [lindex $argv 0]
set PASS [lindex $argv 1]
log_user 0

## Inicializa a conexao SSH
spawn ssh -q -o StrictHostKeyChecking=no root@$HOST
## Mensagem de erro a ser exibida caso ocorra timeout na conexao SSH (prompt que solicita a senha nao eh exibido!)
## *assword eh para corresponder "Password" ou "password" :)
expect {
 timeout { send_user "\nFailed to get password prompt\n"; exit 1 }
 eof { send_user "\nSSH failure for $HOST\n"; exit 1 }
 "*assword"
}
## Caso o prompt que solicita a senha seja exibido, a mesma eh enviada
send "$PASS\r"

## Mensagem a ser exibida caso a senha esteja incorreta
## *\# indica o prompt do usuario caso, o root
expect {
 timeout { send_user "$HOST - Login failed. Password incorrect.\n"; exit 1}
 "*\# "
}
## Caso a senha esteja correta, eh exibida a mensagem abaixo:
send_user "$HOST - Password is correct\n"

## Desconecta do servidor - o mesmo que Control+D:
send "exit\r"
## Encerra programa
close

---------------------------------------------------------------------------------------------------------- 

E por fim, o arquivo que valida tudo, valida_pw.sh:


#!/bin/bash

################################################################################################################
## Script para validar senhas em massa a partir de um arquivo de servidores e outro com as respectivas senhas
## Executa o arquivo pwtest.exp
## Nix - 23/08/2013
################################################################################################################

######## Variaveis ########
# Lista de servidores
HOSTS=$(cat /root/temp/hosts_dev.txt)
# Arquivo de senhas
PWDS=$(cat /root/temp/pws_dev.txt)

####### Contador para ler o arquivo de senhas linha a linha #######
i=0
for pd in $PWDS; do
        pws[$i]=$pd;
        i=`expr $i + 1`
done

####### Contador para ler o arquivo de hosts linha a linha e testar a senha usando o script expect #######
### Eh passado como parametro o servidor ($j) e a senha do mesmo ($pws)
i=0
for j in $HOSTS; do
        /root/temp/pwtest.exp $j ${pws[$i]}
        i=`expr $i + 1`
done


Eu tentei fazer um for para os arquivos de host e um while para o arquivo de senha, fazendo com que ele teste todas as possíveis senhas para cada host a ser testado, porém o loop fica infinito. Pensei em algo como (apenas senhas):

while read $PWDS ; do
 pws[$i]=$pd;
 i=`expr $i + 1`
done

Mas não tive sucesso até o momento.

George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138

reply via email to

[Prev in Thread] Current Thread [Next in Thread]