青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

統(tǒng)計(jì)

  • 隨筆 - 44
  • 文章 - 0
  • 評論 - 86
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類(31)

隨筆檔案(44)

Mining

最新隨筆

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

MSNP協(xié)議的通信過程[En]

You have been using MSN for quite some time wondering how it works. Well You need not look any further. This article will not just tell you how MSN works but will also tell you how to make your own version of MSN messenger. You can download a sample application from here MSN Clone .Let's get ready to rumble!!!!

 

We can split up the working of MSN messenger into 2 phases

  • Authentication Phase

  • Instant Messaging Phase

The Authentication Phase involves logging into the MSN messenger server and also (friends) list retrieval in this case.

The Instant Messaging Phase involves sending/accepting requests for an Instant Messaging session and also sending/receiving messages.

 

The MSN messenger protocol is an ASCII based protocol. In other words the commands are in pure English !!!.The first phase involves connecting to an MSN messenger server .In this case we shall connect to the server 64.4.13.58 on port 1863(MSN messenger works through port 1863).

Once the connection is done we need to start the log in process. The first stage in this phase is the versioning stage. In this stage the client (in this case your app) lists/sends the versions that it can support to the server and waits for the server to respond.

VER 0 MSNP7 MSNP6 MSNP5 MSNP4 CVRO

In the MSN messenger protocol a "trial id" is sent along with every command. The trial id starts from 0 and is incremented every time the server responds successfully to the client's commands.

 

The server responds like this

VER 0 MSNP7 MSNP6 MSNP5 MSNP4

The Client and the server have agreed on a version in which they will communicate.

 

Next the client sends a request to the server asking it for the name of the security package it supports for authentication.

INF 1

Unlike Yahoo, Rediff and a few other Messengers MSN does not actually send the password as it is.It encrypts the password while sending it ensuring that your password will not be leaked out easily if somebody monitors your port.

 

The server responds with this

INF 1 MD5

Here MD5 is the name of the security package which the server currently supports.

Next the client sends the userid to the server

 

USR 2  MD5  I  venky_dude@hotmail.com

Here the server does a check whether it contains all the relevant details about the user for authentication .If it does not then it sends the following reply

 XFR 2  NS 64.4.13.55:1863  0

What the server says is that the client should connect to the Notification Server(NS) on 64.4.13.55 on port 1863. We close the current connection and repeat the  steps while being connected to the new server i.e  64.4.13.55

  • (client)   VER 3 MSNP7 MSNP6 MSNP5 MSNP4 CVRO

  • (server) VER 3 MSNP7 MSNP6 MSNP5 MSNP4 

  • (client)   INF  4

  • (server) INF  4  MD5

  • (client)  USR  5  MD5 I venky_dude@hotmail.com

Now the server to which we are connected to has the relevant information about the user trying to log in. The server replies this way

USR 5  MD5  S 989048851.1851137130

 The string which is sent by the server is the " MD5 Hash". It is a hash generated by the server and is used in the authentication process. The client then has to send the password which is encrypted using the MD5 algorithm.In effect the client has to send the unique MD5 equivalent of the MD5 hash i.e 989048851.1851137130 in this case and the password combined .i.e. MD5 equivalent of (hash+pass). In this case it turns out to be 3b7926d277068ec49576a0c40598ff21.

USR 6 MD5 S 3b7926d277068ec49576a0c40598ff21

If the password is right then the server replies with this

USR 6 OK venky_dude@hotmail.com venkat

Here the last word is the nickname/name by which the user is known.

In the new version of the protocol (MSNP7) the server sends additional data like some general information about the user and a authentication code something similar to a cookie which can be used for various other functions.

 

MSG Hotmai Hotmail 362
MIME-Version: 1.0
Content-Type: text/x-msmsgspro file; charset=UT
LoginTime: 1011252477
EmailEnabled: 1
MemberIdHigh: 84736
MemberIdLow: - 1434729391
lang _preference: 103
preferredEmai l: venky_dude@hotmail.com
country: IN
PostalCode:
Gender: M
Kid:0
Age: 22
sid: 517
kv: 2
MSPAuth: 2AAAAAAAADU0p4uxxxJtDJozJSlUTS0i7YpwnC9PUHRv56YKxxxCTWmg$$

