What I know about ASF

Links with mms protocol

MMS protocol bears an ASF file embedded with 4 byte headers to tell packet length. This ASF is interpretable by a normal ASF reader when the rest is stripped.


The guids used in ASF are different from those indicated in the ASF spec:

Header Object D6E229D1-35DA-11d1-9034-00A0C90349BE 75B22630-668E-11cf-A6D9-00AA0062CE6C
Data Object D6E229D2-35DA-11d1-9034-00A0C90349BE 75B22636-668E-11cf-A6D9-00AA0062CE6C
Index Object D6E229D3-35DA-11d1-9034-00A0C90349BE 33000890-E5b1-11cf-89f4-00A0C90349CB

Header Information

The header objects are prefixed by six bytes. These six byte are probably useful, but are not in the spec. document, and don't seem to matter to parsing ASF.

After six bytes, the usual GUID, Length, body structure follows until the end of the header object.

Determining block size

The block size is not specified in each data unit, but stored in the header, in object {8cabdca1-a947-11cf-8ee4-00c00c205365}, which is contained in the main header object. The length of each data unit is sent as bytes 0x44 and 0x45 (little endian 16 bit unsigned integer) of this object.

Number of streams

Sent as byte 0x30 in {b7dc0791-a9b7-11cf-8ee6-00c00c205365}.

Data Units

Data units do not seem to be marked with their guids, or lengths... As far as I can tell, the 24 bytes allocated for this purpose are ignored, and fill with junk as time progresses.