You are on page 1of 6

#######################################################################

# Fichero: sgen.pl
# Fecha: 09-02-2011
# Version 1.3
# Autor: |FluiD| (migue_lin@msn.com)
# Descripcion: Generador de diccionarios.
#
# Este programa es software libre; puedes redistribuirlo y/o modificarlo
# bajo los trminos de la Licencia Publica General GNU (GPL) publicada
# por la Free Software Foundation; en su versin numero 3, o (bajo tu
# criterio) la ultima versin. Mira http://www.fsf.org/copyleft/gpl.txt
#
# Este programa se distribuye SIN GARANTIA de ningn tipo.
#
##########################################################################

usage: perl sgen.pl [ -hxX <num> ]


Sin parametro muestra menu.
-h Muestra esta ayuda.
-x HEX aleatorias minusculas en STDOUT.
-X HEX aleatorias mayusculas en STDOUT.
<num> Longitud de HEX (para -x -X). Sin <num>, 26 char.

NOTAS
==============
La verdadera peculiaridad de este generador se encuentra
en las opciones en las que acepta strings o cadenas, este
puede tratar una cadena de caracteres como si fuera una
unica variable reduciendo asi las combinaciones del generador,
por supuesto esto es solo util si crees conocer un patron
que pueda contener la contrasea a buscar (explicare esto
mas abajo).
El generador esta programado en perl bajo linux.
Quien sepa programar y vea el codigo vera que no es ninguna
maravilla, es mas, esta programado en ratos libres y durante
unos cuantos meses, asi que tardaba mas tiempo en engancharme
por donde me habia quedado que realmente el tiempo que estaba
programando, y muchas veces he tenido que duplicar alguna
subrutina y modificar algo por que en la manera en la cual la
empece no me sevia para reutilizar, vamos, chapucillas...
El generador se ha convertido a .exe con la aplicacion
Perl2exe (www.indigostar.com/perl2exe.htm). En la web
dice que el .exe corre a una velocidad similiar al script
original, yo personalmente me quedo con el script en
Linux.
Para ejecutarlo en linux escribid en la consola:
"perl sgen.pl", sin las comillas (por supuesto teneis que tener
perl instalado, pero hoy en dia todas las distribuciones
vienen con un interprete, asi que no debeis tener ningun
problema) o con "./sgen.pl" si este tiene permisos de ejecucion.
Tambien podeis instalar un interprete perl para windows y
hacerlo funcionar en la consola de msdos escribiendo
perl sgen.pl, y por supuesto usando el .exe que
nos evitara tener que instalar nada.
Si se ejecuta con el parametro -x -X <num> genera por STDOUT (por
pantalla) diccionarios aleatorios hexadecimales (en mayusculas o
minusculas dependiendo de -x -X) con la longitud igual a <num>.
Permite abrir varias veces la aplicacion, con lo cual puedes
generar mas de un diccionario al mismo tiempo, eso si
repartiendo la cpu entre los diccionarios que se estan
generando en ese momento, aumentando el tiempo de generacion.

Si se genera un diccionario con el mismo nombre que


alguno ya creado, las palabras nuevas que se generen seran
agregadas a partir del final del diccionario existente.
Los abecedarios que hay predefinidos por defecto en
cualquiera de los menus de cualquier opcion no tienen
incluida la letra "". Solo sera posible incluirla a
mano en las opciones que aceptan introducir strings,
explicare esto mas abajo.
Lo mismo ocurre con los signos de puntuacion, espacios
en blanco, etc...
No intenteis abrir un diccionario de texto con varios
gigas o incluso mucho menores, ya que es facil que se
os quede colgado el editor, usad para ver su contenido
los siguientes comandos en la consola:
MSDOS
type NombreDic (Veremos el contenido del Dic por panatalla)
type NombreDic | more (igual que el anterior pero espera
en cada pantalla)
LINUX
cat NombreDic (muestra el contenido por mantalla)
cat NombreDic |more (igual que el anterior pero espera
en cada pantalla)
head NombreDic (muestra las 10 primeras lineas del Dic.)
tail NombreDic (muestra las 10 ultimas lineas del Dic.)
En windows, concretamente en vista, al crear un diccionario
de gran tamao, windows no lo "suelta" y no se puede eliminar
ni mover, dice que hay una aplicacion que lo esta usando.
Basta con cerrar la sesion y ya podreis eliminarlo.
He limitado el diccionario a 13 variables de longitud, mas
abajo hay unas pruebas y vereis el por que.
(AMPLIADO A 15 EN LOS GENERADORES A MEDIDA)

ALGUNAS PRUEBAS
================
Las pruebas se han efectuado en un AMD Athlon64 X2 5200+ (2x2700Mhz)
Tarda aproximadamente 2 min 30 seg en generar un giga, no es
que sea muy rapido, pero es algo mas que algunos de los que he probado.
-Letras minusculas:
5 variables -> 79 Mb
6 Variables -> 2,30 Gb y unos 5,30 min.
7 variables -> 67,3 Gb y unas 3 horas.
8 variables -> Ni lo intento.
-Numeros:
7 variables -> 85,8 Mb
8 variables -> 953 Mb poco mas de 2 min.
9 variables -> 10 Gb
10 variables -> En tus manos lo dejo.
Ahora imaginad si combinamos las mayusculas y las minusculas.
Y mayusculas, minusculas y numeros?
El problema no es solo el tiempo de generacion del diccionario
y el espacio que puede llegar a ocupar, y el mayor problema es
la aplicacion que tiene que comprobar todas y cada una de estas
entradas en el diccionario y su velocidad.
Opcion 1.-Dic. letras minusculas
================================
Genera todas las combinaciones de letras minusculas en la longitud
que se le indique, no esta incluida la letra .

