YMSG16 Authentication

The new Yahoo messenger v9.0 uses ymsg 16 protocol. For login process client sends username and password to yahoo login server: https://login.yahoo.com, and in response server sends Token which is then used for client authentication process on scs.msg.yahoo.com:5050

This login process goes through multiple steps as follows..

Step 1: Send username and password to login server

Https request url:

https://login.yahoo.com/config/pwtoken_get?src=ymsgr&login=<username>&passwd=<password>

Https response and meaning:

Invalid username  : 1235

Wrong password  : 1212

Information Valid : 0 ymsgr= <token>partnerid=<pid>

data is used in step 2 for further processing.

Note: and seem to appear in pair for given username and password

Step 2: Send token to login server

Https request url:

https://login.yahoo.com/config/pwtoken_login?src=ymsgr&token=<token>

Https response and meaning:

Invalid ymsgr  : 100

Information Valid : 0 crumb=<crumb> Y=<Y-Cookie> T=<T-Cookie> cookievalidfor=

<crumb>, <Y_Cookie>, <T_Cookie> and <B_Cookie> are used in client authentication on receiving challenge string from Pager server.

Note: is received in header of the reponse.

Step 3: After receiving challenge string from pager server

When client receives challenge string from pager server, it sends encrypted response to server. This response is formed using received in Step 2 and challenge received from pager server.

Process for forming response:

crypt = crumb + challenge

hash = MD5(crypt)

response = BASE64(hash)

replace ‘+’ by ‘.’ in response

replace ‘/’ by ‘_’ in response

replace ‘=’ by ‘-’ in response

Client sends this calculated response for received challenge along with <Y_Cookie>, <T_Cookie> and <B_Cookie>.