|
From: | George Robinson |
Subject: | Re: Lendo uma lista de possível senhas para uma lista de hosts |
Date: | Wed, 5 Jul 2017 22:00:23 -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:host1host2host3pws_dev.txt:senha1
senha2
senha3Utilizei 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 5set HOST [lindex $argv 0]set PASS [lindex $argv 1]log_user 0## Inicializa a conexao SSHspawn 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 enviadasend "$PASS\r"## Mensagem a ser exibida caso a senha esteja incorreta## *\# indica o prompt do usuario caso, o rootexpect {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 programaclose------------------------------------------------------------ ------------------------------ ---------------- 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 servidoresHOSTS=$(cat /root/temp/hosts_dev.txt)# Arquivo de senhasPWDS=$(cat /root/temp/pws_dev.txt)####### Contador para ler o arquivo de senhas linha a linha #######i=0for pd in $PWDS; dopws[$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=0for j in $HOSTS; do/root/temp/pwtest.exp $j ${pws[$i]}i=`expr $i + 1`doneEu 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 ; dopws[$i]=$pd;i=`expr $i + 1`doneMas não tive sucesso até o momento.
[Prev in Thread] | Current Thread | [Next in Thread] |