Now we are logged into the server but our status is still offline. We need to change our status to online in order to send and receive messages. The client does this in the following way

CHG 7 NLN

The server replies with friends who are online and in various states.

CHG 7 NLN

ILN 7 NLN btxxxe@hotmail.com nick
ILN 7 AWY wmpyxxx@msn.com mike
ILN 7 BSY tehpxxpxx@hotmail.com yeaxxx

MSG Hotmail Hotmail 223
MIME-Version: 1.0
Content-Type: text/x-msmsgsinitialemailnotification; charset=UTF-8

Inbox-Unread: 293
Folders-Unread: 0
Inbox-URL: /cgi-bin/HoTMaiL
Folders-URL: /cgi-bin/folders
Post-URL: http://www.hotmail.com

 

The next command to be sent to the server pertains to the version of the client currently being used.The client send to the server it's version number and also information about the machine like the OS and the build.

CVR 8 0x0409 win 4.10 i386 MSMSGS 4.5.0127 MSMSGS

Here 0x409 win 4.10 i386 specifies that the client is running win98 on a intel microprocessor, and MSMSGS 4.5.0127 MSMSGS here specifies the version and build no of msmsgs.exe (basically the version no of MSN messenger).

The server responds with the url to download the latest version and some other info

CVR 8 4.5.0127 4.5.0127 1.0.0863 http://download.microsoft.com/download/msnmessenger/install/4.5/win98me/en-us/mmssetup.exe http://messenger.microsoft.com

 

It is not necesarry to send the CVR command, the messenger protocol will function properly regardless of this command being sent

 

To get a list of people who are in our friends list we may send this command

LST 9 RL

On sending this command the server will reply by sending the reverse list .The reverse list is basically a list of users who can see you when you are online and send you a message.You could alternatively also request for the forward list by sending LST 9 FL .The forward list contains a list of all users whom the user has added to his/her list.

The server responds this way

LST 9 RL 69 1 19 venky_dude@hotmail.com venkat
LST 9 RL 69 2 19 puxxxxx@hotmail.com PUJA
LST 9 RL 69 3 19 vancxxxxx@hotmail.com ramachandran
LST 9 RL 69 4 19 moxxxxx@hotmail.com chandramouli
LST 9 RL 69 5 19 v_n_xxxxx@hotmail.com Narayanaswamy
LST 9 RL 69 6 19 dexxxxx@hotmail.com Venkatesh
LST 9 RL 69 7 19 lousydxxxxx@hotmail.com deepika%20kalyani%20Vairam                                                  LST 9 RL 69 8 19 hexxxxxr@hotmail.com Hetchar%20Ramachandran
LST 9 RL 69 9 19 ambxxxxx@hotmail.com Aiyer
LST 9 RL 69 10 19 suxxx@hotmail.com Ganesh
LST 9 RL 69 11 19 deexxxxx@hotmail.com Deepak
LST 9 RL 69 12 19 anilxxxxx@hotmail.com anil
LST 9 RL 69 13 19 dixxxxx@hotmail.com <Diamond>
LST 9 RL 69 14 19 nvxxxx@hotmail.com giri
LST 9 RL 69 15 19 shxxx@hotmail.com Hari
LST 9 RL 69 16 19 radhikashuxxxxx@hotmail.com radhika
LST 9 RL 69 17 19 eskaxxxxx@hotmail.com kannan
LST 9 RL 69 18 19 shaxxxxx@hotmail.com Shankar
LST 9 RL 69 19 19 puneetagarxxxxx@hotmail.com puneet

 

 

*Every time a friend comes online the server(NS) sends us the following command

NLN 10NLN deaxxxx@hotmail.com Venkatesh

and when the friend goes offline the server sends us this

FLN 10 FLN deaxxxx@hotmail.com

With the MSNP7 protocol msn has introduced a new challenege authentication mechanism. The MSN server sends t a challenge key which the user has to authenticate succesfully in order for the session to continue.

