Advertisement
TrackMaze

GeneratorBF.py

Feb 23rd, 2013
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.88 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf8 -*-
  3. ######################
  4. #Elaborado por TrackMaze HG
  5. #23 de febrero de 2013
  6. #Interprete: python2.7
  7. #TrackMaze.blogspot.com
  8. ######################
  9.  
  10. def generador(abecedario,cadena,n,m,procesos)#abc es el sistema, cadena es donde se almacenan las combinaciones, n es for en que estamos, m es la cantidad de for que necesitamos
  11.     if n!=m: #aumentamos n hasta que sea igual a m, alli acaba la recursion
  12.         global porc,cont
  13.         if ((cont*100.)/procesos)>=porc-1 and ((cont*100.)/procesos)<=porc+1:   #imprimimos en pantalla, cuando llevemos el 5% de las operaciones
  14.             print "#",
  15.             porc+=5
  16.            
  17.         for x in abecedario:    #iniciamos un for con el abecedario
  18.             crack=cadena+x  #almacenamos la cadena con la letra x que le corresponda
  19.             generador(abecedario,crack,n+1,m,procesos)  #llamamos a la recursion, con la nueva cadena y el nuevo n+1
  20.             cont+=1
  21.     else:   #acabamos la recursion
  22.         archivo=open("diccionario_"+str(n)+".txt","a")  #creamos o abrimos un archivo
  23.         for x in abecedario:    #el ultimo for de toda la recursion    
  24.             final=cadena+x  #almacenamos la cadena final
  25.             archivo.write(final+"\n")   #la escribimos en el archivo creado y le agregamos un salto de linea
  26.             cont+=1
  27.         archivo.close() #cerramos el manejo de archivos
  28.        
  29. def separar(cadena):    #separamos cadenas para permitir las opciones y el ingreso de un diccionario propio
  30.     cant_dicc=cadena.split("|")
  31.     if (cadena.find("|")==-1):
  32.         return int(cant_dicc[0]),"abcdefghijklmnopqrstuvwxyz" #se utilizara por defecto este diccionario
  33.     else:
  34.         return int(cant_dicc[0]), cant_dicc[1]
  35.  
  36. print """   _____                           _             ____  ______
  37.  / ____|                         | |           |  _ \|  ____|
  38. | |  __  ___ _ __   ___ _ __ __ _| |_ ___  _ __| |_) | |__  
  39. | | |_ |/ _ \ '_ \ / _ \ '__/ _` | __/ _ \| '__|  _ <|  __|  
  40. | |__| |  __/ | | |  __/ | | (_| | || (_) | |  | |_) | |    
  41.  \_____|\___|_| |_|\___|_|  \__,_|\__\___/|_|  |____/|_|    
  42.          TrackMaze-2013 | http://trackmaze.blogspot.com/
  43.          
  44.    [1] Generar Diccionario de longitud fija.
  45.    [2] Generar Diccionarios en rango de longitudes.
  46.    [3] Generar Diccionarios desde cero hasta una longitud.
  47. [+]-----------------------------------------------------------------[+]"""
  48.  
  49. while True: #generamos la interfaz
  50.     a=raw_input("[+] $ ... ")
  51.     N,abc=separar(a)
  52.     if a!="":
  53.         cont=0
  54.         porc=5
  55.         if (N==1):
  56.             longitud=input("[+] $ ...... Ingrese la longitud del unico diccionario a generar: ")
  57.             math_cont=len(abc)**longitud
  58.             print "[+]-----------------------------------------------------------------[+]"
  59.             print "[+] $ Generando ",
  60.             generador(abc,"",1,longitud,math_cont)
  61.             print "\n[+]-----------------------------------------------------------------[+]"
  62.            
  63.         elif (N==2):
  64.             longitud_min=input("[+] $ ...... Ingresa la longitud de arranque: ")
  65.             longitud_max=input("[+] $ ...... Ingresa la longitud maxima a alcanzar: ")
  66.             print "[+]-----------------------------------------------------------------[+]"
  67.            
  68.             for x in range (longitud_min,longitud_max+1):
  69.                 math_cont=len(abc)**x
  70.                 print "[+] $ Generando ",
  71.                 generador(abc,"",1,x,math_cont)
  72.                 print "\n[+]-----------------------------------------------------------------[+]"
  73.            
  74.         elif (N==3):
  75.             longitud_max=input("[+] $ ...... Ingresa la longitud maxima a alcanzar: ")
  76.             print "[+]-----------------------------------------------------------------[+]"
  77.             for x in range(1,longitud_max+1):
  78.                 math_cont=len(abc)**x
  79.                 print "[+] $ Generando ",
  80.                 generador(abc,"",1,x,math_cont)
  81.                 print "\n[+]-----------------------------------------------------------------[+]"
  82.         else:
  83.             print "[+] $ ... "
  84.            
  85.         print "[+]---------------------DICCIONARIO-COMPLETO------------------------[+]"
  86.         print "[+]-----------------------------------------------------------------[+]"
  87.         break
  88.     else:
  89.         print "[+] ... Error, debe selecionar una opcion"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement