Les traigo el siguiente Port de una aplicación echa por
@79137913 (https://underc0de.org/foro/index.php?action=profile;u=21192) en el post de Crea tu propio Creador de Diccionarios por Fuerza Bruta en VBNet en solo 3 Pasos (https://underc0de.org/foro/visual-studio-net/crea-tu-propio-creador-de-diccionarios-por-fuerza-bruta-en-vbnet-en-solo-3-pasos/)
(http://i.imgur.com/dLla5zC.png)
Descarga: Mega (https://mega.nz/#!yNoQHYrJ!5QnFzHHqkK5jRKimYIgQt-unbzSrdf0WDGOnH3-WR1Y)
Para hacer funcionar la aplicación solo necesitas ejecutar el archivo
Dictionary.exe
Código fuente
Información
- Compatible con Cramel: 2.0.0.362
- Librerías requeridas: [Cramel] Componentes para Ventanas (https://underc0de.org/foro/cramel/(cramel)-componentes-para-ventanas/), [Cramel] Archivo.cml ~ Lee y escribe archivos (https://underc0de.org/foro/cramel/(cramel)-archivo-cml-lee-y-escribe-archivos)
Aquí les traigo el source del Brute Force Dictionary Creator, como verán usa el mismo algoritmo para la generación del diccionario
Archivo
Dictionary.cml'/**
' * Brute Force Dictionary
' *
' * @by @79137913
' * @Ported by Jovani Pérez Damián (@BlackBlex)
' *
' * ==============Information==============
' * Filename: Dictionary.cml
' * ---------------------------------------
'*/
Importar "Cramel.cml"
Importar "MSVBVM60\MSVBVM60.cml"
Importar "Constantes.cml"
Importar "Interfaz\Interfaz.cml"
Importar "Archivo.cml"
Var frame:CMLframe
Var checkNum, checkMin, checkEspMin, checkSim, checkMay, checkEspMay, checkAdd:CMLCheckbox
Var cajaAdd, cajaDe, cajaHas:CMLCajatexto
Var etiquetaGen, etiquetaHas, etiquetaCar:CMLEtiqueta
Var botonGenerar:CMLBotón
Var grupoLetras:CMLGroupbox
Var diccionarioArchivo:ArchivoC
Const Sym = "/\!·$%&/()='""¡¿?<>., :;-_*+" 'Simbolos
Const Num = "0123456789" 'Numeros
Const Min = "abcdefghijklmnopqrstuvwxyz" 'Letras Minusculas
Const May = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'Letras Mayusculas
Const SpL = "áéíóúàèìòùâêîôûäëïöüçñ" 'Letras Especiales Minusculas
Const SpU = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÇÑ" 'Letras Especiales Mayusculas
Crear frame
Crear checkNum
Crear checkMin
Crear checkEspMin
Crear checkSim
Crear checkMay
Crear checkEspMay
Crear checkAdd
Crear cajaAdd
Crear cajaDe
Crear cajaHas
Crear etiquetaGen
Crear etiquetaHas
Crear etiquetaCar
Crear botonGenerar
Crear grupoLetras
Crear diccionarioArchivo
frame.Texto = "Brute Force Dictionary Creator .Net by 79137913"
frame.Ancho = 410
frame.Alto = 250
frame.Padre = 0
frame.Centrar = 1
frame.construir(WS_OVERLAPPED+WS_CAPTION+WS_SYSMENU)
grupoLetras.Texto = "Elige las letras que contendra el diccionario"
grupoLetras.PosX = 10
grupoLetras.PosY = 10
grupoLetras.Ancho = frame.Ancho - 30
grupoLetras.Alto = (frame.Alto/2) + 10
grupoLetras.Padre = frame.hWnd
grupoLetras.fuente.Nombre = "Arial"
grupoLetras.fuente.Tamaño = 11
grupoLetras.construir()
checkNum.Texto = "Numeros"
checkNum.PosX = 20
checkNum.PosY = 35
checkNum.Ancho = 80
checkNum.Alto = 20
checkNum.Padre = frame.hWnd
checkNum.fuente.Nombre = "Arial"
checkNum.fuente.Tamaño = 11
checkNum.construir()
checkMin.Texto = "Minusculas"
checkMin.PosX = 10 + (checkNum.Ancho + checkNum.PosX)
checkMin.PosY = checkNum.PosY
checkMin.Ancho = 90
checkMin.Alto = 20
checkMin.Padre = frame.hWnd
checkMin.fuente.Nombre = "Arial"
checkMin.fuente.Tamaño = 11
checkMin.construir()
checkEspMin.Texto = "Especiales Minusculas"
checkEspMin.PosX = 10 + (checkMin.Ancho + checkMin.PosX)
checkEspMin.PosY = checkMin.PosY
checkEspMin.Ancho = 170
checkEspMin.Alto = 20
checkEspMin.Padre = frame.hWnd
checkEspMin.fuente.Nombre = "Arial"
checkEspMin.fuente.Tamaño = 11
checkEspMin.construir()
checkSim.Texto = "Simbolos"
checkSim.PosX = 20
checkSim.PosY = 5 + (checkNum.Alto + checkNum.PosY)
checkSim.Ancho = 80
checkSim.Alto = 20
checkSim.Padre = frame.hWnd
checkSim.fuente.Nombre = "Arial"
checkSim.fuente.Tamaño = 11
checkSim.construir()
checkMay.Texto = "Mayusculas"
checkMay.PosX = 10 + (checkSim.Ancho + checkSim.PosX)
checkMay.PosY = checkSim.PosY
checkMay.Ancho = 95
checkMay.Alto = 20
checkMay.Padre = frame.hWnd
checkMay.fuente.Nombre = "Arial"
checkMay.fuente.Tamaño = 11
checkMay.construir()
checkEspMay.Texto = "Especiales Mayusculas"
checkEspMay.PosX = 5 + (checkMay.Ancho + checkMay.PosX)
checkEspMay.PosY = checkMay.PosY
checkEspMay.Ancho = 170
checkEspMay.Alto = 20
checkEspMay.Padre = frame.hWnd
checkEspMay.fuente.Nombre = "Arial"
checkEspMay.fuente.Tamaño = 11
checkEspMay.construir()
checkAdd.Texto = "Agregar los siguientes caracteres"
checkAdd.PosX = 20
checkAdd.PosY = 5 + (checkSim.Alto + checkSim.PosY)
checkAdd.Ancho = frame.Ancho - 60
checkAdd.Alto = 20
checkAdd.Padre = frame.hWnd
checkAdd.fuente.Nombre = "Arial"
checkAdd.fuente.Tamaño = 11
checkAdd.eventos.Mouse.Clic@ = checkAddEventClick@
checkAdd.construir()
cajaAdd.PosX = 20
cajaAdd.PosY = 5 + (checkAdd.Alto + checkAdd.PosY)
cajaAdd.Ancho = frame.Ancho - 50
cajaAdd.Alto = 25
cajaAdd.Padre = frame.hWnd
cajaAdd.fuente.Nombre = "Arial"
cajaAdd.fuente.Tamaño = 11
cajaAdd.Deshabilitado = Verdad
cajaAdd.construir()
grupoLetras.cerrar()
etiquetaGen.Texto = "Generar palabras desde"
etiquetaGen.PosX = 10
etiquetaGen.PosY = (grupoLetras.Alto + grupoLetras.PosY) + 10
etiquetaGen.Ancho = 160
etiquetaGen.Alto = 30
etiquetaGen.Padre = frame.hWnd
etiquetaGen.fuente.Nombre = "Arial"
etiquetaGen.fuente.Tamaño = 11
etiquetaGen.construir()
cajaDe.Texto = "2"
cajaDe.PosX = (etiquetaGen.PosX + etiquetaGen.Ancho)+2
cajaDe.PosY = etiquetaGen.PosY-5
cajaDe.Ancho = 30
cajaDe.Alto = 25
cajaDe.Padre = frame.hWnd
cajaDe.fuente.Nombre = "Arial"
cajaDe.fuente.Tamaño = 11
cajaDe.construir(ES_NUMBER)
cajaDe.Limite = 2
etiquetaHas.Texto = "hasta"
etiquetaHas.PosX = (cajaDe.PosX + cajaDe.Ancho) + 5
etiquetaHas.PosY = etiquetaGen.PosY
etiquetaHas.Ancho = 40
etiquetaHas.Alto = 30
etiquetaHas.Padre = frame.hWnd
etiquetaHas.fuente.Nombre = "Arial"
etiquetaHas.fuente.Tamaño = 11
etiquetaHas.construir()
cajaHas.Texto = "4"
cajaHas.PosX = (etiquetaHas.PosX + etiquetaHas.Ancho)+2
cajaHas.PosY = etiquetaGen.PosY-5
cajaHas.Ancho = 30
cajaHas.Alto = 25
cajaHas.Padre = frame.hWnd
cajaHas.fuente.Nombre = "Arial"
cajaHas.fuente.Tamaño = 11
cajaHas.construir(ES_NUMBER)
cajaHas.Limite = 2
etiquetaCar.Texto = "caracteres"
etiquetaCar.PosX = (cajaHas.PosX + cajaHas.Ancho) + 5
etiquetaCar.PosY = etiquetaHas.PosY
etiquetaCar.Ancho = 150
etiquetaCar.Alto = 30
etiquetaCar.Padre = frame.hWnd
etiquetaCar.fuente.Nombre = "Arial"
etiquetaCar.fuente.Tamaño = 11
etiquetaCar.construir()
botonGenerar.Texto = "Generar"
botonGenerar.PosX = frame.Ancho - 90
botonGenerar.PosY = frame.Alto - 70
botonGenerar.Ancho = 70
botonGenerar.Alto = 30
botonGenerar.Padre = frame.hWnd
botonGenerar.fuente.Nombre = "Arial"
botonGenerar.fuente.Tamaño = 11
botonGenerar.eventos.Mouse.Clic@ = botonGenerarEventClick@
botonGenerar.construir()
frame.mostrar
frame.correr
Proc checkAddEventClick(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
Seleccionar Botón
Caso BOTON_IZQUIERDO
Seleccionar Presionado
Caso Falso
Si ( checkAdd.estaSeleccionado ) Entonces
cajaAdd.Deshabilitado = Falso
SiNo
cajaAdd.Deshabilitado = Verdad
FinSi
FinSeleccionar
FinSeleccionar
FinProc
Proc botonGenerarEventClick(hWnd:Entero,Botón:Byte,Presionado:Booleano,X,Y:Entero)
Seleccionar Botón
Caso BOTON_IZQUIERDO
Seleccionar Presionado
Caso Falso
Var hilo, hiloID:Entero
hilo = CreateThread(Nulo, 0, generarDic@, Nulo, 0, hiloID@)
FinSeleccionar
FinSeleccionar
FinProc
Proc generarDic
Var CantLet, BufferPalabras, CT, CantPos, Desde, Hasta, Posiciones[]:Entero
Var Palabras[]:Cadena
Var Letras:Cadena 'string que contendra todos los caracteres a combinar para hacer el diccionario
Letras = ""
'by 79137913 for Underc0de.org
'creamos secuencia de caracteres a utilizar
Si (checkNum.estaSeleccionado) Entonces
Letras = Letras + Num 'si Numeros esta tildado agregamos eso a la cadena
FinSi
Si (checkSim.estaSeleccionado) Entonces
Letras = Letras + Sym 'si Simbolos esta tildado agregamos eso a la cadena
FinSi
Si (checkMin.estaSeleccionado) Entonces
Letras = Letras + Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
FinSi
Si (checkMay.estaSeleccionado) Entonces
Letras = Letras + May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
FinSi
Si (checkEspMin.estaSeleccionado) Entonces
Letras = Letras + SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
FinSi
Si (checkEspMay.estaSeleccionado) Entonces
Letras = Letras + SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
FinSi
Si (checkAdd.estaSeleccionado) Entonces
Letras = Letras + cajaAdd.cTexto 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
FinSi
CantLet = CadLong(Letras) - 1 'cantidad de letras
BufferPalabras = 10000
ReDim Palabras, BufferPalabras 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
CT = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
CantPos = 0 'Cantidad de letras palabra actual
Desde = CadEnt(cajaDe.cTexto) 'desde que cantidad de caracteres
Hasta = CadEnt(cajaHas.cTexto) 'hasta que cantidad de caracteres
Mensaje("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.", "ATENCION")
diccionarioArchivo.abrir("diccionario.txt", GENERIC_WRITE, CREATE_ALWAYS)
Var x, y, palfile:Entero
y = 0
Contar y a (Hasta - Desde)
CantPos = (Desde + y) - 1 'establecemos el tamañode la combinacion actual
ReDim Posiciones, CantPos
Repetir
x = 0
Contar x a CantPos 'una vez por cada posicion que tenga que tener la palabra
Palabras[CT] = Palabras[CT] + Parte(Letras, Posiciones[x]+1, Posiciones[x]+1) 'armamos una combinacion uniendo los caracteres de la cadena letras
Seguir
CT = CT + 1 'incrementamos CT en 1
Posiciones[0] = Posiciones[0] + 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
x = 0
Contar x a (CantPos - 1) 'nos fijamos si alguna posicion es mayor a la cantidad de letras si es asi volvemos a 0 esa posicion e incrementamos la siguiente
Si (Posiciones[x] > CantLet ) Entonces
Posiciones[x] = 0
Posiciones[x+1] = Posiciones[x+1] + 1
FinSi
Seguir
Si (CT = (BufferPalabras + 1) ) Entonces
palfile = 0
Mientras palfile <= &Palabras
diccionarioArchivo.escribir(Palabras[palfile] + CRLF) 'escribimos nuestro buffer de palabras en el archivo linea por linea
palfile = palfile + 1
FinMientras
CT = 0 'volvemos el contador a 0
ReDim Palabras, BufferPalabras 'borramos el buffer de palabras
FinSi
HastaQue Posiciones[CantPos] = CantLet +1
Seguir
Si (CT > 0) Entonces 'si hay palabras pendientes de escribir
ReDim Preservar Palabras, (CT - 1)
palfile = 0
Mientras palfile < &Palabras
diccionarioArchivo.escribir(Palabras[palfile] + CRLF) 'escribimos nuestro buffer de palabras en el archivo linea por linea
palfile = palfile + 1
FinMientras
CT = 0
FinSi
Mensaje("Terminado archivo guardado como diccionario.txt", "ATENCION")
diccionarioArchivo.cerrar()
FinProc
Destruir diccionarioArchivo
Destruir grupoLetras
Destruir botonGenerar
Destruir etiquetaCar
Destruir etiquetaHas
Destruir etiquetaGen
Destruir cajaHas
Destruir cajaDe
Destruir cajaAdd
Destruir checkAdd
Destruir checkEspMay
Destruir checkMay
Destruir checkSim
Destruir checkEspMin
Destruir checkMin
Destruir checkNum
Destruir frame