Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Maldito karma en 25 Julio 2012, 20:23 pm



Título: [PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Publicado por: Maldito karma en 25 Julio 2012, 20:23 pm
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
  1. #!/usr/bin/python
  2. #
  3. # :: Invasion Tux
  4. # :: Ultima modificacion : miercoles, 14 de enero de 2009
  5. # :: Script realizado por makiolo (makiolo@gmail.com) (Licencia Creative Commons con reconocimiento)
  6. # :: Ultima version : http://blogricardo.wordpress.com/2008/12/28/script-para-generar-diccionarios-de-fuerza-bruta/
  7. # :: Dependencias : python
  8. #
  9.  
  10. import sys, math
  11. from time import time, localtime, strftime
  12.  
  13. ########################### CONFIGURACION #########################
  14.  
  15. LONGITUD = 20
  16. ALFABETO = "abcdefghijklmnopqrstuvwxyz0123456789 "
  17.  
  18. ####################################################################
  19.  
  20. ########################## FUNCIONES ###############################
  21. def getVariacionesConRepeticion(ALFABETO , LONGITUD):
  22.  sumatorio = 0
  23.  for i in range(LONGITUD):
  24.    producto = 1
  25.    for j in range(i+1):
  26.      producto = producto * len(ALFABETO)
  27.    sumatorio = sumatorio + producto
  28.  return sumatorio
  29.  
  30. def eventoPalabraGenerada(palabra):
  31.  print palabra
  32.  
  33. ####################################################################
  34.  
  35. ##################### VARS AUXILIARES ##############################
  36. DEBUG = True
  37. VERBOSE = True
  38. variacionesConRepeticion = getVariacionesConRepeticion(ALFABETO , LONGITUD)
  39. inicioReloj = time()
  40. cont = 0
  41. progreso = 0
  42. ####################################################################
  43.  
  44. while LONGITUD > 0:
  45.  try:
  46.    contadores = []                                                     # ponemos los contadores a 0
  47.    for i in range(LONGITUD):
  48.      contadores.append(0)
  49.  
  50.    fin = False
  51.    while not fin:
  52.      if DEBUG == True:
  53.        palabra=[] # Creas una lista vacia (y liberas de paso)
  54.        for i in range(LONGITUD):
  55.          palabra.append(ALFABETO[contadores[i]]) # Vas metiendo al final letra a letra
  56.        eventoPalabraGenerada("".join(palabra)) # Envias a tu callback tada la lista unida
  57.  
  58.      if VERBOSE == True:
  59.        if (cont % 600000 == 0) and (cont != 0):
  60.          progreso = cont*100.0/variacionesConRepeticion                # porcentaje hasta ahora
  61.          progreso = round(progreso , 2)
  62.          finReloj = time() - inicioReloj                               # finReloj es lo que esta tardando el calculo
  63.          velocidad = cont / finReloj                                   # palabras procesadas por segundo
  64.          velocidad = round(velocidad , 2)
  65.          estimado = finReloj * variacionesConRepeticion / cont         # es lo que se estima en realizar todo el proceso
  66.          restante = estimado - finReloj                                # es lo que se estima en realizar lo restante
  67.          restante = restante / 60 / 60                                 # lo pasamos a horas
  68.          restante = round(restante , 2)
  69.          sys.stderr.write(str(progreso)+"% - Quedan "+str(restante)+" horas. La velocidad es de "+str(velocidad)+" palabras/seg\n")
  70.  
  71.      cont = cont + 1
  72.      actual = LONGITUD - 1                                             # Pongo actual a la derecha del todo
  73.      contadores[actual] = contadores[actual] + 1                       # Sumo 1 a las unidades
  74.  
  75.      while(contadores[actual] == len(ALFABETO)) and not fin:           # Propago el carry
  76.        if(actual == 0):
  77.          fin = True                                                    # FIN
  78.        else:
  79.          contadores[actual] = 0                                        # reinicia el actual contador
  80.          actual = actual - 1                                           # avanza a la izquierda
  81.          contadores[actual] = contadores[actual] + 1                   # y le sumo 1
  82.  
  83.    LONGITUD = LONGITUD - 1                                             # combinaciones para uno menos
  84.  
  85.  except KeyboardInterrupt:
  86.    sys.stderr.write("Interrumpido por el usuario\n")
  87.    fin = True                                                          # Fuerzo las condiciones de salida
  88.    LONGITUD = 0
  89.  
  90. if VERBOSE == True:
  91.  sys.stderr.write("Terminado al "+str(progreso)+"% - Realizadas "+str(cont)+" combinaciones de "+str(variacionesConRepeticion)+"\n")
  92.  
  93.  


Título: Re: [PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Publicado por: Eleкtro 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.

Aquí tienes:

Código
  1. #!/usr/bin/python
  2. #
  3. # :: Invasion Tux
  4. # :: Ultima modificacion : miercoles, 14 de enero de 2009
  5. # :: Script realizado por makiolo (makiolo@gmail.com) (Licencia Creative Commons con reconocimiento)
  6. # :: Ultima version : http://blogricardo.wordpress.com/2008/12/28/script-para-generar-diccionarios-de-fuerza-bruta/
  7. # :: Dependencias : python
  8. #
  9.  
  10. import sys, math
  11. from time import time, localtime, strftime
  12.  
  13. ########################### CONFIGURACION #########################
  14.  
  15. LONGITUD = 20
  16. ALFABETO = "abcdefghijklmnopqrstuvwxyz0123456789 "
  17. FILENAME = "Test"
  18. EXT      = ".TXT"
  19. PATH     = "C:\\"
  20.  
  21. ####################################################################
  22.  
  23. ########################## FUNCIONES ###############################
  24. def getVariacionesConRepeticion(ALFABETO , LONGITUD):
  25.  sumatorio = 0
  26.  for i in range(LONGITUD):
  27.    producto = 1
  28.    for j in range(i+1):
  29.      producto = producto * len(ALFABETO)
  30.    sumatorio = sumatorio + producto
  31.  return sumatorio
  32.  
  33. def eventoPalabraGenerada(palabra):
  34.  print palabra
  35.  FILE.write(palabra + "\n")
  36. ####################################################################
  37.  
  38. ##################### VARS AUXILIARES ##############################
  39. DEBUG = True
  40. VERBOSE = True
  41. variacionesConRepeticion = getVariacionesConRepeticion(ALFABETO , LONGITUD)
  42. inicioReloj = time()
  43. cont = 0
  44. progreso = 0
  45. ####################################################################
  46.  
  47. FILE = open(PATH+FILENAME+EXT,"w")
  48.  
  49. while LONGITUD > 0:
  50.  try:
  51.    contadores = []                                                     # ponemos los contadores a 0
  52.    for i in range(LONGITUD):
  53.      contadores.append(0)
  54.  
  55.    fin = False
  56.    while not fin:
  57.      if DEBUG == True:
  58.        palabra=[] # Creas una lista vacia (y liberas de paso)
  59.        for i in range(LONGITUD):
  60.          palabra.append(ALFABETO[contadores[i]]) # Vas metiendo al final letra a letra
  61.        eventoPalabraGenerada("".join(palabra)) # Envias a tu callback tada la lista unida
  62.  
  63.      if VERBOSE == True:
  64.        if (cont % 600000 == 0) and (cont != 0):
  65.          progreso = cont*100.0/variacionesConRepeticion                # porcentaje hasta ahora
  66.          progreso = round(progreso , 2)
  67.          finReloj = time() - inicioReloj                               # finReloj es lo que esta tardando el calculo
  68.          velocidad = cont / finReloj                                   # palabras procesadas por segundo
  69.          velocidad = round(velocidad , 2)
  70.          estimado = finReloj * variacionesConRepeticion / cont         # es lo que se estima en realizar todo el proceso
  71.          restante = estimado - finReloj                                # es lo que se estima en realizar lo restante
  72.          restante = restante / 60 / 60                                 # lo pasamos a horas
  73.          restante = round(restante , 2)
  74.          sys.stderr.write(str(progreso)+"% - Quedan "+str(restante)+" horas. La velocidad es de "+str(velocidad)+" palabras/seg\n")
  75.  
  76.      cont = cont + 1
  77.      actual = LONGITUD - 1                                             # Pongo actual a la derecha del todo
  78.      contadores[actual] = contadores[actual] + 1                       # Sumo 1 a las unidades
  79.  
  80.      while(contadores[actual] == len(ALFABETO)) and not fin:           # Propago el carry
  81.        if(actual == 0):
  82.          fin = True                                                    # FIN
  83.        else:
  84.          contadores[actual] = 0                                        # reinicia el actual contador
  85.          actual = actual - 1                                           # avanza a la izquierda
  86.          contadores[actual] = contadores[actual] + 1                   # y le sumo 1
  87.  
  88.    LONGITUD = LONGITUD - 1                                             # combinaciones para uno menos
  89.  
  90.  except KeyboardInterrupt:
  91.    sys.stderr.write("Interrumpido por el usuario\n")
  92.    fin = True                                                          # Fuerzo las condiciones de salida
  93.    LONGITUD = 0
  94.  
  95. if VERBOSE == True:
  96.  sys.stderr.write("Terminado al "+str(progreso)+"% - Realizadas "+str(cont)+" combinaciones de "+str(variacionesConRepeticion)+"\n")
  97.  
  98.  


Título: Re: [PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Publicado por: Maldito karma en 25 Julio 2012, 21:59 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.


Título: Re: [PYTHON] Cómo puedo indicar el directorio y tipo de archivo?
Publicado por: Eleкtro en 25 Julio 2012, 22:37 pm
Me refería a algo así (Nada de TKinter), Es más bien un "wizard" que un menú:

Código
  1. import os
  2.  
  3. FILENAME = ""
  4. EXT      = ""
  5. PATH     = ""
  6.  
  7. while FILENAME == "" :
  8.  FILENAME = raw_input("""
  9.  - Escribe el nombre para el archivo.
  10.  
  11.  Ej. "Test" > """)
  12.  os.system('clear')
  13.  
  14. while EXT == "" :
  15.  EXT = raw_input("""
  16.  - Escribe el tipo de archivo.
  17.  
  18.  Ej. "TXT" > """)
  19.  os.system('clear')
  20.  
  21. while PATH == "" :
  22.  PATH = raw_input("""
  23.  - Escribe la ruta para el archivo.
  24.  
  25.  Ej. "C:\\" > """)
  26.  os.system('clear')
  27.  
  28. FILE = PATH+FILENAME+"."+EXT
  29.  
  30. print "FILE = " + FILE
  31.  
  32. raw_input()

Saludos