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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Filestream . Byte a Byte
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Filestream . Byte a Byte  (Leído 3,280 veces)
blaron

Desconectado Desconectado

Mensajes: 5


:)


Ver Perfil
Filestream . Byte a Byte
« en: 4 Abril 2014, 21:47 pm »

Saludos compañeros

tenia una duda a ver si alguien sabria como resolverla.

Resulta que tengo que buscar un codigo en Hex por ejemplo :

80 17 79 64

el problema es que solo se buscar un numero en concreto, estoy utilizando el codigo de la siguiente manera.

Código:
        Dim file As New FileStream(TextBox1.Text, FileMode.Open, FileAccess.ReadWrite)
        Dim a As Integer = file.ReadByte()
        While a <> -1

            If a = (&H80) Then

                TextBox2.Text = (TextBox2.Text & a)

            End If

            a = file.ReadByte()
         End While

    End Sub

el problema es que no se como buscar mas, en vez de 80, buscar el codigo completo 80 17 79 64, no se si me explicado bien..


« Última modificación: 4 Abril 2014, 22:46 pm por blaron » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Filestream . Byte a Byte
« Respuesta #1 en: 5 Abril 2014, 00:25 am »

Utiliza un arreglo de bytes con el valor que estás buscando.

Comparas el primer byte del arreglo y si el if devuelve 'TRUE' entonces procedes a comparar si el byte siguiente coincide con el byte siguiente de tu cadena. En caso de que no sea así, entonces regresas a comparar con el primer byte '80'.

Te pondría el código, pero no creo que sean más de 20 líneas de código. Digo, la tienes sencilla.

Saludos.


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
blaron

Desconectado Desconectado

Mensajes: 5


:)


Ver Perfil
Re: Filestream . Byte a Byte
« Respuesta #2 en: 5 Abril 2014, 01:59 am »

perdona si no entendi  muy bien, es la primera vez que ando toqueteando con bytes.

Supongo que te refieres a crear una array.

Código:
Dim array() As Byte = {80, 17, 79, 64}

lo que no se realizar, seria como comparo yo esa array, puesto que la variable "a" es la que tiene el valor del archivo.

¿ Tendria que usar "a" que encuentre un numero principal y luego darle otra opcion de un "if... " ?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Filestream . Byte a Byte
« Respuesta #3 en: 5 Abril 2014, 02:01 am »

Puedes hacer lo que dijo El Benjo, con un For, aquí tienes infinidad de ejemplos en C#: byte[] array pattern search Puedes convertir el código en http://converter.telerik.com/

Lo que yo hice fue tomar y estudiar varios ejemplos de arriba para escribir en VB.NET un método de uso generico usando LINQ, aunque no soy un experto en bytes, espero que no se me haya pasado nada por alto:

Código
  1.    ' Find Byte Pattern
  2.    ' ( By Elektro )
  3.    '
  4.    ' Usage Examples:
  5.    ' Dim Indexes As Integer() = MatchBytePattern({1, 2, 3, 1, 2, 3, 2, 3}, {1, 2}) ' Result: {0, 3}
  6.    '
  7.    ''' <summary>
  8.    ''' Finds a Byte pattern inside a Byte Array and returns the starting indexes of all concurrences.
  9.    ''' </summary>
  10.    ''' <param name="ByteArray">Indicates the Byte Array to search inside.</param>
  11.    ''' <param name="Pattern">Indicates the Byte pattern to match.</param>
  12.    ''' <returns>The starting indexes of all concurrences.</returns>
  13.    Friend Function FindBytePattern(ByVal ByteArray As Byte(), ByVal Pattern As Byte()) As Integer()
  14.  
  15.        Return Enumerable.Range(0, ByteArray.Length - Pattern.Length + 1).
  16.                          Where(Function(i As Integer) Pattern.Select(Function(b1, b2) New With {b2, b1}).
  17.                          All(Function(p) ByteArray(i + p.b2) = p.b1)).
  18.                          ToArray()
  19.  
  20.    End Function

Un ejemplo de uso:
Código
  1.    Private Sub Test() Handles MyBase.Shown
  2.  
  3.        Dim Bytes As Byte() =
  4.            {
  5.                1, 2, 3, 4, 5, 6, 7, 8, 9, 33, 55, 22, 77, 4, 45, 62,
  6.                99, 98, 97, 96, 95, 94, 93, 22, 77, 4, 45, 98, 97, 96, 95,
  7.                3, 4, 5, 7, 8, 9, 1, 2, 3, 99, 98, 97, 96, 45, 98, 97, 96
  8.            }
  9.  
  10.        Dim Find As Byte() = New Byte() {1, 2, 3}
  11.  
  12.        Dim Indexes As Integer() = FindBytePattern(Bytes, Find) ' Result: {0, 37}
  13.  
  14.        For Each Index As Integer In Indexes
  15.            MessageBox.Show(CStr(Index))
  16.        Next Index
  17.  
  18.        Application.Exit()
  19.  
  20.    End Sub

Conociendo la cantidad de bytes que quieres buscar y obteniendo los índices de cada coincidencia creo que el resto ya es cosa tuya, muy simple...

Saludos
« Última modificación: 5 Abril 2014, 02:07 am por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
de byte a long
Programación Visual Basic
claus86 3 3,251 Último mensaje 7 Marzo 2010, 18:27 pm
por LeandroA
Te voy a dar un byte « 1 2 »
Foro Libre
Foxy Rider 17 8,680 Último mensaje 16 Septiembre 2011, 18:35 pm
por ion dissonance2
[Sources Code] RotBits [Byte TO Byte ]
Programación Visual Basic
x64core 8 5,705 Último mensaje 22 Octubre 2011, 00:46 am
por BlackZeroX
Take screenshot of byte help?
Programación Visual Basic
Harmmy 5 2,726 Último mensaje 22 Diciembre 2012, 00:08 am
por Harmmy
Suma byte a byte con acarreo en variable de 2 bytes
Programación C/C++
AlbertoBSD 2 4,386 Último mensaje 18 Mayo 2016, 18:21 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines