Crea tu propio HashCracker en VBNet en solo 3 Pasos

Iniciado por 79137913, Septiembre 09, 2019, 10:07:09 AM

Tema anterior - Siguiente tema

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

HOLA!!!

Imaginemos que utilizando el No tienes permitido ver enlaces. Registrate o Entra a tu cuenta que programamos hace un tiempo encontramos una web y nos hicimos con su base de datos, ¡Pero todas sus contraseñas estan en MD5 o SHA1! ¿Que podemos hacer? Para esto utilizaremos la tool que crearemos en esta edicion y ademas el No tienes permitido ver enlaces. Registrate o Entra a tu cuenta que hicimos con anterioridad.

Hoy veremos como crear un HashCracker con No tienes permitido ver enlaces. Registrate o Entra a tu cuenta!

1)Primero crearemos el proyecto


2)Luego en el Form1 Realizar la siguente interfaz (respetando los nombres de los controles)[ademas agregaremos un OpenFileDialog llamado OpenFileDialog1 y dos BackgroundWorkers llamados bwSHA1 y bwMD5]:


2.b)Establecemos las propiedades text de los componentes para que queden de la siguiente manera:


3)Pegamos el siguiente codigo:
Código: vbnet
Imports System.ComponentModel
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text

Public Class Form1


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Deshabilitamos el TextBox txtPathDiccionario para que no puedan escribir a mano en el.
        txtPathDiccionario.Enabled = False
        'Aplicamos filtro en el Dialogo de Seleccion de Archivo para que solo muestre archivos de texto
        OpenFileDialog1.Filter = "Archivos de Texto|*.txt;*.text"
    End Sub

    Private Sub btnDict_Click(sender As Object, e As EventArgs) Handles btnDict.Click
        ' Mostramos el Dialogo de Seleccion de Archivo
        Dim result As DialogResult = OpenFileDialog1.ShowDialog()
        'Verificamos que el archivo haya sido seleccionado, si no fue asi, salimos
        If result <> DialogResult.OK Then Exit Sub
        'Escribimos la ubicacion del archivo en el TextBox
        txtPathDiccionario.Text = OpenFileDialog1.FileName
        'Indicamos que nuestros BW reportan progreso
        bw.WorkerReportsProgress = True
    End Sub

    Private Sub btnInit_Click(sender As Object, e As EventArgs) Handles btnInit.Click
        'Deshabilitamos los controles para que no se cambie su contenido durante la ejecucion
        txtHash.Enabled = False
        radSHA1.Enabled = False
        radMD5.Enabled = False
        btnInit.Enabled = False
        btnDict.Enabled = False
        'Iniciamos BW
        bw.RunWorkerAsync()
    End Sub

    Private Sub bw_DoWork(sender As Object, e As DoWorkEventArgs) Handles bw.DoWork
        'Verificamos la cantidad de lineas para mantener un conteo del progreso
        Dim CantidadLineas = File.ReadAllLines(txtPathDiccionario.Text).Length
        Dim LineaActual As Long = 0
        'Creamos una lector para el archivo de diccionario
        Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(txtPathDiccionario.Text)
        Dim ClaveActual As String = ""
        Dim HashActual As String = ""
        'Hacemos un bucle linea por linea verificando si coincide el hash con alguna del las claves en el diccionario
        Do
            ClaveActual = reader.ReadLine
            If ClaveActual Is Nothing Then Exit Sub 'Si llegamos al final del archivo salimos.
            'Ejecutamos la creacion del hash correspondiente
            If radMD5.Checked = True Then HashActual = generarMD5(ClaveActual)
            If radSHA1.Checked = True Then HashActual = generarSHA1(ClaveActual)
            'Verificamos si coincide
            If txtHash.Text = HashActual Then
                'Si el hash corresponde con el generado notificamos al usuario
                MsgBox("Clave encontrada: """ & ClaveActual & """ (sin comillas).")
                'Terminamos el Loop
                Exit Do
            End If
            'Actualizacion de progreso
            LineaActual = LineaActual + 1
            If LineaActual > CantidadLineas / 100 Then
                bw.ReportProgress(LineaActual / CantidadLineas * 100)
                LineaActual = 0
            End If
        Loop
        reader.Close()
    End Sub

    Private Sub bw_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles bw.ProgressChanged
        'Actualizamos el porcentaje del Progressbar
        ProgressBar1.Value += e.ProgressPercentage
    End Sub

    Private Sub bw_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles bw.RunWorkerCompleted
        'Rehabilitamos los controles.
        txtHash.Enabled = True
        radSHA1.Enabled = True
        radMD5.Enabled = True
        btnInit.Enabled = True
        btnDict.Enabled = True
        ProgressBar1.Value = 0
        MsgBox("Proceso completado")
    End Sub

    Function generarMD5(ByVal str As String) As String
        'Funcion de generacion de hash MD5
        Dim Bytes() As Byte
        Dim sb As New StringBuilder()
        If String.IsNullOrEmpty(str) Then Return ""
        Bytes = Encoding.Default.GetBytes(str)
        Bytes = MD5.Create().ComputeHash(Bytes)
        For x As Integer = 0 To Bytes.Length - 1
            sb.Append(Bytes(x).ToString("x2"))
        Next
        Return sb.ToString()
    End Function

    Function generarSHA1(ByVal str As String) As String
        'Funcion de generacion de hash SHA1
        Dim sha1Obj As New Security.Cryptography.SHA1CryptoServiceProvider
        Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(str)
        bytesToHash = sha1Obj.ComputeHash(bytesToHash)
        Dim strResult As String = ""
        For Each b As Byte In bytesToHash
            strResult += b.ToString("x2")
        Next
        Return strResult
    End Function
End Class


Para utilizar solo elijan el archivo de diccionario, pongan el hash a crackear y presionen iniciar.

Ahora es tu turno, podes agregarle nuevos tipos de hash o inclusive convertirlo en una herramienta de criptografia completa.

Para los curiosos y como un proyecto de fin de semana los invito a modificar este programa para que pueda hacer busqueda de varios hashes al mismo tiempo.

Descargar: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver enlaces. Registrate o Entra a tu cuenta