MSNP Implementation


Hello there…

I’ve been reading all arround the MSN Wiki (better saying it’s archived version), as I’m trying to understand how MSNP operates from server perspective. However, it lacks some info – we’re dealing with a proprietary protocol, so it’s not surprising, at all… Either way, it was possible to find a bunch of useful hints.

I’m working with MSNP18, testing a client against a socket, and got to receive interesting data. But some commands (sent from my “emulated server”) aren’t recognized by the client. I’ve tried to use this page as main reference, because it’s pretty hard to find information about MSNP18.

What happens: the profile MSG, for example, gets refused by the client who states: “Invalid or missing MIME header”.

It also replies to CHG, but won’t return anything after QRY tryId.

So, what’s lacking, if we take that Example Session from my link?



Greetings prppedro

By client, you mean Windows Live Messenger 2009?

Prior to MSNP18 officially being removed from the servers, I had to run a write a server-side MSNP18 proxy for several months for Reviver. I experienced a problem where clients would simply get stuck and refuse to reply back as they should. I figured out that certain commands during the sign in process need to happen in a certain order and the client will simply not respond otherwise.

You’ll want to confirm your GCF is correct and appended policies correctly. I think that was part of the problem I mentioned above.

Also, add in SBS 0 null\r\n right before you send the MSG. The MIME type specified there is correct though.


Hi, TReKiE… I’m glad that you himself is replying to my question, because you had an intense contact with that obscure protocol.

Well, I had some progress changing WLM2009 to Pidgin. Pidgin receives my fake SSO, authenticates against RST.srf and then I sent an OK to it, anyway… It downloads contacts from the SOAP server (I’ll try to implement these HTTPS transactions latter).

Thanks for the GCF hint. Pidgin ignores it, but maybe it’s the culprit for the official client not logging in successfully.

Talking about that “SBS” command, by null you mean null or null char?

I’m having problems with CHG and PRP, as well. Neither official client or Pidgin does accept it. For Pidgin it isn’t really a problem… But I don’t know how official client reacts to it.

I would post my C# project here, but I’m refactoring it, now… The original test server were single threaded, now I’m reimplementing it in a way that it won’t be required for me to restart it everytime I want to test reactions from the client.

Cheers, P.

EDIT: GitHub link for my first crappy implementation:

Unafortunatelly, the comments were written in portuguese (it was only a small personal project, at all)


I would love to see this project working … even if it was a simulated server. See msn2009 open windows would be very interesting. I see I saw the link posted by pedro is offline.


interesting , good luck :slight_smile: