[Cramel] Brute Force Dictionary Creator by 79137913 [Aplicación + Source]

Iniciado por BlackBlex, Julio 01, 2017, 07:04:10 PM

Tema anterior - Siguiente tema

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

Les traigo el siguiente Port de una aplicación echa por @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en el post de No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Descarga: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Para hacer funcionar la aplicación solo necesitas ejecutar el archivo Dictionary.exe





Código fuente

Información

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
Código: Cramel
'/**
' * 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