miércoles, 5 de marzo de 2014

Generador de diccionarios (Fuerza bruta)


Les comparto este generador de passwords de fuerza bruta que hice por si se ofrece :D . Opera de la siguiente forma:

1) asignas los caracteres con los cuales quieres generar las combinaciones
2) ejecutas el script de la siguiente forma:

./generador.sh passwords.txt

Y con esto se generará el archivo passwords.txt con todas las combinaciones que establecimos dentro del script.

NOTA:
* Entre más caracteres para combinar puede tardar semanas en generar tu diccionario ya que hace todas las combinaciones entre ellos
* Con el crackeo sucede de la misma forma, Puede tardar años ...
* Disculpen por la identación, no se refleja de forma correcta

#!/bin/bash

caracteres="a b c d e f g h i j k l m n ñ o p q r s t u v x y z 1 2 3 4 5 6 7 8 9 0" 

ndigitos=$(echo $caracteres | wc -w)
echo $ndigitos
if [ -z ${1} ]
then
 echo "     Uso: Falta el archivo de salida"
 echo " Ejemplo: $0 passwords.txt"
else
 cont0=0
 cont1=0
 cont2=0
 cont3=0
 cont4=0
 cont5=0
 cont6=0
 cont7=0
 cont8=0
  time for a in $caracteres
           do
               let cont0=cont0+1
        for b in $caracteres
        do
            let cont1=cont1+1
          for c in $caracteres
          do
              let cont2=cont2+1
            for d in $caracteres
            do
                let cont3=cont3+1
             for e in $caracteres
             do
                 let cont4=cont4+1
               for f in $caracteres
               do
                   let cont5=cont5+1
                 for g in $caracteres
                 do
                     let cont6=cont6+1
                   for h in $caracteres
                   do
                       if [ $cont2 -lt $ndigitos ]; then a="";  fi
                       if [ $cont3 -lt $ndigitos ]; then b="";  fi
                       if [ $cont4 -lt $ndigitos ]; then c="";  fi
                       if [ $cont5 -lt $ndigitos ]; then d="";  fi
                       if [ $cont6 -lt $ndigitos ]; then e="";  fi
                       if [ $cont7 -lt $ndigitos ]; then f="";  fi
                       if [ $cont8 -lt $ndigitos ]; then g="";  fi
                       let cont7=cont7+1
                       `echo "$a$b$c$d$e$f$g$h" >> ${1}`
                        echo "$a$b$c$d$e$f$g$h"
                  done
                 done
               done
             done
            done
          done
        done
      done
fi

2 comentarios:

RubenOzz dijo...

Muchas gracias por el aporte!

Encontre que al correrlo ejecutaba 36 veces (ndigitos) la misma secuencia, mostraba digamos 36 veces ff, fg, fh, etc.

Lo modifique para que genere la misma lista pero no 36 veces la misma combinación.

#!/bin/bash
andigitos="1"
caracteres="a b c d e f g h i j k l m n ñ o p q r s t u v x y z 1 2 3 4 5 6 7 8 9 0"

ndigitos=$(echo $caracteres | wc -w)
echo $ndigitos
if [ -z ${1} ]
then
echo " Uso: Falta el archivo de salida"
echo " Ejemplo: $0 passwords.txt"
else
cont0=0
cont1=0
cont2=0
cont3=0
cont4=0
cont5=0
cont6=0
cont7=0
cont8=0
time for a in $caracteres
do
if [ $cont0 -lt $andigitos ]; then a=""; fi
let cont0=cont0+1
for b in $caracteres
do
if [ $cont1 -lt $andigitos ]; then a=""; fi
let cont1=cont1+1
for c in $caracteres
do
if [ $cont2 -lt $andigitos ]; then a=""; fi
let cont2=cont2+1
for d in $caracteres
do
if [ $cont3 -lt $andigitos ]; then a=""; fi
let cont3=cont3+1
for e in $caracteres
do
if [ $cont4 -lt $andigitos ]; then a=""; fi
let cont4=cont4+1
for f in $caracteres
do
if [ $cont5 -lt $andigitos ]; then a=""; fi
let cont5=cont5+1
for g in $caracteres
do
if [ $cont6 -lt $andigitos ]; then a=""; fi
let cont6=cont6+1
for h in $caracteres
do
# if [ $cont2 -lt $andigitos ]; then a=""; fi
# if [ $cont3 -lt $andigitos ]; then b=""; fi
# if [ $cont4 -lt $andigitos ]; then c=""; fi
# if [ $cont5 -lt $andigitos ]; then d=""; fi
# if [ $cont6 -lt $andigitos ]; then e=""; fi
if [ $cont7 -lt $andigitos ]; then f=""; fi
# if [ $cont8 -lt $andigitos ]; then g=""; fi
let cont7=cont7+1
`echo "$a$b$c$d$e$f$g$h" >> ${1}`
echo "$a$b$c$d$e$f$g$h"
done
done
done
done
done
done
done
done
fi

Saludos y nuevamente gracias por el aporte, la verdad estaba perdido!

RubenOzz

Oscar Perez dijo...

Hola Ruben, buenas noches. La mayoria de diccionarios empiezan generando el mismo caracter segun la longitud deseada. Suponiendo que desees generar un diccionmario WPA de 13 digitos con tan solo 10 caracteres diferentes, el archivo pesaría 127 Teras. ¿Porque? Porque cada caracter se repite 13 veces y luego va disminuyendo. Pero si modificas el script y pones un limite de 2 repeticiones por caracter en cada next, reduciras al máximo el diccionario y necesitars menos espacio de disco para guardarlo. Si lo piensas veras que tengo razon. Y si lo modificas como sugiero, hazmelo saaber. Gracias.