Diccionario con todas las combinaciones posibles entre varias wordlist (Pagina 1) / Diccionarios, generadores, y generación de diccionarios / Foro Wifi-libre.com

El libre pensamiento para un internet libre

No estas registrado.     

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

#1 04-02-2016 18:14:04

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 2,053

Diccionario con todas las combinaciones posibles entre varias wordlist

Hacer un diccionario único con todas las combinaciones posibles entre las contraseñas contenidas en dos diccionarios (o más)

  Imaginamos la situación siguiente : Tenemos un diccionario con nombres y otro con apellidos.
Queremos hacer un diccionario que combine todos los nombres con todos los apellidos.
  Supongo que existen programas o generadores que lo hacen pero no es nada complicado hacerlo nosotros mismos  en un  pispás con nuestra consola. wink

   Veamos cómo...
Tengo dos listas de palabras:

  1. Una llamada "nombres.txt" que contiene tres nombres : Pepa, François y Günter

  2. Otra llamada "apellidos.txt" que contiene tres apellidos : Martinez, Dubois y Wittgenstein

leer un archivo linea a linea

  Podemos abrir los diccionarios y ver el contenido en consola con el comando cat :

cat nombres.txt && cat apellidos.txt

combinar_dic_1.jpg

  O bien lo podemos hacer con bucle while

while read nombre ; do
  echo $nombre
done < nombres.txt

El resultado es lo mismo y esta forma es mas rebuscada pero tiene una ventaja: guardamos el contenido de cada linea en una variable.
Lo que hacemos asi concretamente es mientras leamos el archivo linea por linea guardamos el contenido en una variable ( nombre )  que enseñamos enseguida ( echo $nombre )
El contenido de la variable "nombre" cambia a cada linea y lo enseñamos cada vez.
Notad que el archivo por leer se pone en final de bucle ( done < nombres.txt).
Esto es porque bash lee todo lo que esta en el bucle (entre "while" y "done" que es una instrucción de cierre) antes de ejecutar el código.
Así que podemos (y debemos en el caso de un bucle while ) poner al archivo por leer al final en modo "retro" direccional con el símbolo <

Combinar diccionarios

  Ahí viene el truco : podemos perfectamente abrir un bucle... en otro bucle.
De esta forma podríamos pillar la primera linea de nuestra lista 1 (nombres) y combinar la con todas la lineas de una segunda lista (apellidos) y hacer lo mismo con la segunda linea de nuestra primera lista (nombres), con la tercera, etc... y esto hasta al final de nuestro lista 1 (nombres)
  O sea combinar dos diccionarios para hacer uno.
Veamos mas de cerca la sintaxis con nuestro ejemplo

while read nombre ; 
  do 
     while read apellido ; 
        do 
            echo "$nombre $apellido" 
     done < nombres.txt 
done < apellidos.txt

combinar_dic_2.jpg

Dos cosas :
  - Es muy importante que haya una linea con done para cada while... sino no se cierran los bucles y no se ejecutan.
  - Veis que además de poner un bucle a dentro del otro he modificado la linea "echo" para que las variables "nombre" y "apellido" se escriban juntas ( echo "$nombre $apellido"), separadas por un espacio (que podríamos quitar)
Obtenemos las 9 combinaciones posibles con nuestras listas de tres nombres y tres apellidos

guardar el contenido en un diccionario y añadir las combinaciones invirtiendo el lugar de las variables

Aunque podríamos pasar las combinaciones con aircrack-ng al vuelo gracias a un pipe, vamos a ver como guardar lo que pasa en consola para tener el diccionario.
Y de paso vamos a completar lo poniendo las combinaciones apellido y nombre.
De momento tenemos a Martinez pepa, Martinez günter etc... pues tendremos también a pepa Martinez, günter Martinez etc...
 
  Por lo de guardar el fichero lo hacemos con el símbolo de re-dirección doble ( >> ) y ponemos el nombre del archivo que queremos crear ( lo llamare dic_final.txt )
  Lo hacemos a nivel de la orden "echo".
  "echo" es para escribir en consola pero volcamos el contenido en un fichero de texto (las contrsaeñas no se ven en consola y sol se impriman en el fichero)
  Es importantisimo usar la re-dirección con símbolo "doble" (>>) porque hace que vamos a añadir cada combinación la una después de la otra.
  Si usamos un solo > las combinaciones se sobrescriben y solo tendremos la ultima combinación en el diccionario
