From MSNPiki

Jump to: navigation, search
MSN Client Protocol

Overview · MSNObject · Client Capabilities
P2P protocol: Transports · MSNSLP
Headers: P2Pv1 Binary headers · P2Pv2 Binary headers
Transfers: Display Pictures · Custom Emoticons · File Transfer

The MSNObject was introduced with MSNP9 and is part of the MSNC1 specification. The MSNObject serves as a way to identify Display Pictures, Custom Emoticons, Backgrounds, Voice Clips etc (basically any "content" except file transfers).

A MSNObject is always in the following format. In the below example you can see the basic fields that will always have to be present. You may add your own properties, too (the client just ignores them). Later clients can also add fields for dynamic content (Dynamic Display Pictures like Meegos) for stamping (a method to verify a digital signature of an object), or fields for things like playback length for signature sounds.

<msnobj Creator="" Size="24539" Type="3" Location="TFR2C.tmp" Friendly="AAA=" SHA1D="trC8SlFx2sWQxZMIBAWSEnXc8oQ=" SHA1C="U32o6bosZzluJq82eAtMpx5dIEI="/>

The official client stores most of the object descriptors in the so called content store.


Explanation of basic fields


This field indicates the person who made (and is sending) the object. It is typically the address of a buddy.


The total size of the data the object represents, in bytes.


The Type field indicates what sort of file the object describes. Currently the following fields are known:

Note! The value 14 was used for Location information in some BETA clients, but was later removed because of privacy reasons. In the Messenger 9.0 client it was re-used for signature sounds.


The Location field contains the filename under which the file will be, or has been, stored.


This field contains the name of the picture in Unicode (UTF-16 Little Endian) format. The string is then encoded with Base64. For most types of descriptors this field is a null character, or AAA= when encoded.


The SHA1D field contains a SHA1 hash of the images data encoded in Base64. It is also known as the Data Hash or the SHA1 Data Field.


This field contains all previous fields hashed with SHA1, and then encoded in Base64. This field is better known as the Checksum, or SHA1 Checksum Field. The string that must be hashed to get the resulting SHA1C value looks similar to:


It is suspected, but not verified, that the order in which the fields are hashed must be the same as the order of the fields in the XML format.


Personal tools
Windows Live Network Protocol
Windows Live Client Protocol