对MSNP9协议的简单使用示例

MSN Messenger协议 原作:bhw98 前 言MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。该软件的最新版本是6.1。1999年,Microsoft向IETF提交了一份"MSN Messenger Service 1.0 Protocol"草案,这是最初版本的MSN M 阅读详情

过去的MSN Messenger版本(MSNP8以下),简单地使用MD5等Hash算法对用户身份进行认证。MSNP9/MSNP10使用一种TWN(Tweener)认证方式,通过SSL/TLS连接到login.passport.com和loginnet.passport.com等服务器,借助于HTTP协议输入账号和密码,认证通过后,才能取得“入场券”。

真正意义上的身份认证,发生在客户端与通知服务器(NS)之间。客户端登陆NS时,首先交换版本信息。双方均支持MSNP8以上版本时,才能进行认证过程。如果客户端版本较低,不支持TWN,那就登陆失败了。

在下面的例子中,账号是“stodtleo@msn.com ”,密码是“password”。

VER 4 MSNP10 MSNP9 CVR0 /r/n
VER 4 MSNP9 CVR0 /r/n
CVR 5 0x0804 winnt 5.0 i386 MSNMSGR 6.1.0203 MSMSGS stdotleo@msn.com /r/n
CVR 5 6.0.0602 6.0.0602 5.0.0527 http://download.microsoft.com/download/d/4/f/d4f560d5-6dc6-4901-b149-a568415561d7/SETUPNT.EXE http://messenger.msn.com/cn /r/n
USR 6 TWN I stdotleo@msn.com /r/n
USR 6 TWN Slc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1073355862,kpp=1,kv=5,ver=2.1.0173.1, tpf=ed1c2f217a21c191c61251eb8b73bb60 /r/n
(此时通过SSL进行身份认证,获得“入场券”)
USR 7 TWN S t=4m1wWfEupDgUNb53qys5gJdw8OTJEtT82fcuDbS3U672gTymOOs6cgKeafj7WjgZNcufAQggxqHRRXko02DoflZA$$ &p=4QXNnX9rFDDgki9ZqvqPZGDGJa2Mrd5H13Zfl0NNjh4I78qPyfpzmkZPZEe0nxJTkzZSNDYtk!57cVqiYVfO86KgCRYWhi2kudS0M !7bdi82EDA1FYp3WboHD!sCQ17OZh7lPQI7fozrgsSMZwgSzRi2FNTPxf13oDNIfDCKCG!2guDvZKEpk78A$$ /r/n
USR 7 OK stdotleo@msn.com  stdotleo@msn.com  1 0 /r/n

(TrID=4),双方协商MSN版本号。客户端说“我能支持MSNP9和MSNP10”,NS说“行,就MSNP9吧”。

(TrID=5),客户端报告本机信息:OS = Windows 2000 (NT 5.0), 语言 = 简体中文,MSN Messenger版本 = 6.1.0203, 账号 = stdotleo@msn.com 。NS给出了推荐的版本号,能够使用的最老的版本号,新版本下载地址,官方网站地址等信息。

(TrID=6),客户端要求身份认证(I = Initial),NS则给出所需要的一长串信息(S = Subsequent)。其中tpf相当于challenge,参与Hash运算,能保证每次认证返回的串是不同的。

(TrID=7),客户端出示从认证服务器得到的“入场券”,NS放行(OK)。

(TrID=6)与(TrID=7)之间,通过SSL的认证过程如下:

首先在HTTPS端口443向login.passport.com发送一个GET请求,将账号、密码和NS给定的一长串信息送出

GET /login2.srf HTTP/1.1 /r/n
Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=example%40passport.com,pwd=password, lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1073355862,kpp=1,kv=5,ver=2.1.0173.1, tpf=ed1c2f217a21c191c61251eb8b73bb60 /r/n
Host: login.passport.com /r/n /r/n

根据情况,会重定向到不同的URL。本例中,重定向到"https://loginnet.passport.com/login2.srf?lc=1033",服务器应答

HTTP/1.1 302 Found /r/n Server: Microsoft-IIS/5.0 /r/n
Date: Mon, 22 Dec 2003 21:10:05 GMT /r/n
PPServer: H: LAWPPLOG5C006 /r/n
Connection: close /r/n
Content-Type: text/html /r/n
Expires: Mon, 22 Jun 2003 21:09:05 GMT /r/n
Cache-Control: no-cache /r/n
cachecontrol: no-store /r/n Pragma: no-cache /r/n
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" /r/n
Authentication-Info: Passport1.4 da-status=redir /r/n
Location: https://loginnet.passport.com/login2.srf?lc=1033 /r/n
/r/n ... ...