CHL 0 20881396011366812350

 

The client has to send the md5 equivalent of this string which is formed by appending this hash with the string "Q1P7W2E4J9R8U3S5".So the final string which will be sent to the server will be the md5 equivalent of 20881396011366812350Q1P7W2E4J9R8U3S5

i.e MD5string(20881396011366812350Q1P7W2E4J9R8U3S5 )

So the client response would be something like this

QRY 18 msmsgs@msnmsgr.com 32
0212eaad0876afb8505859ca75d21a78

Here 18 is the trial id .Replace it by the appropriate trial id in your program .

The server will respond in the following way if the authentication is right

QRY 18

We have successfully logged into the MSN Messenger server. The Instant Messaging phase is next.






Instant Messaging in MSN Messenger is session based . The people in between whom the conversation is going to take place have to be in a session mode. We cannot send/receive messages unless we start a chat session with a user. 

There are basically two methods in  which a user can be in a chat session                                                           

  • User sends a chat session request to another user
  • User receives a chat session request from another user

 

User sends a chat session request

 

The client(user) sends a command to the server asking it for the address of the SwitchBoard(SB) server. All instant messaging conversation take place via the switchboard server.

XFR 9 SB

The server(SB) replies back with the ip address of the switchboard server(SB),the port on which to connect and a CKI hash. CKI is a security package and the client has to use the hash to connect to the switchboard server.

 XFR 9 SB 64.4.13.88:1863 CKI 989487642.2070896604     

Now we have to make another  new connection this time to the switchboard server. Our previous connection to the MSN messenger server  must be kept as it is. If we lose connection with that server we would log out.

After we have connected to the switchboard server(SB) we send the following command to the switchboard server.

USR 1 venky_dude@hotmail.com  989487642.2070896604  

If the CKI hash sent by us is right the server(SB) responds back with this

USR 1 OK venky_dude@hotmail.com venkat

After this has been done the user has to "Call" the other user to the chat session. This is done by sending the following command.

CAL 2 deadxxx@hotmail.com 

The server replies back with the a session id which it will pass on to the other user

CAL 2 RINGING 11717653

When the other user replies and is ready for a chat the server(SB) sends us this command

JOI deadlee@hotmail.com Venkatesh

This indicates that the other user has joined in the conversation and we are now ready to send and receive messages.

 

User receives a chat session request

When we are being invited to a chat session by a user the server(NS) send us the following message.

 

RNG 11742066 64.4.13.74:1863 CKI 989495494.750408580 deaxxxx@hotmail.com Venkatesh

Here the server(NS) sends us the session id ,the ip address of the SwitchBoard server to connect to,the port on which to connect to ,the CKI hash and the user trying to start a conversation with us.

Now we have to make another  new connection this time to the switchboard server. Our previous connection to the MSN messenger server  must be kept as it is. If we loose connection with that server we would log out.

We  connect to the switchboard server and send the following command

ANS 1 venky_dude@hotmail.com 989495494.750408580 11742066

Here we send our login name ,the CKI hash that was sent to us and the session Id that was sent to us

The server responds back with 

IRO 1 1 1 deaxxxx@hotmail.com Venkatesh

and

ANS 1 OK

We are now ready to send and receive messages.

 

Before sending/receiving messages let us see how the message is constructed.

When we are sending a message we build the header information  in the following way

MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; EF=; CO=0; CS=0; PF=22

While sending a message we send it this way

MSG  2  N 137                                                                                                                                                            MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; EF=; CO=0; CS=0; PF=22

hello

Here 2 is the trial id which has to incremented each time we send a message. 137 is the total length of the message i.e length of the header and length of the actual message that we are sending in this case it is 'hello'.

 While receiving the message it is more or less similar

Here is an example of a message received

MSG deaxxxx@hotmail.com Venkatesh 137
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-MMS-IM-Format: FN=Microsoft%20Sans%20Serif; EF=; CO=0; CS=0; PF=22

hello

 

When the other user is typing a message we receive the foll message

