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:
' Find Byte Pattern
' ( By Elektro )
'
' Usage Examples:
' Dim Indexes As Integer() = MatchBytePattern({1, 2, 3, 1, 2, 3, 2, 3}, {1, 2}) ' Result: {0, 3}
'
''' <summary>
''' Finds a Byte pattern inside a Byte Array and returns the starting indexes of all concurrences.
''' </summary>
''' <param name="ByteArray">Indicates the Byte Array to search inside.</param>
''' <param name="Pattern">Indicates the Byte pattern to match.</param>
''' <returns>The starting indexes of all concurrences.</returns>
Friend Function FindBytePattern(ByVal ByteArray As Byte(), ByVal Pattern As Byte()) As Integer()
Return Enumerable.Range(0, ByteArray.Length - Pattern.Length + 1).
Where(Function(i As Integer) Pattern.Select(Function(b1, b2) New With {b2, b1}).
All(Function(p) ByteArray(i + p.b2) = p.b1)).
ToArray()
End Function
Un ejemplo de uso:
Private Sub Test() Handles MyBase.Shown
Dim Bytes As Byte() =
{
1, 2, 3, 4, 5, 6, 7, 8, 9, 33, 55, 22, 77, 4, 45, 62,
99, 98, 97, 96, 95, 94, 93, 22, 77, 4, 45, 98, 97, 96, 95,
3, 4, 5, 7, 8, 9, 1, 2, 3, 99, 98, 97, 96, 45, 98, 97, 96
}
Dim Find As Byte() = New Byte() {1, 2, 3}
Dim Indexes As Integer() = FindBytePattern(Bytes, Find) ' Result: {0, 37}
For Each Index As Integer In Indexes
MessageBox.Show(CStr(Index))
Next Index
Application.Exit()
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