然后,重新向指定的URL发出请求,得到如下响应

HTTP/1.1 200 OK /r/n
Server: Microsoft-IIS/5.0 /r/n
Date: Mon, 22 Dec 2003 21:10:07 GMT /r/n
PPServer: H: LAWPPIIS6B061 /r/n
Connection: close /r/n Content-Type: text/html /r/n
Expires: Mon, 22 Dec 2003 21:09:07 GMT /r/n
Cache-Control: no-cache /r/n
cachecontrol: no-store /r/n
Pragma: no-cache /r/n
P3P: CP="DSP CUR OTPi IND OTRi ONL FIN" /r/n
Set-Cookie: ... ... /r/n
Authentication-Info: Passport1.4 da-status=success,tname=MSPAuth,tname=MSPProf,tname=MSPSec, from-PP='t=4m1wWfEupDgUNb53qys5gJdw8OTJEtT82fcuDbS3U672gTymOOs6cgKeafj7WjgZNcufAQggxqHRRXko02DoflZA$$ &p=4QXNnX9rFDDgki9ZqvqPZGDGJa2Mrd5H13Zfl0NNjh4I78qPyfpzmkZPZEe0nxJTkzZSNDYtk!57cVqiYVfO86KgCRYWhi2kudS0M !7bdi82EDA1FYp3WboHD!sCQ17OZh7lPQI7fozrgsSMZwgSzRi2FNTPxf13oDNIfDCKCG!2guDvZKEpk78A$$', ru=http://messenger.msn.com /r/n
Content-Length: 0 /r/n
/r/n

开始时直接向loginnet.passport.com发出正确的请求,也是可以的。不难看出,在服务器认证成功的返回信息中,Authentication-Info字段的from-PP串值,就是所谓的“入场券”。

如果认证失败,服务器返回401错误

HTTP/1.1 401 Unauthorized /r/n ... ...

这样,就无法拿到“入场券”,自然不能在(TrID=7)中输入合法的串。

在Linux环境下使用Pidgin与MSNP14进行通信 通过上述步骤和示例代码,您可以在Linux环境下配置Pidgin,并使用MSNP14协议进行通信。请注意,MSNP14协议是旧版MSN Messenger协议,可能不再被官方支持。在Linux环境下,我们可以使用Pidgin与MSNP14协议进行通信。本文将介绍如何在Linux环境中配置Pidgin,以便使用MSNP14协议进行通信,并提供相应的源代码示例。一旦配置完成,您就可以使用Pidgin与MSNP14协议进行通信了。在安装完成后,我们需要配置Pidgin以使用MSNP14协议 阅读详情

相关推荐

网络协议详解(高端进阶篇, 阿里p9)

1. HTTP协议 概念: MAC地址:一个序列号标记了网卡的地址 IP地址:一个序列号标记了逻辑上的一台电脑 PORT端口:标记电脑上的软件 端口要注意点:TCP、UDP是2套协议,一次都可以用同一个数值的端口(2425) ...

k8vg___的博客 210

MSNP9协议分析

转自:http://www.blogjava.net/wadise/archive/2006/04/23/42638.html?opt=admin 前 言 MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。该软件的最新版本是6.1

qinggebuyao的专栏 2196

MSN Messenger协议

1.1  MSN Messenger协议简介 作者:汪俊杰电子邮件:unicentre(at)gmail.comQQ:10402488MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。1999年,Microso

lgmawei的专栏 1365

MSNP10协议分析 01.登录 [by progsoft]

  先给出一个成功登陆的案例 messenger.hotmail.com, port 1863 (连接分配服务器DS)>>>  VER 1 MSNP10 MSNP9 CVR0/r/n>>>  CVR 2 0x0804 winnt 5.0 i386 MSNMSGR 6.2.0133 MSMSGS example@hotmail.com/r/n>>>  USR 3 TWN I example@

ProgSoft 3852

MSNP10协议分析 06.帐户验证 [by progsoft]

MSNP8之前,帐户验证是采取的MD5加密后直接传送。然而到MSNP9之后,帐户验证改为更加安全的SSL。下面直接介绍帐户验证的全过程:第一步,与nexus.passport.com:443的交互。客户端连接 nexus.passport.com:443 (Passport Nexus)客户端发送>>>   GET /rdr/pprdr.asp HTTP/1.0/r/n/r/n 服务