MSG deaxxxx@hotmail.com Venkatesh 100
MIME-Version: 1.0
Content-Type: text/x-msmsgscontrol
TypingUser: deaxxxx@hotmail.com

 

I guess now u guys are well on your way to make your own version of  MSN messenger.Post your doubts/comments/message in the Forumn .Do visit my projects page for some cool vb & c++ codes

 I'll keep adding to the protocol ,will try to put in addition functions like add/remove users ,rename user id,file transfer and voice chat, so keep checking back

 

References:

You could take a look at these sites for more information

This is the original protocol published by microsoft.

http://www.tlsecurity.net/Textware/Misc/draft-movva-msn-messenger-protocol-00.txt

This is the MD5 homepage where u can find programs/codes for doing the MD5 encryption

http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html


MSNP10協(xié)議分析 01.登錄 [by progsoft]
http://blog.csdn.net/progsoft/archive/2004/08/24/82938.aspx

MSN協(xié)議中文釋義(Zz)
http://blog.csdn.net/fanccYang/archive/2005/03/16/321198.aspx

MSN Protocol Version 8
http://msnpiki.msnfanatic.com/index.php/Main_Page
介紹了MSNP 的整個(gè)協(xié)議 & 服務(wù)器 Notification Server (NS)  & Switchboard (SB)  的功能

MSN Messenger Protocol Version 9
http://zoronax.bot2k3.net/
很詳細(xì)的介紹, 里面還有原始包例子

MSN Messenger Protocol
http://www.hypothetic.org/docs/msn/client/invitation_types.php
MSNP 的詳細(xì)命令介紹

Reverse-engineering MSN Messenger's Video Conversation Formats[Ramiro Polla]
http://www.libing.net.cn/read.php/1031.htm

