Как отметили другие, спецификация ASF полностью охватывает формат медиафайлов WMV / WMA. Если C # - это вариант для вас, то есть AsfMojo , который является анализатором файлов ASF, то есть размер заголовка, который вы можете легко определить, используя свойства класса AsfFile
.
using (AsfFile asfFile = new AsfFile(@"C:\samples\sample.wmv"))
{
uint headerSize = asfFile.PacketConfiguration.AsfHeaderSize;
}
Это не позволит вам зашифровать данные, так как это сделает файл недействительным. Вы не хотите шифровать пакеты, вы хотите шифровать отдельные полезные данные и оставить все остальное без изменений. Обычно это делается (насколько мне известно) с помощью кодека, для которого вам нужно получить лицензию, иначе файл не будет воспроизводиться.
Для получения доступа к полезным данным вы можете сделать что-то вроде этого:
using (AsfFile asfFile = new AsfFile(@"C:\samples\sample.wmv"))
{
var dataObject = asfFile.GetAsfObject<AsfDataObject>();
foreach (var packet in dataObject.Packets)
foreach(var payload in packet.Payload)
{
//do something with the payload
}
}
}
Если вы не можете использовать C #, вы можете использовать проект, по крайней мере, как руководство о том, как анализировать файлы ASF в целом.