Nuestro linea echo quedaría asi

echo "$nombre $apellido" >> dic_final.txt

  Por lo de doblar nuestro diccionario añadiendo las combinaciones " appelidos + nombres" ponemos en el medio de nuestros bucles una segunda linea "echo" invirtiendo el orden de las variables

echo "$nombre $apellido" >> dic_final.txt
echo "$apellido $nombre" >> dic_final.txt

 
  Tenemos

while read nombre ; 
  do 
     while read apellido ; 
        do 
            echo "$nombre $apellido" >> dic_final.txt
            echo "$apellido $nombre" >> dic_final.txt
     done < nombres.txt 
done < apellidos.txt

Obtengo un diccionario con las 18 combinacionales posibles.

combinar_dic_3.jpg

Bonus : añadir fechas de nacimiento con un bucle más

Podríamos hacer una lista con las fechas de nacimiento y añadir un bucle while para usar la
Pero para divertirnos un poco vamos a hacer lo añadiendo un bucle for en nuestro bucle while.
Unas fechas de nacimientos son una secuencia de números.
Para generar secuencias tenemos al comando "sec" que se puede usar directamente en un bucle for
[*]for i in $(seq incio final)
  do echo $i
done[/*]
ejemplo, genero los años de las fechas de nacimiento desde 1960 hasta 2000

for i in $(seq 1960 2000)
>   do echo $i
> done
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000


Tendré mis 18 passes con nombre + apellido y apelido + nombre y ademas 18 x 40 combinaciones con las fechas entre 1960 y 2000.

while read nombre ; 
  do 
     while read apellido ; 
        do
           for i in $(seq 1960 2000)
              do
                echo "$nombre $apellido $i" >> dic_final.txt
                echo "$apellido $nombre $i" >> dic_final.txt
           done
     done < nombres.txt 
done < apellidos.txt

  importante : el primer "done" es el del ultimo bucle abierto.
Es el bucle for y no se alimenta con un fichero (no lleva el <)

combinar_dic_4.jpg

Muchas veces buscamos aplicaciones para cosas que podemos hacer nosotros mismos...
¡Viva bash! big_smile

Desconectado

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

#2 05-02-2016 23:19:08

dynyly
Usuario

Registrado: 19-04-2015
Mensajes: 204

Re: Diccionario con todas las combinaciones posibles entre varias wordlist

de nuevo gracias por compartir conocimientos.....estos de chuleta pa guardar
esta bien tener conocimiento de mezcla de dicionarios lo mejor de todo lo bien explicado que esta el post de como se hace y explicando los comandos aplicados
salu2

Ultima edición por dynyly (05-02-2016 23:22:29)

Desconectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

Temas similares

Tema Respuestas Vistas Ultimo mensaje
Hola! por Ike
1 5 Ayer 23:54:48 por kcdtv
RouterScan linux por juandiegomu
3 29 Ayer 22:06:44 por kcdtv
7 849 Ayer 17:35:28 por kcdtv
1 17 Ayer 11:25:21 por Koala
2 51 Ayer 02:07:10 por kcdtv

Pie de página

Información del usuario

Ultimo usuario registrado: Ike
Usuarios registrados conectados: 0
Invitados conectados: 6

Estadisticas de los foros

Número total de usuarios registrados: 356
Número total de temas: 616
Número total de mensajes: 4,220

Máx. usuarios conectados: 45 el 12-04-2016 12:02:20