public int FindBytePattern(Stream stream, byte[] pattern)
{
//a simple pattern matcher
stream.Seek(0, SeekOrigin.Begin);
for (int i = 0; i < stream.Length; i++)
{
var b = stream.ReadByte();
if (b == pattern[0])
{
bool match = true;
for (int j = 1; j < pattern.Length; j++)
{
var b2 = stream.ReadByte();
if (b2 != pattern[j])
{
match = false;
break;
}
}
if (match) return (int)stream.Position;
else stream.Seek(i+1, SeekOrigin.Begin);
}
}
return -1; //no match
}