Делаешь File.Open - ты получишь Stream, с помощью которого ты можешь считывать данные из файла.
Там есть метод ReadAsync, в который можно передать некоторый буфер, чтобы заполнить его данными.
Твоя задача - написать машину состояний (гугли) для каждого из твоих префиксов и побайтово читать файл.
Для чуть большего удобства и эффективности можешь воспользоваться System.IO.Pipelines (гугли) и System.Threading.Channels
Если очень интересно, могу скинуть ссылку на свой репозиторий, где с их помощью разбираются бинарные данные, которые передаются по сети