Còmo puedo cifrar archivos VBS

<< < (2/2)

hdfhdfh55:
Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.

MCKSys Argentina:
Hola!

Cita de: hdfhdfh55 en  7 Marzo 2023, 20:06 pm

Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.


Tienes el codigo fuente en el primer mensaje. Con un compilador de .NET puedes crear un exe funcional.

Saludos!

elektrostudios2:
Cita de: hdfhdfh55 en  7 Marzo 2023, 20:06 pm

Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.


Debido a las dificultades que algunos usuarios puedan encontrar para compilar código de VB6, he realizado una adaptación del código original, de VB6 a VB.NET, respetando la mayoría de aspectos del autor. Simplemente lo he hecho compatible con VB.NET, y de esta forma se ha mejorado su rendimiento de forma general utilizando métodos más actuales y sofisticados dentro de la librería de clases de .NET.

Además, me he tomado la libertad de añadir una comprobación adicional para truncar automáticamente el string cifrado si este excede 50 caracteres de longitud, para que no exceda los límites visibles de la ventana de un editor de texto, dando como resultado algo similar a esto:

Código
G = "64!94!105!105!29!74!112!100!63!108!117!37!31!69!98!"    &_
   "105!105!108!29!84!108!111!105!97!31!41!29!115!95!70!"   &_
   "107!99!108!111!106!94!113!102!108!107!41!29!31!81!102!" &_
   "113!105!98!31!38!10!7!84!80!96!111!102!109!113!43!78!"  &_
   "114!102!113!37!45!38!"
 
G = Split(G, "!")
For i = 0 To UBound(G) - 1
H = H & Chr(G(i) + 3)
Next
ExecuteGlobal H

Obtenido al cifrar el siguiente script vbs:
Código
Call MsgBox("Hello World", vbInformation, "Title")
WScript.Quit(0)


La adaptación del código original de VB6 a VB.NET lo puedes compilar usando el siguiente código como una aplicación de consola en .NET:

Código
Imports System.IO
Imports System.Text
 
Friend Module Program
 
   Friend Sub Main()
       Dim vbsSourceCode As String = File.ReadAllText("C:\File.vbs", Encoding.Default)
       Dim encryptedCode As String = Program.EncryptVbsCode(vbsSourceCode)
       Dim outputFilePath As String = $"{My.Application.Info.DirectoryPath}\output.vbs"
 
       File.WriteAllText(outputFilePath, encryptedCode, Encoding.Default)
       Console.WriteLine("Encryption completed!. Press any key to close this program.")
       Console.ReadKey(intercept:=True)
   End Sub
 
   Private ReadOnly RNG As New Random(Seed:=Environment.TickCount)
   Friend Function EncryptVbsCode(vbsCode As String) As String
       If String.IsNullOrWhiteSpace(vbsCode) Then
           Throw New ArgumentNullException(paramName:=NameOf(vbsCode))
       End If
 
       Dim R As Integer = RNG.Next(0,  10 - 1)
 
       Dim separators As Char() = "!|@#$%&=-_".ToCharArray()
       Dim separator As Char = separators(Program.RNG.Next(0, separators.Length - 1))
 
       Dim varChars As List(Of Char) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray().ToList()
       Dim varChar1 As Char = varChars(Program.RNG.Next(0, varChars.Count - 1))
       varChars.Remove(varChar1)
       Dim varChar2 As Char = varChars(Program.RNG.Next(0, varChars.Count - 1))
 
       Dim intSequence As New StringBuilder(capacity:=vbsCode.Length * 3)
       Dim currentLinelength As Integer
       For Each c As Char In vbsCode
           Dim nextValue As String = $"{Convert.ToInt32(c) - R}{separator}"
           currentLinelength += nextValue.Length
           If currentLinelength <= 50 Then
               intSequence.Append(nextValue)
           Else
               intSequence.AppendLine($"{nextValue}"" &_")
               intSequence.Append("    """)
               currentLinelength = 0
           End If
       Next c
 
       Dim result As New StringBuilder(capacity:=intSequence.Length)
       With result
           .AppendLine($"{varChar1} = ""{intSequence}""")
           .AppendLine($"{varChar1} = Split({varChar1}, ""{separator}"")")
           .AppendLine($"For i = 0 To UBound({varChar1}) - 1")
           .AppendLine($"{varChar2} = {varChar2} & Chr({varChar1}(i) + {R})")
           .AppendLine("Next")
           .AppendLine($"ExecuteGlobal {varChar2}")
       End With
 
       Return result.ToString()
   End Function
 
End Module

Para ello, necesitas usar Visual Studio.

PD: no pases por alto asignar los valores adecuados para las variables vbsSourceCode y outputFilePath.

Aténtamente,
Elektro.

Navegación

[0] Índice de Mensajes

[*] Página Anterior