Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Novlucker en 13 Noviembre 2008, 14:22 pm



Título: Generar diccionario (vbs)
Publicado por: Novlucker en 13 Noviembre 2008, 14:22 pm
Buenas....

Dejo un pequeño script para generar diccionarios de palabras (creado en un rato de ocio), es decir que, en base a un grupo de caracteres y una longitud seleccionada por el usuario, genera un listado de palabras con todas las posibles combinaciones de los caracteres.
Se puede portar facilmente a otros lenguajes como ser perl, python, VB (casi sin cambios), C/C++, etc

La idea de este es que sirva como ejemplo para aquellos que inician con vbs, el code no es para nada difícil, solamente necesita ser leído detenidamente  :P

Algunas de las funciones utilizadas que pueden resultar desconocidas son:
Lbound: Indica el número de índice más pequeño en un array
Ubound: Indica el número de índice más grande en un array
Cint: convierte a Integer el valor ingresado
Len: indica el largo de una palabra

Código
Código
  1. Set objfso = createobject("scripting.filesystemobject")
  2. Set ToFile = objfso.createtextfile("Dik.txt",True)
  3.  
  4. DicLis = Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
  5. Length = Cint(inputbox("Ingrese el numero de caracteres de las palabras","Dictionary",""))
  6.  
  7. DicU = Lbound(DicLis)
  8. DicL = Ubound(DicLis)
  9.  
  10. Complete("")
  11.  
  12. Function Complete(strin)
  13.  
  14. For z = DicU to DicL
  15. word = strin & DicLis(z)
  16.  
  17. If Len(word) = Length then
  18. ToFile.writeline word
  19. Else
  20. Complete(word)
  21. End If
  22.  
  23. Next
  24.  
  25. End Function
  26.  
  27. ToFile.close
  28. Msgbox "Proceso Terminado"

Ejemplo:
Longitud: 4 caracteres
Tiempo: 8 segundos
Total de palabras: 456977
P IV 3.0, 1gb de ram

Para agregar más letras, números o símbolos, simplemente hay que modificar el array DicLis

Hay que tener cuidado al probarlo, se debería de elegir un número más bien pequeño como ser 3 o 4, ya que probando con el actual "diccionario" y con palabras de longitud 6, el archivo generado ocupaba 400 mb, son unas 309 millones de palabras y puede tardar bastante (tuve que recurrir a taskkill XD)

El script en si utiliza recursividad (http://es.wikipedia.org/wiki/Algoritmo_recursivo) para hacer todo el trabajo, de ahí es que ocupe solamente algunas líneas  ;)

Eso es todo, saludos  ;)

P.D: si no lo terminas de entender, ya sabes donde mirar (https://foro.elhacker.net/scripting/tutorial_vbscript-t229032.0.html) XD


Título: Re: Generar diccionario (vbs)
Publicado por: Enemy en 14 Noviembre 2008, 15:47 pm
xD cuando no.. lo voy a probar a ver que onda..  :D



SALUD.O.S


Título: Re: Generar diccionario (vbs)
Publicado por: aaronduran2 en 14 Noviembre 2008, 18:01 pm
Buen código. Gracias. :D


Título: Re: Generar diccionario (vbs)
Publicado por: Novlucker en 16 Noviembre 2008, 01:30 am
xD cuando no.. lo voy a probar a ver que onda..  :D
Es vbs, quien más iba a ser sino yo?  :xD

@aaronduran2
Con conocimientos de VB no es muy difícil entenderlo :P

Saludos


Título: Re: Generar diccionario (vbs)
Publicado por: aaronduran2 en 16 Noviembre 2008, 15:19 pm
Ya, pero muchas veces no se te ocurren cosas tan sencillas.

Saludos.


Título: Re: Generar diccionario (vbs)
Publicado por: AxXioma en 16 Noviembre 2008, 15:29 pm
¿Qué utilidad tiene el programa, y, para qué sirve un diccionario de palabras? Creo haber leído que se utiliza frecuentemente para brute force, pero no sé, si me pueden dar alguna explicación...

Saludos.


Título: Re: Generar diccionario (vbs)
Publicado por: aaronduran2 en 16 Noviembre 2008, 15:53 pm
Pues para eso mismo, fuerza bruta. O para cualquier otra cosa parecida...


Título: Re: Generar diccionario (vbs)
Publicado por: carlitos.java en 16 Noviembre 2008, 17:15 pm
¿Qué hace strin & DicLis(z)?

no hallé referencias a strin


Título: Re: Generar diccionario (vbs)
Publicado por: aaronduran2 en 16 Noviembre 2008, 17:30 pm
'string' es un argumento de la función Complete.


Título: Re: Generar diccionario (vbs)
Publicado por: Novlucker en 16 Noviembre 2008, 18:10 pm
Ya, pero muchas veces no se te ocurren cosas tan sencillas.
Si, puede que a veces la enrede un poco  :-X :xD

¿Qué hace strin & DicLis(z)?
no hallé referencias a strin

En este caso strin y DicLis son solo variables en la función, strin es la cadena que se pasa como parametro a la función, y DicLis(z) es simplemente el elemento z del array DicLis :P, es por eso que no hay referencias  :P
Por eso decía que hay que mirarlo detenidamente, para ver que es lo que hay en el primer for, que es lo que se pasa como parametro en la recursividad, y que es lo que hace el for en pasadas siguiente  :D

Saludos