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

<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>
            国产精品你懂的在线| 欧美激情影音先锋| 久久国产精品亚洲va麻豆| 久久午夜国产精品| 国产专区综合网| 老牛嫩草一区二区三区日本| 最新国产の精品合集bt伙计| 亚洲精品自在久久| 欧美午夜片在线观看| 亚洲综合欧美日韩| 欧美成人视屏| 亚洲欧美日韩天堂一区二区| 国产日韩在线一区| 欧美高清视频在线 | 欧美在线日韩| 亚洲福利久久| 国产精品久久77777| 久久久久久亚洲精品不卡4k岛国| 久久综合久色欧美综合狠狠| 久久久久高清| 99在线精品视频在线观看| 亚洲一区视频在线观看视频| 欧美激情亚洲国产| 午夜精品久久久久久久久久久| 亚洲国产欧美在线人成| 欧美巨乳在线观看| 久久久精品一区| 欧美理论电影在线播放| 欧美在线视频一区二区三区| 一区二区欧美日韩视频| 欧美va亚洲va国产综合| 中文久久精品| 久久久久久久一区二区三区| 国产亚洲精品美女| 亚洲人体大胆视频| 韩国一区电影| 亚洲一区影院| 国产精品久久网| 在线一区欧美| 亚洲精品一级| 欧美日本不卡| 嫩草伊人久久精品少妇av杨幂| 欧美激情影院| 蜜桃av综合| 日韩香蕉视频| 久久久综合网站| 欧美一级日韩一级| 欧美日韩国产欧| 欧美国内亚洲| 永久免费精品影视网站| 欧美成人官网二区| 美女视频黄免费的久久| 久久色在线观看| 国产免费亚洲高清| 久久精品亚洲一区| 国产精品一区二区三区四区| 99在线视频精品| 一区二区av在线| 欧美精品 国产精品| 亚洲欧洲一区二区天堂久久 | 99re热这里只有精品免费视频| 免费成人高清| 欧美刺激性大交免费视频| 欧美片在线观看| 亚洲国产精品一区二区尤物区| 欧美极品在线视频| 亚洲日本一区二区三区| 国产精品一区二区a| 亚洲天堂网站在线观看视频| 亚洲小少妇裸体bbw| 欧美一区二区三区啪啪| 亚洲欧美日韩在线播放| 国产精品天天看| 午夜精品久久久久久久久久久| 亚洲国产精品一区在线观看不卡 | 亚洲一二三级电影| 欧美日韩一区二区免费在线观看| 西西人体一区二区| 国产精品午夜在线| 亚洲高清免费在线| 99精品黄色片免费大全| 欧美日韩调教| 亚洲一区二区三区三| 久久久噜噜噜久久人人看| 国产综合亚洲精品一区二| 玖玖综合伊人| 香蕉久久久久久久av网站| 亚洲国产欧美在线人成| 亚洲性色视频| 亚洲精品一区二区三区不| 欧美成人一品| 久热精品视频在线免费观看| 欧美午夜三级| 亚洲国产精品久久久久婷婷老年 | 欧美成人一区在线| 亚洲精选一区二区| 欧美一区二区三区婷婷月色| 亚洲国产va精品久久久不卡综合| 亚洲婷婷免费| 一区二区激情视频| 久久久久久久尹人综合网亚洲| 国产一区二区日韩| 亚洲无限av看| 一区二区欧美亚洲| 免费看的黄色欧美网站| 日韩系列在线| 模特精品裸拍一区| 亚洲永久网站| 欧美日韩中文字幕| 久久久久国产一区二区三区| 欧美一区二区三区电影在线观看| 欧美韩国日本一区| 欧美91大片| 午夜亚洲精品| 国产精品区一区二区三| 美女日韩在线中文字幕| 欧美一区二区三区的| 亚洲国产精品久久人人爱蜜臀| 欧美日韩国产一区| 亚洲人成在线播放| 久久亚洲欧美| 在线日韩成人| 久久久中精品2020中文| 亚洲一区二区在线播放| 亚洲国产欧美一区| 久久琪琪电影院| 午夜欧美精品| 亚洲综合国产精品| 国产自产精品| 国产精品你懂的在线欣赏| 欧美三区在线观看| 欧美日韩二区三区| 在线亚洲免费| 99国产精品99久久久久久| 亚洲国产aⅴ天堂久久| 夜夜嗨av一区二区三区| 欧美无砖砖区免费| 欧美国产日本高清在线| 欧美91福利在线观看| 一本色道88久久加勒比精品| 亚洲全黄一级网站| 亚洲黑丝在线| 欧美亚洲一区二区三区| 亚洲综合第一页| 欧美一级精品大片| 久久久国产视频91| 久久午夜视频| 亚洲第一福利视频| 亚洲人成绝费网站色www| 午夜在线视频一区二区区别| 亚洲男女自偷自拍图片另类| 亚洲自拍偷拍一区| 伊人久久亚洲热| 亚洲第一在线综合在线| 最新成人av在线| 99精品视频网| 午夜精品剧场| 欧美日韩国产成人在线| 欧美在线国产精品| 亚洲欧洲精品一区二区精品久久久 | 一区二区三区 在线观看视| 亚洲国产色一区| 欧美影院成人| 亚洲麻豆视频| 国产一区二区三区直播精品电影| 美女精品自拍一二三四| 亚洲欧美国产毛片在线| 亚洲二区在线| 亚洲最黄网站| 亚洲成在人线av| 久久久噜噜噜久噜久久| 久久九九免费视频| 欧美高清视频一区二区三区在线观看| 美女精品网站| 亚洲一区综合| 久久经典综合| 亚洲国产日韩精品| 亚洲欧美另类在线观看| 美女脱光内衣内裤视频久久影院 | 亚洲国产毛片完整版| 亚洲乱码国产乱码精品精| 亚洲第一精品夜夜躁人人躁| 久久精品国产999大香线蕉| 欧美国产极速在线| 鲁大师影院一区二区三区| 亚欧成人精品| 亚洲一区免费看| 中文在线一区| 欧美~级网站不卡| 在线午夜精品| 亚洲一区二区三区国产| 日韩午夜激情| 久久久久88色偷偷免费| 欧美在线黄色| 国产精品久久久久91| 亚洲第一天堂av| 老牛国产精品一区的观看方式| 99香蕉国产精品偷在线观看| 亚洲国产片色| 日韩一二在线观看|