I’d like to ask you guys something, is it possible to make it so that MSN connects to the Skype server instead of a private one, so that we can talk to Skype users?
I’m sure it would require way more code than just changing the server IP but, is it possible?
I have zero experience in this, but I think it is not about the server. There are many other things that have to be modified and changed to make us have the ability to do that.
Uh…no. Please, god no. I don’t want to talk any of those normies from Skype, nor discord. I would recommend to talk to people from the Escargot MSN servers ONLY!!! that, and I don’t like skype and discord :T
@Old_Bill Yeah, I’m sure it would require reverse engineering and additional code. I wish I knew how the devs managed to “hack” the MSN clients so that I could give it a shot.
@thehoovylord Nobody would force you to add “normies” if this happened
Until recently it was possible to make Windows Live Messenger connect to the same servers that Skype now uses for instant messaging, although I believe that’s no longer the case. Until it became impossible to connect, it was as simple as bypassing the version check that Messenger performs when it connects. It was even possible without hacking anything, if you logged in with Windows Live Mail first, for some reason Windows Live Messenger would ignore the version check.
However, now that’s no longer possible, I suspect it would require much more work, it could require some sort of protocol bridge or something. I’m totally guessing, I don’t know how Skype currently connects, but it’s almost certainly more than changing the servers that Messenger attempts to connect to. Theoretically it’s almost certain to be possible, but whether the amount of work would be justified is another matter.
@enhanox yeah, I was thinking of this because by using Skype contacts the user can talk to a lot more people. Me, for instance, my friends use Skype and they have Skype friends of their own too so I can’t convince them to use escargot if they can’t talk to others. I’m thinking of attempting to do such “hack” but I have no idea how the devs did it, not to mention it would be preferable if WLM 2008+ was used, and they have yet to make a patch for it.
Yes, @enhanox is right.
A bridge will be necessary. And it will have to be continuously updated because Skype is still updated…
I don’t think someone will do the job… especially that the Skype protocol is not well documented. I don’t think it exists any open source client, for example.
Bridges with Google Talk, Facebook may be possible because they all use the same protocol (XMPP) and these networks were part of WLM 2012.
But, it’s a lot of work so I’m unsure if someone will do it.
Skype uses MSN Protocol 24 AFAIK
Edit: Looks like it’s somewhat documented: Home · msndevs/protocol-docs Wiki · GitHub
I want to know how did the devs do it: what language did they use, how did they modify the original messenger, I don’t know
I do agree that it would be hard. Especially handling video/voice calls, no idea if those will even work. But I do want to give it a shot.
A whole server had to be recreated and Messenger executable had to be patched to use this new server because the domain name is different and, of course, we can’t buy the hotmail/msn domain.
It’s developped by valtron and is coded in Python.
Source code is here: Escargot / Escargot Server · GitLab
I’ve found an alternative Skype client (more specifically, a plugin for Pidgin) that seems to connect to the web version of Skype. It’s written in C.
I’m thinking the Messenger executable would have to be edited to send and receive data to Skype Web just like the plugin does in order to work.
Also, the code you’ve sent me is for the server. Not how the messenger was modified, which I can’t seem to find.
I’ll see if I can get in contact with @valtron
Yes, the code is for the server because the change in the executable is not important at all. We just replace
m1.escargot.log1p.xyz. There is no logic change… you can do this change with any hex editor.
If you want to bridge Windows Live Messenger with Skype, you will have to do it on the server side… because the server is responsible for the contact list and the actual chatting. That was how it was working with Skype, Google, Linked In bck in WLM 2012 days.
For version 7, we also replaced the
msidcrl.dll file which is responsible for the authentication (just check the email and password, nothing else). Source code is here: Escargot / msn-msidcrl · GitLab
So since Skype already has its own server, perhaps the client could “host his own server” on localhost whenever WLM is running?
The server, in that case, would be the “translator” between Skype and Messenger: Skype sends data, the server sends it to Messenger; Messenger wants to do something, the server sends it to Skype
I think that could work?
When someone login on Messenger, you will have to login to Skype.
Because you have control over the Messenger server only, the first time, you will have to import the Skype contacts into the Messenger database. I imagine keeping an
origin (skype or messenger) field will be enough.
Next times, you will have to synchronize the contacts: grab all Skype contats and remove from the database the one that had been removed and add the ones that are missing.
Then you will have to maintain the connection to Skype as long as the user is connected to Messenger. This way, you will stay connected for your SKype buddies and, when you receive an event from the Skype server, you can transcript it in MSNP <= 21 format and send it to the Messenger client. Same thing when someone starts to talk to a Skype buddy, you will have to identify this is a Skype buddy (using the origin field), and transcript the MSNP <= 21 command to a MSNP 24 to send it to the Skype server.
So for each user, you will have 2 sockets:
- SOCKET 1: one going to the Messenger client application
- SOCKET 2: one going to the Skype server
This exact same procedure can be used to bridge Facebook, Google Talk, …
What you want to do is maybe possible but really complicated. Indeed, starting from MSNP15, the contacts list is fetched from a SOAP server.
The best method is to bridge both networks at the server level as explained.
Using your idea, you will have to act as a proxy for both the MSNP server and the SOAP servers. This imply your proxy server will need to be intelligent to understand the flow in order to alter it: add the contatcs to the SOAP answers, for example. Filter out the MSNP comands going to Skype buddies (answer to them instead of forwarding them to the Escargot server).
Yeah, I have a lot to learn on how MSN and Skype Web work. And Python, because I don’t know it lol
Do you think this could this be done in C? The plugin I mentioned was made in C and I know how to code in it, but seeing as the escargot server was made in Python, I’m not sure
Edit: I’ll have to know python anyways because I need to know how the escargot server works, silly me
Yes, I imagine it’s probably possible to use some foreign code (like a dll) or call an executable and communicate with it through pipes or threads with Python.
Found this java API for skype
Send and receive private Skype messages
Send and receive group chat Skype messages
Send, receive, accept, and deny friend requests
Get your contact list, know your contacts presence, and change yours
Add/remove users to a group
Block and unblock contacts
Get information about your contacts, such as their name, and their avatar
I’m going to try to use this for interacting with Skype. Much easier than trying to do it from the ground up (well, almost the ground up because of the plugin I mentioned, but adapting it would be a pain in the ass)
Edit: boy this is going to be even more complicated than I thought
Yes, it’s complicated but not impossible!
You can also rewrite the whole MSNP server in the language you want. I did a small login server using PHP, for example…
For bridges between Java and Python, look at this:
Skype has a bot API. Maybe this could be used?