Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: osmo83 en 4 Agosto 2014, 22:35 pm



Título: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 4 Agosto 2014, 22:35 pm
Buenas a todos, necesitaría crear un editor hexadecimal muy básico, no sé si este lenguaje será el mejor, pero es del único qu etengo conocimientos. El caso es que tengo que abrir un archivo de 250 mb y escribir siempre lo mismo, unos 10 mb de línea.

Estuve buscando por internet y encontré ejemplos pero no me dejan copiar y pegar, sólo modificarlo por pulsaciones y con SENDKEYS me tarda unos 30 o 40 minutos de reloj, cuando con un editor hexadecimal normal se copia y se pega en un instante.

Estoy perdido en este asunto, podría alguien hecharme una mano?

Gracias :)


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 4 Agosto 2014, 23:24 pm
Y porqué no usas un editor hexa ya hecho? Hay editores gratis...

Cual es el motivo por el cual debes/necesitas hacer uno?

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 5 Agosto 2014, 08:38 am
Simplemente para hacer más completa la aplicación que estoy realizando y así no tener que recurrir a programas externos.


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 5 Agosto 2014, 14:13 pm
Bueno, aqui (http://sourceforge.net/projects/hexeditorvb/) tienes un editor hexa hecho en VB6.

Seguro puedes sacar ideas de ahí.

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 5 Agosto 2014, 16:31 pm
Ok, voy a echarle un vistazo gracias. ;-)

Ya lo ví y ya dí con la tecla, ahora el mproblema es que no puedo escribir en el archivo el byte null, es decir 00, en ASCII sería simplemnte con punto, pero no me lo pasa bien a hexadceimal.

Alguna idea?


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 6 Agosto 2014, 03:30 am
el mproblema es que no puedo escribir en el archivo el byte null, es decir 00, en ASCII sería simplemnte con punto

No. El byte 0x00 (ó &H00) no es un punto. Se representa como un punto, porque es un caracter no imprimible.
Si quieres escribir un byte nulo (0x00) en el archivo, lo escribes, pero para verlo necesitarás abrir el archivo con un editor hexadecimal...  :P

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 6 Agosto 2014, 16:54 pm
Ok, ahora el problema que tengo es que no me copia en la posición que yo quiero del archivo, o necesito que llega hasta la posición 7C0020 que ne decimal sería 130023936, pero cuando pongo el que escriba ahí no escribe nada, sin embargo si l edoy algún valor más bajo, que sé yo 400000 lo escribe sin problema, así que debe ser una limitación de la sentencia put, vamos digo yo.

Ejemplo:

Private Sub Command1_Click()
    
      
    On Error GoTo error_Sub
      
    
        'Array que contendrá los bytes del archivo es decir los datos
        Dim Data As Byte
      
        'Variable Para el tamaño del archivo ( luego se usa para el Redim )
        Dim fLen As Long
      
        'Abrimos el archivo en modo binario de solo lectura (Binary Lock Read)
        Open "C:\Users\Moisés\Desktop\prueba\archivo1.bin" For Binary Lock Read As 1
      
        'creamos un archivo para guardar los datos ( Binary Access Write )
        Open "C:\Users\Moisés\Desktop\prueba\archivo2.bin" For Binary Access Write As 2
      
        'Redimiensionamos el array al tamaño del archivo
        fLen = FileLen("C:\Users\Moisés\Desktop\prueba\archivo1.bin")
      
        ReDim Data(fLen) As Byte
        'Leemos el archivo entero y lo almacenamos en el array
        Get #1, , Data
      
        'Escribimos los bytes del array anterior, en el nuevo archivo ( archivo 2 )
        Put #2, 130023936, Data
      
        'Cerramos los dos archivos
        Close
          
        
        MsgBox "archivo copiado", vbInformation
      
    Exit Sub
      
error_Sub:
    MsgBox Err.Description, vbCritical
      
  
End Sub



Alguna idea?


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 6 Agosto 2014, 18:42 pm
Alguna idea?

Revisa la MSDN de VB6 sobre las instrucciones OPEN y PUT.

En especial la parte donde trabajas con archivos en modo binary y cuando escribes datos en los mismos (opcion SIZE de Open).

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 6 Agosto 2014, 18:51 pm
Ok, lo buscaré, pero podrías ponerme un código de ejemplo? es que si no fijo que no doy con la tecla.


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 7 Agosto 2014, 00:47 am
La MSDN tiene ejemplos...

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 7 Agosto 2014, 08:48 am
Según la MSDN no puedo abrir archivos superiores a 32.000 bytes, ¿habría alguna forma de enfocarlo de otro modo para que lo leyera? Es que he visto gente que trabaja con archivos mucho más pesados pero no sé cómo lo hacen.


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: MCKSys Argentina en 7 Agosto 2014, 17:46 pm
Según la MSDN no puedo abrir archivos superiores a 32.000 bytes

No has entendido. El tamaño de un registro tiene ese tamaño maximo. De todas formas, no tienes que trabajar con registros cuando abres en modo binary (el parametro se ignora).

Te repito, si miras el codigo del editor hexa, verás cómo trabaja con archivos de tamaño arbitrario.
Sólo tienes que revisar el código...

Saludos!


Título: Re: NECESITO MODIFICAR UN ARCHIVO HEXADECIMAL DE GRAN TAMAÑO
Publicado por: osmo83 en 7 Agosto 2014, 21:38 pm
Gracias, ya lo solucioné, al final lo que hice fue dividir el archivo original en varios de menor tamaño.

Gracias por la yuda qu eme has prestado, lo he ido comprendiendo cada vez mejor.