Autor
|
Tema: [vbs]Cómo leer un archivo en modo binario ? (Leído 8,581 veces)
|
0x0309
Desconectado
Mensajes: 215
|
Hola quiero hacer algo, pero no sé nada de vbs, así es que pido un poco de ayuda por favor. Lo que quiero es leer un archivo binario y reemplazar 3 bytes, y luego escribir en el mismo archivo estaba haciendo esto: set unFileSystemObject = CreateObject("Scripting.FileSystemObject") set archivo = unFileSystemObject.OpenTextFile("c:\f.bin", ForReading) dim contenidoArchivo = archivo.ReadAll contenidoArchivo = contenidoArchivo.Replace("")
y quiero reemplazar tres bytes, pero en modo binario, es decir supongamos que tengo los bytes: 1 2 3 y quiero reemplazarlos por: 1 2 0 Necesito que sea en binario porque el byte 0 es el ascii 0, y no es imprimible, por eso digo que debe ser binario. Edito: ya encontré la solución.
|
|
« Última modificación: 13 Agosto 2009, 10:12 am por 0x0309 »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Realmente no recuerdo una manera de tratar archivos en modo binario ... o la que recuerdo salta en los AV, pero claro, da igual si lo haces tu y sabes para que es que lo haces ... cual fue tu solución? Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
0x0309
Desconectado
Mensajes: 215
|
En realidad necesitaba este código para modificar un byte del archivo findstr.exe de windows, para poder utilizar un script que utiliza una virgulería de este comando e imprimir líneas de texto con color en cmd.exe. Esto es para que findstr no muestre el carácter : Bueno, el código útil puede encontrarse aquí: http://sites.google.com/site/cmdscripts/home/colores.zip?attredirects=0Aquí está el código, lo que hace es reemplazar un byte: 'I found the information for modify a binary file with vbs in: ' http://www.governmentsecurity.org/forum/index.php?showtopic=18727
'With findstr.exe made %UserProfile%\findstr2.exe 'findstr2.exe is for not view the ':' with the option /a 'This alter the text: "%s:" 'hexadecimal: 25 73 3A 'by '25 73 00 'Only change the 3A by 00
'This write findstr2.exe 'In findstr.exe not made changes.
Dim path,name,name2,obs,ows,strbin,i,f Set ows = CreateObject("WScript.Shell") path = ows.ExpandEnvironmentStrings("%SystemRoot%") name = path & "\system32\findstr.exe" path = ows.ExpandEnvironmentStrings("%UserProfile%") name2 = path & "\findstr2.exe" Set ofs = CreateObject("Scripting.FileSystemObject")
if ofs.FileExists(name) Then strbin=RSBinaryToString(ReadBinaryFile(name)) i=InStr(1,strbin,chr(&H25)&chr(&H73)&chr(&H3A),0) If i <> 0 Then strbin=Left(strbin,i-1)&chr(&H25)&chr(&H73)&chr(&H00)&Mid(strbin,i+3) Set f = ofs.OpenTextFile(name2,2,True,0) f.Write strbin f.Close End If End If
WScript.Quit
Function ReadBinaryFile(FileName) Const adTypeBinary = 1 Dim BinaryStream : Set BinaryStream = CreateObject("ADODB.Stream") BinaryStream.Type = adTypeBinary BinaryStream.Open BinaryStream.LoadFromFile FileName ReadBinaryFile = BinaryStream.Read BinaryStream.Close End Function
Function RSBinaryToString(xBinary) Dim Binary If vartype(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary End If Dim RS, LBinary Const adLongVarChar = 201 Set RS = CreateObject("ADODB.Recordset") LBinary = LenB(Binary) If LBinary>0 Then RS.Fields.Append "mBinary", adLongVarChar, LBinary RS.Open RS.AddNew RS("mBinary").AppendChunk Binary RS.Update RSBinaryToString = RS("mBinary") Else RSBinaryToString = "" End If End Function
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Entonces si ... estaba en lo cierto El método que conocía era ese .. haciendo uso del objeto ADODB.Stream, pero como decía .. el problema de ese objeto es que es detectado por muchos AV, ya que cuando aparecieron "bichos" programados en este lenguaje muchos lo utilizaban en las rutias downloader, aunque claro, un code hecho por uno mismo no debería de preocuparnos verdad? http://foro.elhacker.net/scripting/htmlvbsbatch_propagacion_a_traves_de_internet_posible-t221250.0.htmlSaludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
0x0309
Desconectado
Mensajes: 215
|
mira parece que lo que detectan los antivirus es el objeto: Microsoft.XMLHTTP porque envié a virustotal el findstr2.vbs y me arrojó 0/41 amenazas, así es que el objeto ADODB.Stream en mi código no da problemas.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Juaj ... entonces la combinación tal vez ... porque yo tengo códigos con el objeto Microsoft.XMLHTTP y no me da problemas ... quizás la heurística, ya que si a algo que tiene este último objeto le agrego el ADODB.Stream, entonces si Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Cómo leer un archivo .dll .exe... de una aplicación?
« 1 2 »
Programación General
|
Azhag_el_Carnicero
|
10
|
6,925
|
27 Junio 2011, 17:28 pm
por Azhag_el_Carnicero
|
|
|
[?] leer binario y guardar en struct dato AYUDA
« 1 2 »
Programación C/C++
|
nolosabe
|
17
|
9,993
|
29 Octubre 2011, 15:44 pm
por nolosabe
|
|
|
Leer archivo binario en Vbs
Scripting
|
kapo.damy
|
2
|
4,164
|
14 Diciembre 2011, 04:51 am
por kapo.damy
|
|
|
Problema al leer un archivo binario en C
Programación C/C++
|
the_jocker
|
5
|
5,464
|
13 Agosto 2012, 01:37 am
por CSQCasimiro
|
|
|
Duda programa JAVA al leer archivo binario
Java
|
LoLo2207
|
3
|
3,688
|
15 Diciembre 2012, 20:23 pm
por LoLo2207
|
|