Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf8 -*-
- ######################
- #Elaborado por TrackMaze HG
- #23 de febrero de 2013
- #Interprete: python2.7
- #TrackMaze.blogspot.com
- ######################
- 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
- if n!=m: #aumentamos n hasta que sea igual a m, alli acaba la recursion
- global porc,cont
- if ((cont*100.)/procesos)>=porc-1 and ((cont*100.)/procesos)<=porc+1: #imprimimos en pantalla, cuando llevemos el 5% de las operaciones
- print "#",
- porc+=5
- for x in abecedario: #iniciamos un for con el abecedario
- crack=cadena+x #almacenamos la cadena con la letra x que le corresponda
- generador(abecedario,crack,n+1,m,procesos) #llamamos a la recursion, con la nueva cadena y el nuevo n+1
- cont+=1
- else: #acabamos la recursion
- archivo=open("diccionario_"+str(n)+".txt","a") #creamos o abrimos un archivo
- for x in abecedario: #el ultimo for de toda la recursion
- final=cadena+x #almacenamos la cadena final
- archivo.write(final+"\n") #la escribimos en el archivo creado y le agregamos un salto de linea
- cont+=1
- archivo.close() #cerramos el manejo de archivos
- def separar(cadena): #separamos cadenas para permitir las opciones y el ingreso de un diccionario propio
- cant_dicc=cadena.split("|")
- if (cadena.find("|")==-1):
- return int(cant_dicc[0]),"abcdefghijklmnopqrstuvwxyz" #se utilizara por defecto este diccionario
- else:
- return int(cant_dicc[0]), cant_dicc[1]
- print """ _____ _ ____ ______
- / ____| | | | _ \| ____|
- | | __ ___ _ __ ___ _ __ __ _| |_ ___ _ __| |_) | |__
- | | |_ |/ _ \ '_ \ / _ \ '__/ _` | __/ _ \| '__| _ <| __|
- | |__| | __/ | | | __/ | | (_| | || (_) | | | |_) | |
- \_____|\___|_| |_|\___|_| \__,_|\__\___/|_| |____/|_|
- TrackMaze-2013 | http://trackmaze.blogspot.com/
- [1] Generar Diccionario de longitud fija.
- [2] Generar Diccionarios en rango de longitudes.
- [3] Generar Diccionarios desde cero hasta una longitud.
- [+]-----------------------------------------------------------------[+]"""
- while True: #generamos la interfaz
- a=raw_input("[+] $ ... ")
- N,abc=separar(a)
- if a!="":
- cont=0
- porc=5
- if (N==1):
- longitud=input("[+] $ ...... Ingrese la longitud del unico diccionario a generar: ")
- math_cont=len(abc)**longitud
- print "[+]-----------------------------------------------------------------[+]"
- print "[+] $ Generando ",
- generador(abc,"",1,longitud,math_cont)
- print "\n[+]-----------------------------------------------------------------[+]"
- elif (N==2):
- longitud_min=input("[+] $ ...... Ingresa la longitud de arranque: ")
- longitud_max=input("[+] $ ...... Ingresa la longitud maxima a alcanzar: ")
- print "[+]-----------------------------------------------------------------[+]"
- for x in range (longitud_min,longitud_max+1):
- math_cont=len(abc)**x
- print "[+] $ Generando ",
- generador(abc,"",1,x,math_cont)
- print "\n[+]-----------------------------------------------------------------[+]"
- elif (N==3):
- longitud_max=input("[+] $ ...... Ingresa la longitud maxima a alcanzar: ")
- print "[+]-----------------------------------------------------------------[+]"
- for x in range(1,longitud_max+1):
- math_cont=len(abc)**x
- print "[+] $ Generando ",
- generador(abc,"",1,x,math_cont)
- print "\n[+]-----------------------------------------------------------------[+]"
- else:
- print "[+] $ ... "
- print "[+]---------------------DICCIONARIO-COMPLETO------------------------[+]"
- print "[+]-----------------------------------------------------------------[+]"
- break
- else:
- print "[+] ... Error, debe selecionar una opcion"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement