Seguridad Wireless - Wifi
Suite Seguridad Wireless => Colaboracion y desarrollo de nuestras lives => Mensaje iniciado por: USUARIONUEVO en 12-04-2015, 04:32 (Domingo)
-
Creo que una vez ya lo comente , pero sigue sin resolver.
Puede ser bastante desagradable.
el generador de diccionarios , "generadordiccio" , ...tiene el parametro LONGITUD , para definir pero lo que hace es
generar desde 0 caracteres hasta el tope que le pongamos en LONGITUD
si por ejemplo , pones longitud 8 , caracteres 123
pues empieza generando de 8
11111111
11111112
11111113
PERO , cuando se acaban las cobninaciones de 8 , sigue generando ,todas las de longitud 7 ... 6 ...5
creando un diccionario , mas grande de la cuenta , ademas metiendo muchas keys que no valen (menos de 8 no valen en wpa/wpa2) , si es un ordenador lento , puede traducirse en horas de soplar al aire ..por que no valdra de nada.
LONGITUD 8 , es el menor de los dramas ...
imagina que haces de longitud 10 , pues cuando acaba las combinaciones de longitud 10 , tambien va a generar las de longitud 9 , 8 ,7 .6 ....
es un bug , relativamente gordo.
podeis probar a generar un txt de longitud 8 con caracteres 1234 , asi sera pequeño y podreis verlo con ele ditor de texto ... pues mirad al final del dicc ... y vereis lo que digo.
dejo el code, por si alguien sabe como reparar eso ...
__________________________________________________________________________________________________________
#!/usr/bin/python
#
# :: Invasion Tux
# :: Ultima modificacion : miercoles, 14 de enero de 2009
# :: Script realizado por makiolo (makiolo@gmail.com) (Licencia Creative Commons con reconocimiento)
# :: Ultima version : http://blogricardo.wordpress.com/2008/12/28/script-para-generar-diccionarios-de-fuerza-bruta/
# :: Dependencias : python
#
import sys, math
from time import time, localtime, strftime
########################### CONFIGURACION #########################
LONGITUD = 8
ALFABETO = "abcde"
####################################################################
########################## FUNCIONES ###############################
def getVariacionesConRepeticion(ALFABETO , LONGITUD):
sumatorio = 0
for i in range(LONGITUD):
producto = 1
for j in range(i+1):
producto = producto * len(ALFABETO)
sumatorio = sumatorio + producto
return sumatorio
def eventoPalabraGenerada(palabra):
print palabra
####################################################################
##################### VARS AUXILIARES ##############################
DEBUG = True
VERBOSE = True
variacionesConRepeticion = getVariacionesConRepeticion(ALFABETO , LONGITUD)
inicioReloj = time()
cont = 0
progreso = 0
####################################################################
while LONGITUD > 0:
try:
contadores = [] # ponemos los contadores a 0
for i in range(LONGITUD):
contadores.append(0)
fin = False
while not fin:
if DEBUG == True:
palabra=[] # Creas una lista vacia (y liberas de paso)
for i in range(LONGITUD):
palabra.append(ALFABETO[contadores[i]]) # Vas metiendo al final letra a letra
eventoPalabraGenerada("".join(palabra)) # Envias a tu callback tada la lista unida
if VERBOSE == True:
if (cont % 600000 == 0) and (cont != 0):
progreso = cont*100.0/variacionesConRepeticion # porcentaje hasta ahora
progreso = round(progreso , 2)
finReloj = time() - inicioReloj # finReloj es lo que esta tardando el calculo
velocidad = cont / finReloj # palabras procesadas por segundo
velocidad = round(velocidad , 2)
estimado = finReloj * variacionesConRepeticion / cont # es lo que se estima en realizar todo el proceso
restante = estimado - finReloj # es lo que se estima en realizar lo restante
restante = restante / 60 / 60 # lo pasamos a horas
restante = round(restante , 2)
sys.stderr.write(str(progreso)+"% - Quedan "+str(restante)+" horas. La velocidad es de "+str(velocidad)+" palabras/seg\n")
cont = cont + 1
actual = LONGITUD - 1 # Pongo actual a la derecha del todo
contadores[actual] = contadores[actual] + 1 # Sumo 1 a las unidades
while(contadores[actual] == len(ALFABETO)) and not fin: # Propago el carry
if(actual == 0):
fin = True # FIN
else:
contadores[actual] = 0 # reinicia el actual contador
actual = actual - 1 # avanza a la izquierda
contadores[actual] = contadores[actual] + 1 # y le sumo 1
LONGITUD = LONGITUD - 1 # combinaciones para uno menos
except KeyboardInterrupt:
sys.stderr.write("Interrumpido por el usuario\n")
fin = True # Fuerzo las condiciones de salida
LONGITUD = 0
if VERBOSE == True:
sys.stderr.write("Terminado al "+str(progreso)+"% - Realizadas "+str(cont)+" combinaciones de "+str(variacionesConRepeticion)+"\n")
-
Yo es que directamente quitaría ese script de la iso, me parece muy precario eso de tener que editar el script para configurar la longitud, caractreres y demás..
En sus tiempos vino bien, pero ahora todo lo que se puede hacer con ese script se puede hacer con crunch y de una forma mas cómoda y efectiva.
-
Reposteo para un comment personal
esto aun tengo que verificarlo ...pero ,
diccionario generado con generadordiccio.py al pasarlo , las keys , se leen mas lentas que con diccionarios generados con otras tools.
en un test rapido ,
generadordiccio , su txt pasaba por mi maquina de pruebas a 156.000 k/s
mismo diccionario generado con wg4crack o wg.pl pasaba a 175.000 k/s
no se cuando , pero creo que hare un test/comparativa de generadores de diccionario , por que me ha llamado bastante la atencion ese dato.
la prueba la hice con ficheros de texto en el hdd , uesto que si jugara con pipes , esta claro que la velocidad podria variar mucho , dependiendo de como de rapido sea el generador, pero como digo , los dicos estaban hechos , misma longitud mismo chart.
me di cuenta de lo del generador diccio , por que hashcat al final siempre ponia 9% keys REJECTED
osea rechazadas , y claro , ... cuando empiezan a entrar keys de longitud 7 , las rechaza todas. ;D
-
¿Has probado si la última versión disponible en https://blogricardo.wordpress.com/2008/12/28/script-para-generar-diccionarios-de-fuerza-bruta/ (https://blogricardo.wordpress.com/2008/12/28/script-para-generar-diccionarios-de-fuerza-bruta/) se comporta igual? Es de diciembre de 2009 (el código que has posteado es del 14 de enero).
Edito: según el propio autor, es el comportamiento esperado: "Generar todas las combinaciones posibles conlleva no solo considerar las de longitud 6, si no tambien las de longitud 5,4,3,2 e incluso 1"
Esta tarde puede que tenga un rato, a ver si miro esto y alguna cosa pendiente que tengo.
Saludos
-
Creo que es sencillo. Donde pone
while LONGITUD > 0:
Pues deberías cambiar el 0 por un 7
Así te aseguras que salga del bucle cuando empiece a generar palabras inferiores a 8 caracteres.
Viendo el código por encima, veo algún que otro bucle dentro de otro. Esto implica que tenga que hacerse mas cosas, y por ende, mas lento.
Si saco tiempo, intentaré mirar algo a ver si se puede mejorar
Salu2
-
Creo que es sencillo. Donde pone
while LONGITUD > 0:
Pues deberías cambiar el 0 por un 7
Así te aseguras que salga del bucle cuando empiece a generar palabras inferiores a 8 caracteres.
Viendo el código por encima, veo algún que otro bucle dentro de otro. Esto implica que tenga que hacerse mas cosas, y por ende, mas lento.
Si saco tiempo, intentaré mirar algo a ver si se puede mejorar
Salu2
NO , no lo he probado , pero la logica me da la razon.
No quiere que deje de generar las de menos de 7 ,
si no que tanto inicio como fin , se ajusten a LONGITUD
si pongo longitud 9 , quiero solo keys de longiud 9 , , si mete tambien de 8 , el diccionario sera mas grande y no se ajustara a lo que quiero LONGITUD
Inicio y Fin , = LONGITUD , ni mas ni menos.
si estoy en un escenario donde se sabe por ejemplo ONO , tiene muchos routers de longitud 10 numerica en la key ¿para que quiero generar las de longitud 8 y 9 ? ... el diccionario va a ser mas grande, con lo que mas tiempo en generarlo , mas espacio al guardarlo y mucho mas tiempo al pasarlo.