elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda... Repetir funcion hasta el final del archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda... Repetir funcion hasta el final del archivo  (Leído 5,142 veces)
apexseal

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda... Repetir funcion hasta el final del archivo
« en: 10 Agosto 2012, 10:32 am »

Saludos a todos!

Tengo un programa que uso para leer un archivo .bin, lo convierto a binario y cambio bits de un lado a otro. Pero es necesario que el proceso se haga cada 16 bits, en total son 8 cambios de posicion.

Necesito hacer esto cada 16 bits hasta el final del archivo:

12 al 2
15 al 4
9 al 13
5 al 10
11al 8
3 al 7
1 al 14
16 al 6

La manera que lo estoy haciendolo me da el resultado pero me tomaria una eternidad hacerlo asi

Chunk = Text1.Text
Bit1 = 12
Bit2 = 16
bChar = Mid$(Chunk, Bit1, 1)
Mid$(Chunk, Bit1, 1) = Mid$(Chunk, Bit2, 1)
Mid$(Chunk, Bit2, 1) = bChar
Text2.Text = Chunk

En otras palabras estoy haciendo esto 8 veces cada 12 bits, me muero...

Hay alguna manera de automatizar los 8 cambios cada 16 bits hasta el final?

8 bit shift cada 16 bits independientemente...

Gracias por su tiempo amigos!



« Última modificación: 10 Agosto 2012, 11:12 am por apexseal » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.465


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #1 en: 10 Agosto 2012, 21:18 pm »

No te entendi bien: Estas intercambiando los bits de cada WORD (2 bytes) del archivo?

Esto seria para cifrar la data?


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #2 en: 11 Agosto 2012, 02:31 am »

No entiendo bien que es lo que haces, ya que si andas con manejos de bits y eso tendrias que saber mi respuesta, pero la digo por si a caso:

Cuando lees un archivo lo haces con un bucle While Not (EOF) que significa Mientras no sea el End Of File (Final del archivo), asi cuando llegue al final del archivo saldra del bucle y hara lo que siga.
Pero dentro de ese bucle solo tendras que ir aumentando el valor de esas variables que usas.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #3 en: 11 Agosto 2012, 07:09 am »


Chunk = Text1.Text
Bit1 = 12
Bit2 = 16
bChar = Mid$(Chunk, Bit1, 1)
Mid$(Chunk, Bit1, 1) = Mid$(Chunk, Bit2, 1)
Mid$(Chunk, Bit2, 1) = bChar
Text2.Text = Chunk


Con mid$() NO vas a trabajar con bits de manera directa, necesitas usar las operaciones auxiliares de equivalencia... ya que o trabajas con bits o trabajas con bytes ambos son distintos... y me da la impresion que te refieres a bytes y no a bits...

usando el array de bytes puedes hacer un cambio de bytes muy simple como este (NO ES LO QUE PIDES O ESO CREO... ya que no se te entendió realmente la idea):

Código
  1. '12 al 2
  2. '15 al 4
  3. '9 al 13
  4. '5 al 10
  5. '11al 8
  6. '3 al 7
  7. '1 al 14
  8. '16 al 6
  9. Const sFileName As String = "c:\alcaeda.txt"
  10. Dim ff As Integer
  11. Dim d As Long
  12. Dim array_data() As Byte
  13.  
  14.    ff = FreeFile()
  15.    Open sFileName For Binary Access Read As ff
  16.        If (LOF(ff) > 0) Then
  17.            ReDim array_data(0 To LOF(ff))
  18.            Get ff, , array_data
  19.            d = 0
  20.            While (d < LOF(ff))
  21.                bSwap array_data(12 + d), array_data(2 + d)
  22.                bSwap array_data(15 + d), array_data(4 + d)
  23.                bSwap array_data(9 + d), array_data(13 + d)
  24.                bSwap array_data(5 + d), array_data(10 + d)
  25.                bSwap array_data(11 + d), array_data(8 + d)
  26.                bSwap array_data(3 + d), array_data(7 + d)
  27.                bSwap array_data(1 + d), array_data(14 + d)
  28.                bSwap array_data(16 + d), array_data(6 + d)
  29.                d = (d + 8)
  30.            Wend
  31.        End If
  32.    Close ff
  33.  

La función bSwap() la encuentras aquí:
Recopilacion de Funciones con operaciones Binarias.

NOTA: Si vas a PROCESAR un archivo sin importarte que sea o no legible para un ser humano es mejor usar un array de bytes ya que mid$() es para strings y este ultimo tipo esta orientado para otros tipos de datos pero igual se puede ocuper pero en lo personal es menos recomendable...

Dulces Lunas!¡.
« Última modificación: 11 Agosto 2012, 07:29 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
apexseal

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #4 en: 11 Agosto 2012, 09:07 am »

Es que no se como expresrme al 100%... A ver si me explico... tengo un file cifrado, pero para decriptarlo necesito hacer esos 8 pasos cada 16 bits osea cada 2 bytes... Leo el fichero cpmpleto y lo voy proceando cada 16 bits... En fin, necesito un loop o algo parecido que lo haga...
En línea

apexseal

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #5 en: 11 Agosto 2012, 09:08 am »

No te entendi bien: Estas intercambiando los bits de cada WORD (2 bytes) del archivo?

Esto seria para cifrar la data?

Si pero para descifrar...
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #6 en: 11 Agosto 2012, 20:06 pm »

.
Mira igual y necesita correcciones..

Código
  1.  
  2. Dim array_data() As Integer ' Como trabaja con con Word (16 bit) uso Integer en lugar de byte (8 bit)
  3. ...
  4.  
  5.            While (d < LOF(ff))
  6.                array_data(d) = bSwapBit(array_data(d), 12 - 1, 2 - 1)
  7.                array_data(d) = bSwapBit(array_data(d), 15 - 1, 4 - 1)
  8.                array_data(d) = bSwapBit(array_data(d), 9 - 1, 13 - 1)
  9.                array_data(d) = bSwapBit(array_data(d), 5 - 1, 10 - 1)
  10.                array_data(d) = bSwapBit(array_data(d), 11 - 1, 8 - 1)
  11.                array_data(d) = bSwapBit(array_data(d), 3 - 1, 7 - 1)
  12.                array_data(d) = bSwapBit(array_data(d), 1 - 1, 14 - 1)
  13.                array_data(d) = bSwapBit(array_data(d), 16 - 1, 6 - 1)
  14.                d = (d + 1)
  15.            Wend
  16.  
  17. ...
  18.  
  19.  

La función bSwapBit() la encuentras aquí:
Recopilacion de Funciones con operaciones Binarias.

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #7 en: 11 Agosto 2012, 20:10 pm »

Si tienes dudas del peso de los tipos de datos en bytes:

http://wiki.elhacker.net/programacion/vb/4---principios-basicos

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
apexseal

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #8 en: 11 Agosto 2012, 20:16 pm »

Y tengo que trabajar con bits obligatoriamente, el convertir a binario no es problema, donde me estanque es en trabajar cada word individual hasta el final... Hace mucho mucho no trabajo con vb6 y estoy perdido en esa area.
En línea

apexseal

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda... Repetir funcion hasta el final del archivo
« Respuesta #9 en: 11 Agosto 2012, 20:21 pm »

Ok voy a tratar, ya esto me da una idea mas clara...
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines