Autor Tema: Guardar diccionario  (Leído 3547 veces)

0 Usuarios y 1 Visitante están viendo este tema.

dieder

  • Visitante
Guardar diccionario
« en: 10-10-2011, 11:39 (Lunes) »
Hola! quisiera saber como se puede guardar un diccionario tras haberlo "generado". Utilizo Python...Pero tras haberlo generado, no me sale ningun archivo.
Utilizo este script:
Citar
#!/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 = 6
ALFABETO = "abcdefghijklmnopqrstuvwxyz0123456789_-."

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

########################## 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])                                               # 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")


Gracias! ;)



alist3r

  • Visitante
Re: Guardar diccionario
« Respuesta #1 en: 10-10-2011, 15:01 (Lunes) »
no veo claro en el código de ese script cómo hace para guardar el supuesto archivo.
si el código no estuviera pensado para eso, entonces seria normal que no te generase archivo alguno.
no se de donde sacaste el script, pero no es uno de los programas que nosotros incluimos/recomendamos junto a wifiway.
prueba crunch, es mucho mas simple. ya viene en wifiway. no se necesita nada mas.

otra cosa:
Para el diccionario que intenta crear ese script ( con 6 caracteres y con un charset = abcdefghijklmnopqrstuvwxyz0123456789_-.), se corresponden los siguientes cálculos que creo que debes conocer antes de hacer una locura:

El número de combinaciones posibles es: 3.518.743.761
El tamaño del diccionario es de: 24.63 GigaBytes
Tiempo estimado en procesar el diccionario (800 claves por segundo en aircrack): 50.91 días

solo para que lo sepas :-P

dieder

  • Visitante
Re: Guardar diccionario
« Respuesta #2 en: 10-10-2011, 22:03 (Lunes) »
No uso esas "variables"  jaja

alist3r

  • Visitante
Re: Guardar diccionario
« Respuesta #3 en: 10-10-2011, 22:12 (Lunes) »
bueno.
pues lo dicho.

deja ese script y usa algo mas extendido, así podremos ayudarte en caso de problemos.

insisto en que uses el crunch de bofh28, que va de fabula y su sistema de plantillas es potente y flexible.

//FINAL Y MÁS DOS RESPUESTAS