posted on 2008-03-23 13:13 泡泡牛 閱讀(4405) 評論(1)  編輯 收藏 引用 所屬分類: Develop

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日本另类| 久久精品99久久香蕉国产色戒| 亚洲国产欧美不卡在线观看| 国产一区二区三区免费不卡| 欧美日韩岛国| 欧美日韩国产免费| 欧美午夜a级限制福利片| 欧美国产成人在线| 欧美日韩亚洲一区在线观看| 国产精品成人一区| 国产免费成人| 国产亚洲人成网站在线观看| 韩日精品视频| 在线欧美视频| 亚洲深夜福利在线| 亚洲专区在线| 亚洲第一区在线| 亚洲国产精品免费| 亚洲永久在线| 久久蜜桃av一区精品变态类天堂| 久久综合伊人77777| 嫩模写真一区二区三区三州| 亚洲黄色高清| 91久久精品美女| 亚洲欧美一区二区三区久久 | 欧美一区二区在线播放| 久久高清一区| 美女露胸一区二区三区| 亚洲美女一区| 久久久97精品| 欧美日韩一区二区三区在线视频| 国产亚洲精品自拍| 日韩午夜剧场| 久久精品国产欧美亚洲人人爽| 欧美韩国一区| 欧美制服丝袜| 国产精品vvv| 久久久久成人精品| 在线欧美日韩| 亚洲一二三区在线| 久久一区欧美| 日韩一本二本av| 美日韩丰满少妇在线观看| 国产精品―色哟哟| 一区二区三区波多野结衣在线观看| 久久国产欧美精品| 在线亚洲激情| 欧美激情导航| 亚洲第一中文字幕在线观看| 香蕉国产精品偷在线观看不卡| 亚洲国产精品成人| 久久视频在线视频| 国产亚洲一区在线播放| 亚洲影视在线| 99精品视频免费在线观看| 免费91麻豆精品国产自产在线观看| 国产一区二区三区高清播放| 性欧美精品高清| 在线一区二区三区四区五区| 欧美成人精品1314www| 黑人巨大精品欧美一区二区小视频| 一区二区三区视频在线| 亚洲高清在线| 欧美激情bt| 一区二区三区四区精品| 亚洲人在线视频| 欧美激情中文字幕一区二区| 亚洲激情欧美激情| 欧美激情网友自拍| 免费一级欧美片在线播放| 一区二区三区在线观看国产| 美女黄色成人网| 久久精品夜色噜噜亚洲aⅴ| 激情五月婷婷综合| 欧美大学生性色视频| 免费在线国产精品| 日韩视频免费在线| 亚洲卡通欧美制服中文| 欧美日韩免费高清| 亚洲女同在线| 香蕉久久国产| 亚洲电影在线| 日韩午夜一区| 国产精品视频久久久| 久久久久网址| 欧美chengren| 国产精品99久久99久久久二8| 宅男噜噜噜66国产日韩在线观看| 国产欧美日韩三区| 牛牛国产精品| 欧美三区免费完整视频在线观看| 欧美一区二区性| 久久综合九色综合久99| 一区二区三区四区精品| 午夜精品国产| 亚洲日韩中文字幕在线播放| 亚洲精品一品区二品区三品区| 国产精品magnet| 国产精品美女久久福利网站| 极品日韩av| 亚洲电影专区| 国产精品日韩一区二区| 久久久国产91| 欧美国产先锋| 久久久久青草大香线综合精品| 欧美精品在线一区二区三区| 欧美一级黄色网| 欧美激情片在线观看| 欧美一区二区三区久久精品| 噜噜噜久久亚洲精品国产品小说| 一本色道久久综合狠狠躁篇的优点 | 午夜免费日韩视频| 久久一区二区三区国产精品 | 国产欧美一区二区精品性色 | 久久国产99| 亚洲天堂网在线观看| 久久午夜精品一区二区| 亚洲欧美国产77777| 欧美大片va欧美在线播放| 久久国产精品久久久久久久久久| 欧美伦理视频网站| 欧美成人性网| 好吊一区二区三区| 亚洲一区二区三区激情| 一区二区久久| 欧美国产日本| 欧美 日韩 国产在线| 国产欧美一二三区| 亚洲在线国产日韩欧美| 在线亚洲观看| 欧美精品久久久久久久久久| 欧美华人在线视频| 136国产福利精品导航网址应用| 午夜在线观看免费一区| 午夜在线一区| 国产精品毛片高清在线完整版| 日韩视频一区二区在线观看| 亚洲人人精品| 欧美14一18处毛片| 欧美国产日韩视频| 亚洲国产高清在线观看视频| 久久色在线观看| 嫩草成人www欧美| 亚洲欧洲三级电影| 美女999久久久精品视频| 欧美激情久久久| 亚洲免费av片| 欧美午夜久久久| 国产精品99久久久久久宅男| 午夜精品久久久久久久久久久久| 国产精品sm| 亚洲天堂激情| 久久精品国产免费观看| 在线观看欧美| 欧美黑人多人双交| 一本到高清视频免费精品| 久久精品一区蜜桃臀影院| 在线成人h网| 欧美大片一区| 一本久久综合| 久久aⅴ国产欧美74aaa| 黄色免费成人| 欧美激情aⅴ一区二区三区| 一本一本a久久| 久久久人人人| 亚洲大胆美女视频| 欧美精品一区在线播放| 一区二区三区精品视频在线观看 | 一个人看的www久久| 欧美日韩国产综合一区二区| 一区二区欧美精品| 久久精品国产清高在天天线| 樱桃国产成人精品视频| 欧美激情精品久久久久久蜜臀 | 亚洲国产一二三| 亚洲图片你懂的| 国产一区亚洲| 欧美精品亚洲一区二区在线播放| 亚洲深夜激情| 免费欧美在线视频| 中文精品99久久国产香蕉| 国产欧美日韩视频在线观看| 久久亚洲精品一区二区| 亚洲精品一区二区三区福利| 欧美在线视频全部完| 日韩一区二区精品视频| 亚洲午夜小视频| 欧美黄色一级视频| 久久精品30| 亚洲一区精品视频| 亚洲福利视频一区| 国产精品久久久久9999吃药| 蜜臀av一级做a爰片久久 | 99精品视频免费观看视频| 麻豆亚洲精品| 欧美亚洲视频在线观看| 日韩一区二区高清| 亚洲黄色精品| 在线免费观看日本一区| 国产在线乱码一区二区三区|