Since March 10, 2003 - Version 2.1
hypothetic.org

MSN Messenger Protocol

Home Page

Forum

About
Contact us

Resources

Research

Documentation
 General
 Notification
 Switchboard
 Client
 Reference

Validate XHTML
Validate CSS
Research - MSNP9
Printable Version

Overview

MSNP9 is a new protocol that was introduced with version 6.0 of the official client. Most of the changes in MSNP9 exist solely to support MSNC1. The following description of the protocol has not been peer-reviewed or tested, so probably contains omissions and errors. Please contact us if you find anything wrong with this page.

Ping replies

The QNG command now has a parameter - an integer from 0 to 50. It represents the number of seconds to wait before sending another PNG, and is reset to 50 every time a command is sent to the server. In environments where idle connections are closed after a short time, you should send a command to the server (even if it's just a PNG) at least this often.

>>> PNG\r\n

<<< QNG 41\r\n

>>> PNG\r\n

<<< QNG 49\r\n

Presence changes

ILN, NLN, and CHG all have an extra parameter on the end. The official server always sets this to a URL-encoded MSNObject, but it's not known whether the server requires this.

Paging

The PAG command is disabled in MSNP9, and attempting to use it will cause you to receive error 715. It's been replaced by the PGD command, which is exactly the same, but with an extra parameter: the fourth parameter (which was the length of the payload) is now "1" (to page an MSN Mobile device) or "2" (to page an MSN Direct device). The length of the payload is now the fifth parameter.

"D" Acknowledgement type

The MSG command in a switchboard now accepts an acknowledgement type of D, as well as A, N, and U. The official client always uses it (and only uses it) for special MSNC1 messages. It generally behaves like the A type, but gives numerical error codes for some badly formed messages before you get disconnected. Here is a successful example:

>>> MSG 3 D 819\r\n
. . .

<<< ACK 3\r\n

Here is an example of a failed message. The meaning of the 282 error is unknown.

>>> MSG 1 D 800
    MIME-Version: 1.0
    Content-Type: application/x-msnmsgrp2p
    P2P-Dest: xxxxx@hotmail.com
    00000000133713370000000000000000A83000000000000A8300000000000000000000AB381E0031337357000000000000000000000000
    INVITE MSNMSGR:xxxxx@hotmail.com MSNSLP/1.0
    To: <msnmsgr:xxxxx@hotmail.com>
    From: <msnmsgr:xxxxxxxxxxx@hotmail.com>
    Via: MSNSLP/1.0/TLP ;branch={33517CE4-02FC-4428-B6F4-39927229B722}
    CSeq: 0
    Call-ID: {9D79AE57-1BD5-444B-B14E-3FC9BB2B5D58}
    Max-Forwards: 0
    Content-Type: application/x-msnmsgr-sessionreqbody
    Content-Length: 906
    EUF-GUID: {A4268EEC-FEC5-49E5-95C3-F126696BDBF6}
    SessionID: 1980589
    AppID: 1
    Context: PG1zbm9iaqBDcmVhdG9yPSJ4eHh4eEBob3RtYWlsLmNvbSKgU2l6ZT0iMTY5NDUioFR5cGU9IjMioExvY2F0aW9uPSJURlIyRDIwLmRhdCKgRnJpZW5kbHk9IkFBQT0ioFNIQTFEPSJDKy9rUm0yaEFZZDZ4Q0tCdWZNUVRJRUcrWDg9IqBTSEExQz0iOTYyMldURHBPeHllTlVqRmNadlErOXoxdEEwPSIvPjAw
    00
    00 00 00 00

<<< 282 1

Search website:


Copyright©2002-2004 to Mike Mintz.