Kirsle.net logo Kirsle.net

Skype switched to the MSN Messenger Protocol

December 9, 2014 by Noah

Today, Fedora 21 was released and I upgraded to it immediately, and decided not to install Skype this time.

Skype for Linux has been poorly maintained, going years between updates sometimes, and who knows what kind of unknown zero-day vulnerabilities are in there. On my previous installation of Fedora, Skype twice showed a weird issue where it replaced some of its icons with Chinese (or Korean, or something) symbols. I posted about it on Reddit and the Skype forum with no responses, as if I'm the only one who's ever seen this. Was I hacked? Maybe.

I took the latest Windows version of Skype and dumped all its icons trying to find these weird symbols but came up empty-handed. And I don't know of any way to pry icons out of the Linux binary of Skype. So... for now I just don't trust it.


In other news, I decided to Google the Skype protocol, and see what the progress is on people attempting to reverse engineer it, to be able to build an open source third-party Skype client (e.g. to have support in Pidgin). The Wikipedia article said something interesting:

On June 20, 2014, Microsoft announced the deprecation of the old Skype protocol. [...] The new Skype protocol - Microsoft Notification Protocol 24 - promises better offline messaging and better messages synchronization across Skype devices.

I wrote previously that the MSN Messenger service was still alive but it looks like it's the future of Skype as well.

The Microsoft Notification Protocol (MSNP) is the protocol used by MSN Messenger/Windows Live Messenger. I'm reasonably familiar with it from back in the day when I used to work on chatbots that signed in to MSN Messenger to accept their add requests and carry on conversations with humans.

MSNP is a plain text, line-delimited protocol similar to SMTP. There is some outdated documentation up through MSNP10 that we referenced in developing an MSN module in Perl. As an example, this is what you'd see going over the network if somebody sent a chat message to a friend:

MSG 4 N 133
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-MMS-IM-Format: FN=Arial; EF=I; CO=0; CS=0; PF=22

Hello! How are you?

The protocol consisted of command lines, typically three letters long (some I remember offhand: NLN--go online, FLN--go offline, BRB--set status to "be right back", RNG--request a conversation with a contact ("ring"), ANS--accept a conversation request ("answer"), and MSG--send a message). The RNG and ANS commands were invisible to the user in the official client, but allowed for some interesting behaviors in our chatbots (like immediately sending you a message the moment you open their chat window, before you even begin to type anything!)

It's interesting that Skype "downgraded" to the MSNP though, given that Skype's old protocol was an impenetrable fortress of obfuscation and encryption that nobody's ever managed to reverse engineer. Even third party clients like Trillian that had Skype support were technically using SkypeKit, a developer tool that allowed Skype to be remote controlled, but which kept all the proprietary bits a secret still. On the other hand, it makes sense for them to make Skype conform to Outlook.com and their other services that used MSNP, rather than upgrade all their other services to use the Skype protocol.

The last version of Windows Live Messenger used MSNP19 (or MSNP21 depending who you ask), so the new Skype protocol is just the next version of MSNP.

In Googling MSNP24 I found this site where efforts are already underway at reverse engineering it. This other site has a lot more details on the current status of the Messenger protocol.

It's only a matter of time now until Pidgin can natively support Skype accounts. It will also be fun to program chatbots for Skype. :)

Tags:

Comments

There are 5 comments on this page. Add yours.

Avatar image
dpogue posted on December 10, 2014 @ 05:25 UTC

There is an existing 3rd party Pidgin plugin for Skype that I used several (or seven) years ago: http://eion.robbmob.com/

The author wrote a post just today about a branch of it that doesn't require Skype to be running: http://eion.robbmob.com/blog/2014/11/30/using-the-new-skype-for-web/

Avatar image
Noah (@kirsle) posted on December 10, 2014 @ 06:06 UTC

That's interesting. On the first link: I knew of that one, it required the Skype client to be running and used its API (the Linux version of Skype still has an API you can configure in its settings, but as I understand it, the API is deprecated and was removed already from the Windows version).

SkypeKit was a headless Skype client that implemented the same (or functionally similar) API.

The new link looks interesting; it's probably related to the MSNP24 stuff, since MSNP24 uses an HTTPS API only (MSNP protocol versions).

Avatar image
Flobo posted on December 29, 2014 @ 21:49 UTC

I added that part on wikipedia last summer even though i could not find any reference to support it.

I used messenger on Windows Phone 7 and my dekstops and it handled smart notifications only to the active device perfectly. That all went away with Skype in 2013. All of my device were always ringing.

But it suddenly started working again last summer when skype switched protocol. That and the fact that typing /dumpmsnp in a skype windows made it look like it was connecting to the messenger service made me think we were back to the messenger protocol.

Since i could not find any reference for it, I added it to the wikipedia page but was not fully certain i was right and that someone would remove it if i were wrong since i know really very little about how it works on the inside.

Avatar image
DiaaAttia posted on March 16, 2015 @ 19:45 UTC

Hi, I am currently learning Chinese language with native speakers by Skype through http://preply.com/en/chinese-by-skype and I must say that the guys there are presenting Excellent quality and I am satisfied, but I am looking to try another option in order to choose the best, anyone got some options?

Avatar image
klear6 posted on August 11, 2015 @ 21:01 UTC

Need a little help getting Trillian to support msn/windows live and skype again. I know they have disabled the service but somehow I had gotten a plug-in to work before I reinstalled windows last week. I don't remember exactly what I did but it had something to do with skypekit. Please help or point me in the right direction. I seriously doubt trillian has blocked whatever I did in less than one weeks time.

Add a Comment

Used for your Gravatar and optional thread subscription. Privacy policy.
You may format your message using GitHub Flavored Markdown syntax.