Opcion 2.-Dic. letras mayusculas


================================
Igual que el anterior pero con letras mayusculas.

Opcion 3.-Dic. letras minusculas y numeros


==========================================
Igual pero incluye numeros.

Opcion 4.-Dic. letras mayusculas y numeros


==========================================
Idem.

Opcion 5.-Dic. numeros


==========================================
Solo numeros.

Opcion 6.-Dic. numeros desde... hasta...


==========================================
Genera numeros desde un numero de comienzo que le indiquemos
hasta un numero final.
Si el numero de comienzo es mayor que el numero final, genera
el diccionario en orden inverso.
La longitud del numero de comienzo sera igual que la longitud
del numero final, rellenandose con ceros a su izquierda si no
es asi. Ejemplo: del 1 hasta 1000, generara:
0001
0002
...
1000
Opcion 7.-Dic. HEX
==========================================
Genera diccionarios hexadecimales con la longitud que le indiquemos.
Da la opcion de hacerlo tanto en mayusculas como en minusculas.

Opcion 8.-Dic. HEX aleatorios.


==========================================
Genera diccionarios hexadecimales aleatorios con la longitud
que le indiquemos, de forma infinita.
Da la opcion de hacerlo tanto en mayusculas como en minusculas.

############################################
IMPORTANTE
############################################
Opciones 9,10,11,12,13 Diccionarios con strings
================================================
Estos generadors son exactamente iguales a los anteriores, pero
tienen una particularidad, y es que permiten incluir una cadena
o string que se tratara como una variable, este string puede ser
cualquier cosa, desde un signo de puntuacion hasta una palabra
completa. Me explico. Imaginamos que queremos introducir un string
como "pepito", y le decimos que pruebe con una longitud de 5 variables
todos los numeros, el generador hara:
pepito00000
pepito00001
...
pepito99999
y volvera a empezar:
0pepito0000
0pepito0001
...
9pepito9999
hasta:
99999pepito
En pocas palabras tratara al string como un "todo" y probara todas
las combinaciones que se podrian dar.
El string solo cambiara de posicion, pero de forma completa,
no se separa.
Esto es aplicable a todas las opciones que usan strings.
Esto reduce enormente las combinaciones a generar si sabemos o
creemos saber parte de la contrasea que adamos buscando.
Aqui podemos incluir cualquier signo de puntuacion y caracter que
queramos.

OPCION 14.-Dic. a medida


======================================
Este es la opcion mas configurable, con este generador se
pueden hacer todos los anteriores, aadiendo que letras, strings,
numeros y signos quieres que pruebe, y ademas admite una longitud
de hasta 15 caracteres.
Empezamos:
Nos pregunta por el nombre, longitud...
Y continuacion es donde podemos agregarle todo lo que queramos
que genere. (vale TODO).
He definido varios atajos (hay que ponerlos con los corchetes):
[a-z] Agrega dic. en min. completo.
[A-Z] Idem en mayusculas.
[0-9] Todos los numeros.
[0-f] Agrega todos los caracteres HEX en minusculas.
[0-F] Agrega todos los caracteres HEX en mayusculas.
Algunos ejemplos:
Si introducimos:
1
2
3
[a-z]
generara un diccionario con la longitud que le indequemos con todo
el abecedario y solo los numeros 1,2 y 3.
Si introducimos:
a
b
c
[0-9]
todas las combinaciones de a,b,c mas todos los numeros
Si introducimos:
pepe
aa
[a-z]
Cuidado aqui, pepe es un "todo" y "aa" tb, se genera todas las
combinaciones posibles sin fraccionar "pepe" ni "aa" junto con
todo el abecedario.
Admite signos de puntuacion, espacios en blanco...
Para finalizar y empezar a generar escribid .exit en minusculas.

OPCION 15.-Dic. a medida por volumenes


======================================
Es exactamente igual al anterior pero da la posibilidad de hacer
volumenes, los he separado por que la comprobacion del tamao y
la generacion de los volumenes hace que sea mayor el tiempo por giga
generado.
Esto puede ser util para si tienes varias maquinas no
tener que estar esperando a que termine para empezar a probar y asi
distribuir el "ataque" en varias cpu's. Tambien puede ser util
por si varias personas en sitios distantes quieren probar a
"romper" un mismo objetivo, cada uno generaria el mismo diccionario
con las mismas caracteristicas y cada uno se encargaria de probar
una parte del volumen.
OPCION 16.-Filtrar palabras en archivos de texto
================================================
Filtra cualquier archivo de texto que le demos y genera un diccionario
con las palagras con la longitud que le indiquemos.

OPCION 17.-Conv. archivos Mayusculas/Minusculas


================================================
Convierte cualquier archivo de texto plano de mayusculas a minusculas
y viceversa.

OPCION "p" y "s".- Prefijos/Sufijos


================================================
Aade prefijos y sufijos a todos los diccionarios anteriores a excepcion
como es logico de las opciones 16 y 17.
Los prefijos/sufijos que se aplican a los demas generadores aparecen en
el menu. Para borrar algun prefijo ya definido, basta con pulsar solo enter
cuando nos pregunte.

Bueno ahi van unas horas de trabajo, espero que os sea util y por
supuesto espero que si hay algun error me lo hagais saber a
migue_lin@msn.com
|FluiD|

You might also like