Diccionario con todas las combinaciones posibles entre 2 diccionarios (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 31-01-2018 17:17:57

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 3,761

Diccionario con todas las combinaciones posibles entre 2 diccionarios

Cómo crear un diccionario con todas las combinaciones posibles entre dos diccionarios... o más

combinar_diccionario_4.jpg

  Vamos a tomar un caso practico: El caso de las redes NETGEARXX que hemos visto  hace un par de días atrás (ver Método crack redes NETGEARXX (WNDR3400 y otros modelos) con PSKracker)
  Hemos aprendido que la contraseña WPA por defecto de varios modelos Netgear se hace siguiendo un patrón peculiar:  Adjetivo + Nombre + 3 números.
  Hemos visto que la herramienta PSKcracker propone varias listas - algunas con adjetivos, algunas con nombre, algunas con ambos ya combinados - para elaborar diccionarios de ataque. 
  Primera pregunta: ¿Cómo combinar una lista de adjetivo con una lista de nombre para tener todas las combinaciones adjetivo+nombre posibles?
  Segunda pregunta: ¿Cómo luego combinar nuestro diccionario adjetivo+nombre con un diccionario de 3 números? 
    La primera y la segunda pregunta son intrínsecamente las mismas:
       ¿Cómo hacer una lista con todas las combinaciones posibles entre varias listas?
  Se puede resolver este problema de muchas formas y algunos lenguajes llevan librerías perfectas para hacer este tipo de manipulaciones.
  No es el caso con nuestro interprete de ordenes bash que tenemos tod@s a mano
  Pero vais a ver que es muy fácil a lograr, concadenando un par de bucles "for - done"

Leer un texto linea por linea y escribir cada linea con un bucle for - done

 
Hago una lista con 3 adjetivos que llamo adjetivos.txt
Para abrir la lista y ver su contenido en consola lo más simple es usar cat

cat adjetivo.txt

Para abrir el texto, leer su contenido linea a linea y escribir cada linea en consola, se puede hacer con un bucle for - done simple

for adjetivo in $( cat adjetivos.txt)
  do
     echo "$adjetivo"
done

El resultado final es el mismo pero la mecánica es diferente en mi bucle

combinar_diccionario_1.jpg

Sobre le bucle:
  Con

for adjetivo in $( cat adjetivos.txt)

Cada linea se guarda como contenido de la variable "adjetivo"
Y con

echo "$adjetivo"

  Se escribe el contenido de la variable "adjetivo" en consola
En resumen:
  * Con cat se abre el texto cómo si fuera un bloque.
  * Con mi bucle for que usa cat se lee la primera linea y se escribe la primera linea (la variable adjetivo), se lee la segunda linea y se escribe la segunda linea (la misma variable pero con un valor cambiado) etc.. etc... hasta la ultima linea.

Ahora creo un diccionario con tres nombres llamado nombres.txt para combinarlos con mis adjetivos.
Y para combinar ambos abro un segundo bucle for - done a dentro de mi primer bucle.
Así:

for adjetivo in $( cat adjetivos.txt)
  do
    for nombre in $(cat nombres.txt)
      do
        echo "$adjetivo$nombre"
    done
done

La linea de ordenes "echo" (escirbir) está modificada para que se escribe el adjetivo y el nombre (sin espacio entre ambos)
La mecánica es la siguiente:
  1) Se lee la primera linea de adjetivos.txt y se guarda en la variable adjetivo, se lee la primera linea de nombres.txt y se guarda el valor en la variable nombre y se escriben las dos variables juntas
  2) Luego se sigue tomando  la primera palabra de nombres.txt pero esta vez se lee la segunda linea de adjetivos.txt. El resultado es que se escribe el nombre 1 con el adjetivo 2.
  Ya creo que entendéis el proceso:  Cada nombre estará combinado con los tres adjetivos y se cubrirán así todas las combinaciones posibles.

combinar_diccionario_2.jpg

Se pueden multiplicar los bucles sin problemas
En el "caso Netgear" tenemos también a tres números después la combinación adjetivo-nombre
Hago entonces un diccionario de tres números que llamo numeros.txt y aplico el mismo esquema:

for adjetivo in $( cat adjetivos.txt)
  do
    for nombre in $(cat nombres.txt)
      do
        for numero in $(cat numeros.txt)
           do
             echo "$adjetivo$nombre$numero"
        done
    done
done

combinar_diccionario_3.jpg

Un par de cosas antes de terminar:

  • No olvidarse que el crecimiento es exponencial cada vez que añadimos una lista.
    1000 adjetivos + 1000 nombres + 1000 números no parecen muchos, pero si combinamos todo tenemos a  1 000 000 000 de contraseñas

  • Para guardar el resultado y hacer un diccionario debemos redirigir la salida con >>
    O sea, modificamos la última linea para dejarla así

    done >> dicNETGEAR.txt
  • Para pasar el diccionario al vuelo añadimos un pipe.  También en última linea:

    done | aircrack-ng miwifi.cap -e nombredemired -w-

Desconectado

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

Temas similares

Tema Respuestas Vistas Ultimo mensaje
9 271 Hoy 16:42:04 por kcdtv
0 13 Hoy 16:19:06 por kcdtv
30 2393 Hoy 11:46:35 por crash
8 157 Ayer 20:11:56 por Koala
Pegado:
Pegado:: Script multiuso wifi para Kali y otras distros por v1s1t0r  [ 1 2 3 11 ]
265 11089 Ayer 14:25:23 por crash

Pie de página

Información del usuario

Ultimo usuario registrado: sgmj
Usuarios registrados conectados: 0
Invitados conectados: 20

Estadisticas de los foros

Número total de usuarios registrados: 914
Número total de temas: 1,000
Número total de mensajes: 9,499

Máx. usuarios conectados: 69 el 15-10-2017 09:23:21