HOLA!!!
Hoy veremos como crear un Creador de Diccionarios con VB.NET!
1)Primero crearemos el proyecto
(http://i.imgur.com/umafS5w.png)
2)Luego en el Form1 Realizar la siguente interfaz (respetando los nombres de los controles):
(http://i.imgur.com/kwGADcR.png)
2.b) si queremos les ponemos los .Text para que quede asi:
(http://i.imgur.com/DDJbEtA.png)
3)Codigo:
3.a)Arriba de la clase Form1 ponemos lo siguiente:
Imports System.IO 'importamos esta libreria para poder trabajar con archivos
3.b)Dentro de la clase Form1 ponemos lo siguiente:
Const Sym As String = "/\!·$%&/()='""¡¿?<>., :;-_*+" 'Simbolos
Const Num As String = "0123456789" 'Numeros
Const Min As String = "abcdefghijklmnopqrstuvwxyz" 'Letras Minusculas
Const May As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'Letras Mayusculas
Const SpL As String = "áéíóúàèìòùâêîôûäëïöüçñ" 'Letras Especiales Minusculas
Const SpU As String = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÇÑ" 'Letras Especiales Mayusculas
3.c)Una vez esta listo el formulario y los controles le damos doble click a btnIniciar y dejamos este codigo dentro:
'by 79137913 for Underc0de.org
'creamos secuencia de caracteres a utilizar
Dim Letras As String = "" 'string que contendra todos los caracteres a combinar para hacer el diccionario
If checkNumeros.Checked Then Letras = Letras & Num 'si Numeros esta tildado agregamos eso a la cadena
If checkSimbolos.Checked Then Letras = Letras & Sym 'si Simbolos esta tildado agregamos eso a la cadena
If checkMinusculas.Checked Then Letras = Letras & Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
If checkMayusculas.Checked Then Letras = Letras & May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
If checkEspMin.Checked Then Letras = Letras & SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
If checkEspMay.Checked Then Letras = Letras & SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
If checkAddMore.Checked Then Letras = Letras & txtAddMore.Text 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
Dim CantLet As Long = Letras.Length - 1 'cantidad de letras
Dim BufferPalabras As Long = 10000
Dim Palabras(BufferPalabras) As String 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
Dim CT As Long = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
Dim UbicacionArchivo As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Diccionario.txt" 'ubicacion del archivo de salida (en mis documentos)
Dim CantPos As Long = 0 'Cantidad de letras palabra actual
Dim Desde As Long = CInt(txtD.Text) 'desde que cantidad de caracteres
Dim Hasta As Long = CInt(txtH.Text) 'hasta que cantidad de caracteres
Dim Posiciones() As Long
MsgBox("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.",, "ATENCION")
Dim fs As FileStream = File.Create(UbicacionArchivo) 'creamos o sobreescribimos el archivo
fs.Close() 'cerramos el archivo para que se pueda escribir
For y = 0 To Hasta - Desde
CantPos = Desde + y - 1 'establecemos el tamañode la combinacion actual
ReDim Posiciones(CantPos)
Do
For x = 0 To CantPos 'una vez por cada posicion que tenga que tener la palabra
Palabras(CT) = Palabras(CT) & Letras(Posiciones(x)) 'armamos una combinacion uniendo los caracteres de la cadena letras
Next x
CT += 1 'incrementamos CT en 1
Posiciones(0) += 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
For x = 0 To 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
If Posiciones(x) > CantLet Then Posiciones(x) = 0 : Posiciones(x + 1) += 1
Next
If CT = BufferPalabras + 1 Then
File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
CT = 0 'volvemos el contador a 0
ReDim Palabras(BufferPalabras) 'borramos el buffer de palabras
End If
Loop Until Posiciones(CantPos) = CantLet + 1
Next y
If CT > 0 Then 'si hay palabras pendientes de escribir
ReDim Preserve Palabras(CT - 1)
File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
CT = 0
End If
MsgBox("Terminado, mira en " & UbicacionArchivo & " , y encontraras el diccionario.",, "ATENCION")
El codigo Completo del proyecto quedaria asi:
Imports System.IO 'importamos esta libreria para poder trabajar con archivos
Public Class Form1
Const Sym As String = "/\!·$%&/()='""¡¿?<>., :;-_*+" 'Simbolos
Const Num As String = "0123456789" 'Numeros
Const Min As String = "abcdefghijklmnopqrstuvwxyz" 'Letras Minusculas
Const May As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'Letras Mayusculas
Const SpL As String = "áéíóúàèìòùâêîôûäëïöüçñ" 'Letras Especiales Minusculas
Const SpU As String = "ÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÄËÏÖÜÇÑ" 'Letras Especiales Mayusculas
Private Sub btnIniciar_Click(sender As Object, e As EventArgs) Handles btnIniciar.Click
'by 79137913 for Underc0de.org
'creamos secuencia de caracteres a utilizar
Dim Letras As String = "" 'string que contendra todos los caracteres a combinar para hacer el diccionario
If checkNumeros.Checked Then Letras = Letras & Num 'si Numeros esta tildado agregamos eso a la cadena
If checkSimbolos.Checked Then Letras = Letras & Sym 'si Simbolos esta tildado agregamos eso a la cadena
If checkMinusculas.Checked Then Letras = Letras & Min 'si Letras Minusculas esta tildado agregamos eso a la cadena
If checkMayusculas.Checked Then Letras = Letras & May 'si Letras Mayusculas esta tildado agregamos eso a la cadena
If checkEspMin.Checked Then Letras = Letras & SpL 'si Letras Especiales Minusculas esta tildado agregamos eso a la cadena
If checkEspMay.Checked Then Letras = Letras & SpU 'si Letras Especiales Mayusculas esta tildado agregamos eso a la cadena
If checkAddMore.Checked Then Letras = Letras & txtAddMore.Text 'si Agregar Siguientes Caracters esta tildado agregamos eso a la cadena
Dim CantLet As Long = Letras.Length - 1 'cantidad de letras
Dim BufferPalabras As Long = 10000
Dim Palabras(BufferPalabras) As String 'aqui se guardaran las combinaciones mientras las vamos generando en este ejemplo iremos guardando de a 10000 combinaciones
Dim CT As Long = 0 'este contador nos dira cuantas palabras estan pendientes de guardar en el archivo
Dim UbicacionArchivo As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\Diccionario.txt" 'ubicacion del archivo de salida (en mis documentos)
Dim CantPos As Long = 0 'Cantidad de letras palabra actual
Dim Desde As Long = CInt(txtD.Text) 'desde que cantidad de caracteres
Dim Hasta As Long = CInt(txtH.Text) 'hasta que cantidad de caracteres
Dim Posiciones() As Long
MsgBox("Se iniciara el proceso, puede tardar mucho, para detener cierre la aplicacion con el Administrador de Tareas.",, "ATENCION")
Dim fs As FileStream = File.Create(UbicacionArchivo) 'creamos o sobreescribimos el archivo
fs.Close() 'cerramos el archivo para que se pueda escribir
For y = 0 To Hasta - Desde
CantPos = Desde + y - 1 'establecemos el tamañode la combinacion actual
ReDim Posiciones(CantPos)
Do
For x = 0 To CantPos 'una vez por cada posicion que tenga que tener la palabra
Palabras(CT) = Palabras(CT) & Letras(Posiciones(x)) 'armamos una combinacion uniendo los caracteres de la cadena letras
Next x
CT += 1 'incrementamos CT en 1
Posiciones(0) += 1 'incrementamos la primera letra de posiciones (para que pase de "a" a "b" por ejemplo)
For x = 0 To 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
If Posiciones(x) > CantLet Then Posiciones(x) = 0 : Posiciones(x + 1) += 1
Next
If CT = BufferPalabras + 1 Then
File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
CT = 0 'volvemos el contador a 0
ReDim Palabras(BufferPalabras) 'borramos el buffer de palabras
End If
Loop Until Posiciones(CantPos) = CantLet + 1
Next y
If CT > 0 Then 'si hay palabras pendientes de escribir
ReDim Preserve Palabras(CT - 1)
File.AppendAllLines(UbicacionArchivo, Palabras) 'escribimos nuestro buffer de palabras en el archivo linea por linea
CT = 0
End If
MsgBox("Terminado, mira en " & UbicacionArchivo & " , y encontraras el diccionario.",, "ATENCION")
End Sub
End Class
Cuando ya colocamos el codigo solo queda iniciar (apretar F5) y empezar a usarlo, tildan los caracteres que quieren usar o ponen sus caracteres a eleccion en el cuadro de texto y tildan el checkAddMore,luego presionan Button1 y la magia comienza:
(http://i.imgur.com/DDJbEtA.png)
Notas: Puede tardar mucho tiempo, pero los diccionarios siempre tardan mucho en generarse, para mejorar la performance pueden incrementar la variable BufferPalabras, pero el programa consumira mas memoria RAM.
Descargar Source: http://www.mediafire.com/file/tu7oqinqnvo9ltx/BFDCBY79137913.rar/file
Hecho y redactado por 79137913
Agradecimientos @ANTRAX
Brute Force Dictionary Creator VBNET
GRACIAS POR LEER!!!
Gracias Buen trabajo.
El link esta caído: Descargar Source: http://www.mediafire.com/file/3y27q78e782xzd8/BruteForceDictionaryCreator.rar
HOLA!!!
Link Resubido!
http://www.mediafire.com/file/tu7oqinqnvo9ltx/BFDCBY79137913.rar/file
GRACIAS POR LEER!!!