[PYTHON] Cómo puedo indicar el directorio y tipo de archivo?

Iniciado por Maldito karma, 25 Julio 2012, 20:23 PM

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

Maldito karma

Hola a todos.

Verán, dispongo del siguiente script de python para generar diccionarios secuenciales extraído de wifiway (generadorDiccio). Me gustaría saber cómo puedo indicarle dónde debe guardarme ése diccionario y en que tipo de documento texto (.txt, .lst, .dic) para poderlo usar en otras distros. Gracias por adelantado y saludos.

Código (python) [Seleccionar]
#!/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 = 20
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[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")




Eleкtro

No me ha quedado claro si quieres hacer el menú para definirlo, O simplemente indicarlo en el script.

Aquí tienes:

Código (python) [Seleccionar]
#!/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 = 20
ALFABETO = "abcdefghijklmnopqrstuvwxyz0123456789 "
FILENAME = "Test"
EXT      = ".TXT"
PATH     = "C:\\"

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

########################## 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
 FILE.write(palabra + "\n")
####################################################################

##################### VARS AUXILIARES ##############################
DEBUG = True
VERBOSE = True
variacionesConRepeticion = getVariacionesConRepeticion(ALFABETO , LONGITUD)
inicioReloj = time()
cont = 0
progreso = 0
####################################################################

FILE = open(PATH+FILENAME+EXT,"w")

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









Maldito karma

Cita de: EleKtro H@cker en 25 Julio 2012, 21:29 PM
No me ha quedado claro si quieres hacer el menú para definirlo, O simplemente indicarlo en el script.

Mi idea era indicarlo en el script, por que total, luego lo puedo modificar el un editor de textos. Y solo por curiosidad, ¿cómo se hace ése menú? Muchas gracias.  :)

Saludos.



Eleкtro

#3
Me refería a algo así (Nada de TKinter), Es más bien un "wizard" que un menú:

Código (python) [Seleccionar]
import os

FILENAME = ""
EXT      = ""
PATH     = ""

while FILENAME == "" :
 FILENAME = raw_input("""
 - Escribe el nombre para el archivo.
 
 Ej. "Test" > """)
 os.system('clear')

while EXT == "" :
 EXT = raw_input("""
 - Escribe el tipo de archivo.
 
 Ej. "TXT" > """)
 os.system('clear')

while PATH == "" :
 PATH = raw_input("""
 - Escribe la ruta para el archivo.
 
 Ej. "C:\\" > """)
 os.system('clear')

FILE = PATH+FILENAME+"."+EXT

print "FILE = " + FILE

raw_input()


Saludos