Escargot and YMSG (Yahoo! Messenger)


I started with 5.5 because it’s the oldest version that INSTALLS on modern operating systems (a.k.a. it doesn’t use a 16-bit installer). :stuck_out_tongue:


Thanks. I’m not concerned with the file signing, I’m just patching Messenger to ignore it. Once I get home I’ll drop the specs out. I still have one issue to resolve with it but I should have that taken care of tonight. It just requires some additional state management in the mock session.



that’s what i missed then

[details=don’t click this]>did










hypercam 2 is better


If you’re that interested as to why I’m concerned about the XML config files being signed, I do plan to implement Audibles once I get to Yahoo! Messenger 6.0.


Do you mean: ?


also, YID is actually yellows111, FYI

why is the account recovery a infinite loop to the help page and back, the phone i used has a expired contract… not gonna get that back though


Here’s some details on the contact request packets.

When adding a contact Messenger will send out a packet with service id 15 (dec), the attribute set to 0, and the following keys

1 => The client id or profile id of the sender.
7 => The id of the contact being added
14 => A message
97 => The encoding type (missing = none, 1 = none, 2 = UTF8)
65 => The group the contact will be added to.

The server will then return to the client an add request response notification with a service id of 131, an attribute of 1, and the following keys

1 => The id of the contact being added
7 => The client id or profile id that initiated the add request.
65 => The group the contact will be added to.
66 => The status of the add request which can have the following values

	AddPending = 0
	GeneralFailure = 1
	DuplicateContact = 2
	ContactDoesNotExist = 3
	InvalidCookies = 4
	RecursiveLockup = 5
	ContactListFull = 6
	TooManyGroups = 7
	GroupAlreadyExists = 8
	CannotDeleteContact = 9
	BlockedListFull = 10
	CannotDeleteReservedId = 11
	CannotDeleteContact2 = 12

AFAICT at the moment after the server should now resend the updated profile to the client so the buddy appears in the list. AFAIK this will not show a pending state in pre 6.0 or 7.0 (i forget). Later versions do include a list of pending contact adds in the profile though. I know federation was added in 7.0 but I forget when exactly the pending status began showing up., Even later versions deliver the contact list as a nested table in the profile :slight_smile:

The server will then dispatch an add request to the recipient with a service id of 15, an attribute of 3 (IMPORTANT!), and the following keys

1 => Id of the user adding you
3 => The id of the user being added
14 => The add request message
97 => Text encoding (see above)
15 => Timestamp (UNIX/POSIX epoch time)

The attribute is definitely important. A value of 1 is a status message, a value of 3 is an add request, and a value of 7 indicates the add request was denied.

Hope this helps.


Have you tried Mastodon? It’s like twitter, but decentralized and more customizable (plus you have more room for your tweets). Give it a shot and see what you think!



Thank you so much! I didn’t even know that the attribute (I think you may be talking about the status DWORD at offset 0x0d-0x10) was supposed to be a specified number when sending contact requests, as I had only assumed that was for rejecting requests. Also wow, a reply packet to the initial ContactAdd packet that isn’t contact details. Interesting.

As I am working with YMSG10, there are presumably no message encoding key-value pairs, but I will keep note of that. :stuck_out_tongue:


The attribute header field is not always used for status codes it’s also used for sub-services/commands and it’s always important. The most common discrepancy you’ll likely encounter is using a value of 0 when 1 should be used and vice-versa. The contact online packet is like this :slight_smile:

You’ll find that a few operations can trigger additional packets sent to the client without the client explicitly requesting them (even though they can). In some cases (particularly early on) this was done to reduce network usage for operations that obviously will need a reply. For others it’s just part of the evolution of the protocol as you’ll see when you get to dealing with reliable messaging in later versions.

FWIW you’ll want to make sure you’ve got initial delivery and subsequent refreshes of the users profile correct. Most operations including adding and removing a contact as well as renaming a group require the profile to be refreshed otherwise the changes do not appear in messenger.


Interesting to hear. :stuck_out_tongue:



Finally got contact requests to work, thanks to the lovely @ChetSimpson. Progress will be continued as normal, and hopefully, the server goes live. :wink:


Can you pass me the patched Yahoo! Messenger?


Unfortunately, the server isn’t live yet (I have never completely finished the thing).

But for future reference, connecting to the Escargot Yahoo! server is just a simple registry hack. :wink:



Esca(rgot) + (Y)ahoo!


my inside feelings

uwu… owo when dis?


Sounds a bit off, but good job anyways. :stuck_out_tongue:

(Maybe if you retained the “r” in “Escargot”, “Escarhoo” would sound a bit nicer).


Congratulations on getting everything up and working for contact adds. Hope it gets you back on track


:stuck_out_tongue: Your welcome.

But just to let you know, I’m now stuck on actually adding people to contact lists because Yahoo! Messenger doesn’t send a packet to notify such (from watching your videos, you seem to be puzzled by this, too, so I’m not really asking for much).