Xirk: MSNP server in Node.js

so after reviving instagram’s old api i wanted to do something more interesting…

…reviving msnp, i knew this was gonna be more difficult but i have a lot of free time right now so why not!

for now the server only works from msnp2 to msnp6 (7 doesn’t login for now, but i am working on it), my plan is to make a public msn server, but before that i wanna try reviving at least up to msnp12/13

i’ve been working on it for two weeks now, may seem like i haven’t done a lot in such a long time but honestly msnp is not an easy protocol so i am taking my time as i don’t wanna rush things and i wanna make sure EVERYTHING works.

here is a little video demo of me logging in with MSN 4.7

since i plan on making this a public msn server, i’ve made a website for it, it’s still very simple since it’s a w.i.p but feel free to check it out lol


Awesome :slight_smile:

To the best of my knowledge, no one has ever tried to do so using node.



1 Like

ive seen a post on here of someone who did it but no updates since 2022 unfortunately, i originally just wanted to get just wlm 2009 working but then i decided to go step by step from msnp2 to msnp21, msnp 5 and 6 were easy cause they dont really change much from msnp 4 lol

In your SYN handler, You probably need to add a

// 5 params: Version, iterator, Total number of groups, group ID, name, ???```
c.write(`LSG ${transactionId} ${listId} 1 1 0 Other%20Contacts 0\r\n`);

after the BLP.

then shove extra parameters in your LSTs for the group IDs

c.write(`LST ${transactionId} FL ${listId} 1 1 example@test.usr test%20user 0\r\n`);
// AL, RL, and BL don't have group IDs, this example is empty anyway
c.write(`LST ${transactionId} AL ${listId} 0 0\r\n`)
c.write(`LST ${transactionId} BL ${listId} 0 0\r\n`)
c.write(`LST ${transactionId} RL ${listId} 0 0\r\n`)

Doing this should make MSNP7 work.

1 Like

yes! i forgot to post an update but i figured that out yesterday haha :slight_smile: thank you very much tho!

Damn, It’s been a while.

the project’s name has changed from the butterfly project to xirk, might seem like a weird name but i like it lol :stuck_out_tongue: i’ve made a very simple website quickly:

& some updates on xirk itself, i have gotten msnp7 to pass login (as yellows111 mentionned i had groups missing lol) now that i’ve gotten to this level i’m gonna focus on the switchboard, which is probably the hardest part (handles all messages, chat sessions & all that stuff)

i will try to post updates as much as i can :slight_smile:

you can now change your status and it’ll update for your whole friend list (this took a long time to make :sob:)


very cool

Do You think will it support Window Mobile 2003 SE’s MSN Messenger? (Yes, You can actually change it’s server in registry)

do you know what version of msnp it uses?

If I had to Recall… Possibly under MSNP 7

From another post

if it doesn’t work with escargot it most likely won’t work with xirk, they work in a similar way

Well, It does technically work but just complains about the password being wrong, Even with legacy password on.

well it could work then, i think the way i handle legacy passwords is different from escargot

You might need WM2003SE SDK/Emulator to see what kind of password does the WM2003SE Client send, But setting up the internet on Emulator will be a nightmare rocket fuel since… WELL MICROSOFT. Because it Needs Virtual PC 2007 just for the internet and Windows 10 DOES NOT LIKE VPC2007

It has nothing to do with the way Escargot handles passwords, it’s simply HTTPS issues with modern certificates and ciphers.

1 Like

ohh okay makes sense, i thought he meant using MD5 auth, if it uses TWN or SSO yeah it’ll probably have an issue on mine too