Hoy vamos a ver como leer los archivos binarios en vbscript, yo al principio creía que no se podía leer binario en este lenguaje y ase poco creando el ransomware(el cual no es la gran cosa pero aveces me gusta matar el tiempo programando cualquier cosa) tuve la necesidad de leer binario, así que en una búsqueda de 5 minutos encontré esta web:
http://www.gatodev.com/index.php?qa=225695&qa_1=leer-y-escribir-archivos-binarios-en-vbscript
El cual contenía este código:
NOTA: lo pondré por si algún día la pagina borra el tema, se cae o algo por el estilo solo para tener un respaldo.
Function readBinary(path)
Dim a
Dim fso
Dim file
Dim i
Dim ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.getFile(path)
If isNull(file) Then
MsgBox("File not found: " & path)
Exit Function
End If
Set ts = file.OpenAsTextStream()
a = makeArray(file.size)
i = 0
' Do not replace the following block by readBinary = by ts.readAll(), it would result in broken output, because that method is not intended for binary data'
While Not ts.atEndOfStream
a(i) = ts.read(1)
i = i + 1
Wend
ts.close
readBinary = Join(a,"")
End Function
Sub writeBinary(bstr, path) Dim fso Dim ts Set fso = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set ts = fso.createTextFile(path) If Err.number <> 0 Then MsgBox(Err.message) Exit Sub End If On Error GoTo 0 ts.Write(bstr) ts.Close End Sub
Function makeArray(n) ' Small utility function Dim s s = Space(n) makeArray = Split(s," ") End Function
Viendo el código de esa web me base para crear el mio, que es casi igual pero con unas modificaciones.
Así que para practicar tomaremos mi crackme, el numero 7 que lo encontraran aquí:
http://elblogdeflamer.blogspot.mx/p/mis-cackmes.html
Tratare de explicar todo el código con clama.
Así que primeramente empecemos declarando todas las variables que usaremos
option explicit
Dim x,objsystem,file,i,f,largo
Ahora creamos un objecto FileSystemObject y lo representaremos con la variable objsystem
Set objsystem = CreateObject("Scripting.FileSystemObject")
Luego creamos una referencia al archivo que vamos a leer, que en este caso es el "crackme7.exe" y lo representaremos con la variable file.
OJO donde dice "crackme7.exe" es la ruta del archivo yo lo pongo así por que estoy trabajando en la misma carpeta.
Set file = objsystem.getFile("Crackme7.exe")
Después de esto inicializamos la variable largo, con el valor del tamaño del archivo en bytes
Ya que tenemos enlazado al archivo que esta representado con la variable file, trataremos de abrirlo con el comando OpenAsTextStream así.
Set f = file.OpenAsTextStream()
Después usaremos el comando Redim para crear un array el cual llamaremos bytes con el tamaño de el archivo, el cual esta representado con la variable largo
Ahora para leer los bytes del archivo crearemos un ciclo for, el cual leerá byte por byte del archivo y los almacenara en el array llamado bytes
for i=0 to largo - 1
bytes(i)=f.read(1)
next
y para cerrar el archivo usamos el comando close
Ya que leímos todos los bytes del archivo crearemos un archivo llamado "dump.txt" con el comando CreateTextFile, para almacenar los datos que leímos y el archivo creado lo representaremos con la variable file.
set file = objsystem.createtextfile("dump.txt")
Ya que no podemos almacenar los datos de forma binaria, los convertiremos a su valor ascii y los separaremos con 2 guiones
Para eso crearemos un ciclo for para recorrer el array donde se encuentran los datos y de paso escribiremos los nuevos datos con el comando Write
for x = 0 to i - 1
file.write(asc(bytes(x)) & "--")
next
Y por ultimo cerramos el archivo con el comando close
Aquí el código completo
option explicit
Dim x,objsystem,file,i,f,largo
Set objsystem = CreateObject("Scripting.FileSystemObject")
Set file = objsystem.getFile("Crackme7.exe")
largo=file.size
Set f = file.OpenAsTextStream()
redim bytes(largo)
for i=0 to largo - 1
bytes(i)=f.read(1)
next
f.close
set file = objsystem.createtextfile("dump.txt")
for x = 0 to i - 1
file.write(asc(bytes(x)) & "--")
next
file.close
Bueno creo que eso es todo por hoy saludos flamer
No hay comentarios.:
Publicar un comentario