ProgSoft 2317

MSNP18协议分析(一)--- MSN协议介绍

目录(?)[-] 一 MSNPMSNP基本概念 服务器协议命令错误代码编码方式名字 三 通讯过程 近一个多月一直在做手机上一个MSN客户端的项目,目前项目也接近尾声。对于MSN的一套协议,有了一个大概的了解。之所以说是大概的了解,是因为文档基本没有,网络上大部分都是比较老的协议。唯一具有参考价值的是一个C#版的开源MSN和一份微软MSNP13的命令文档。更多的还是我们自

qinggebuyao的专栏 2759

Java利用MSNP协议取得MSN联系人

上一篇文章中介绍了怎样利用MSNP登录MSN,在登录后便可取联系人了,很简单。 参考文章:http://msnpiki.msnfanatic.com/index.php/MSNP13:Contact_Listhttp://msnpiki.msnfanatic.com/index.php/MSNP15:TicketTokens 在登录后,可以得到一个contacts.msn.

星星的技术专栏 2762

MSN Messenger协议概况

前 言MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。该软件的最新版本是6.1。1999年,Microsoft向IETF提交了一份"MSN Messenger Service 1.0 Protocol"草案,这是最初版本的M

0ffs3t 1527

模拟实现msn登陆过程(MSNP15)

这几天了解了一下msn协议的登陆部分,凑了几段代码实现了,有资料的话没什么难度,主要是了解一下相关的过程和机制。下面模拟的是msn 8.5.1238 版本(实际上就是抓包然后填到程序里) 废话少说,直接开始吧(细节不说了,自己补课) 首先登陆DS服务器:messenger.hotmail.com:1863 VER 1 MSNP15 MSNP14 MSNP13 CVR0 VER 1 MSNP15 M

瞎几把学 4783

MSNP10协议分析 01.登录

MSNP10协议分析 01.登录先给出一个成功登陆的案例 messenger.hotmail.com, port 1863 (连接分配服务器DS)>>>  VER 1 MSNP10 MSNP9 CVR0/r/n>>>  CVR 2 0x0804 winnt 5.0 i386 MSNMSGR 6.2.0133 MSMSGS example@hotmail.com/r/nhttp://download

lgmawei的专栏 1057

MSNP18协议分析(二)--- MSN登录身份认证

目录(?)[+] 一 连接服务器 连接到DS服务器连接到NS服务器断开服务器连接 二 身份验证 SSO认证方式登录验证生成登录是发送的p 三 小结 这一篇开始主要介绍MSN登录部分的协议分析,总体来说,登陆这一块是整个MSNP协议的一大块,也是比较复杂的一部分。整个登录的过程主要包括:连接服务器,身份验证,获取用户信息和联系人列表,把联系人列表发送给服务器,发送个人

qinggebuyao的专栏 4756

MSNP9协议分析报告

1. 连 接MSN Messenger协议建立在TCP/IP之上。除了文件传输和语音聊天是直接的"点对点"通信之外,其它所有的情形全部通过服务器进行。在逻辑上,一共有三种类型的服务器,各司其职:派遣服务器(Dispatch Server, DS) - 客户端最初连接的服务器。负责给客户端分配合适的通知服务器。域名是messenger.hotmail.com,标准服务端口是1863。完成

南京程序员俱乐部 2115

MSN Messenger MSNP9 协议分析

前 言MSN Messenger 是Microsoft开发的聊天工具,目前在国内拥有很大的用户群。使用MSN Messenger可以与他人进行文字聊天,语音对话,视频会议等即时交流,还可以通过此软件来查看联系人是否联机等。该软件的最新版本是6.1。1999年,Microsoft向IETF提交了一份"MSN Messenger Service 1.0Protocol"草案,这是最初版本的

567

MSNP8 原文翻译 (Zz)

 MSNP8 原文翻译 (Zz) 1.         声明原文请见http://www.hypothetic.org/docs/msn/index.php,翻译中有改删,仅作学习用途。2.         概述2.1.        什么是MSN Messenger“MSN Messenger”这个说法并不十分明确,微软使用这个术语涉及到了若干不同通讯解决方案。你可以通过“MSN Messeng

昆仑 4万+
上一篇: MSNP9协议分析报告
下一篇: MSNP协议的通信过程[En]
大雨仔
博客等级 码龄23年 28粉丝 159原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值