MSN 握手协议和信息交换(2)

MSN 握手协议和信息交换(2)

6.使用SSL协议连接到longin.passport.com 或者其他服务器443端口
   登录名后缀为#msn.com , #compaq.net ,#webtv.net的客户端使用msnialogin.passport.com:443; 登录名后缀为 #hotmail.com 的使用
   loginnet.passport.com:443; 其他使用login.passport.com:443.
   
   建议使用如下方法去定身份证验证服务器:
   SSL连接到nexus.passport.com 443端口,发送如下命令:
   GET /rdr/pprdr.asp HTTP/1.0/r/n
   /r/n
   
   服务器将回应如下:
           HTTP/1.1 200 OK/r/n
           Server: Microsoft-IIS/5.0/r/n
           Date: Sun, 27 Sep 2003 11:57:47 GMT/r/n
           Connection: close/r/n
           PassportURLs:
           DARealm=Passport.Net,DALogin=login.passport.com/login2.srf,DAReg=http://register.passport.net/uixpwiz.srf,
           Properties=https://register.passport.net/editprof.srf,Privacy=http://www.passport.com/consumer/privacypolicy.asp,GeneralRedir=http://nexusrdr.passport.com/redir.asp,
           Help=http://memberservices.passport.net/memberservice.srf, ConfigVersion=11/r/n
           Content-Length: 0/r/n
           Content-Type: text/html/r/n
           Cache-control: private/r/n
           /r/n
           获取回应中的PassportURLs字段中DALogin部分,即可得到身份验证地址,注意该连接实际上需要在前面加上https://,表示要使用HTTP SSL协议获取相关信息.
           login.passport.com 即使需要连接的服务器,用SSL连接到该服务器443端口,即可进行下面的操作
          
           7.在SSL连接中发送如下HTTP请求:
           GET /login2.srf HTTP/1.1/r/n
           Authorization:  Passport1.4 OrgVerb=GET, OrgURL=http%3A%2F%2Fmessenger%2Ecom,sign-in=yourname#hotmail.com.,pwd=******,
           lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom, ct=1065400856,kpp=1,kv=5,ver=2.1.0173,tpf=15920bfbfabbe0badb47790dc51a54fa/r/n
           User-Agent: MSMSGS/r/n
           Host: login.passport.com/r/n
           Connection: Keep-Alive/r/n
           Cache-Control: no-cache/r/n
           Authorization 后面跟内容中的"sign-in="后面为登录的登录名称, "pwd="后面为登录名对应的密码,其后内容为前面服务器返回的usr命令后面部分内容
          
           如果成功服务器将返回如下信息:
          
           HTTP/1.1 200 OK/r/n
           Server: Microsoft-IIS/5.0/r/n
           Date: Sun, 27 Sep 2003 10:43:17 GMT/r/n
           PPServer: H AWPPIIS5B084/r/n
           Connection:close/r/n
           Content-Type: text/html/r/n
           Expires: Sun, 27 Sep 2003 10:42:18 GMT/r/n
           Cache-Control: no-cache/r/n
           cachecontrol:no-store/r/n
           ....(此处省略)
           Set-Cookie: MSPPre=jefgeskenstesting#hotmail.com; HTTPOnly=domain=passport.com;path=/;Expires=Wed,30-Oct-1980 16:00:00 GMT
           Authentication-Info:  Passport1.4 da-status=success,tname=MSPAuth,tname=MSPProf,tname=MSPSec,from-PP='t=50y
           HvVtsqDmntb4B4z*UOKIkjWzyERUzYHRn07bmd*!4LS4w!JLRB95JjopamqbRz1APVAq*hqeYScQIt*Se21yA$$&p=5ArrhL7LNEzou
           oqpC9kIoeqvBm4wzKnISD3QzZOxOIcz6iJ5w33IQJZ3tQjq9*4z*16MQ6y6xYtth7QdEQb*Z1kRHUH6pm6sJsUXfbfNbrhdu5oOJzdIjNXGVSC5Ffheo
           GrHtrxMp1ZgMgeDcLY0yx6iYoO!OEfX1pQ24avzKIQDA7ME7pLMFTKtvp5NJHdBI75Szr3P4d37Y$',
           ru=http://messenger.msn.com/r/n
           Content-Length: 0/r/n
           /r/n
           /r/n
           其中最重要的是Authentication-Info字段返回的值,取得'from-pp' 后面单引号中的部分内容
          
           如果失败服务器返回如下信息 如果失败需要连接其他服务器尝试)
           HTTP/1.1 401 Unauthorized/r/n
           Server: Microsoft-IIS/5.0/r/n
           Date: Sun, 27 Sep 2003 11:58:15 GMT/r/n
           PPServer: H: LAWPPIIS6B077/r/n
           Connection: close/r/n
           Content-Type: text/html/r/n
           Expires: Mon, 20 Oct 2003 07:57:14 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
           PassportConfig: ConfigVersion=11/r/n
           WWW-Authenticate: Passport1.4
           da-status=failed,srealm=Passport.NET, ts=-3,propmpt,cburl=http://www.passportimages.com/XPPassportLogo.gif,
           cbtxt=Type%20your%20e-mail%20address%20and%20password%20correctly.%20If%20you%20
           haven%E2%80%99t%20registered%20with%20.NET%20Passport20click%20the%20Get%20a%20.NET%20Passport%20link./r/n
           Content-Length:390/r/n
           /r/n
          
           同时服务器可能将客户端重定向到其他地方,这是返回如下信息:
          
           HTTP/1.1 302 Found/r/n
           Server: Microsoft-IIS/5.0/r/n
           PPServer: H: LAWPPLOG5C006/r/n
           Connection: close/r/n
           Content-Type: text/html/r/n
           Expires: Sun, 27 Sep 2003 11:57:32 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: Passprot1.4 da-status=redir/r/n
           Location: https://loginnet.passport.com/login2.srf?lc=1033/r/n
           /r/n
           其中 https://loginnet.passport.com/login2.srf?lc=1033就是重定向URL,
           这个时候需要按照这个步开始的方向访问新的服务器loginnet.passport.com 用
           login2.srf?lc=1033代替login2.srf
          
          
           8关闭SSL连接,回到notification 服务器连接上,向服务器在此发送usr
           命令:
           USR 7 TWN S t=50y
           HvVtsqDmntb4B4z*UOKIkjWzyERUzYHRn07bmd*!4LS4w!JLRB95JjopamqbRz1APVAq*hqeYScQIt*Se21yA$$&p=5ArrhL7LNEzou
           oqpC9kIoeqvBm4wzKnISD3QzZOxOIcz6iJ5w33IQJZ3tQjq9*4z*16MQ6y6xYtth7QdEQb*Z1kRHUH6pm6sJsUXfbfNbrhdu5oOJzdIjNXGVSC5Ffheo
           GrHtrxMp1ZgMgeDcLY0yx6iYoO!OEfX1pQ24avzKIQDA7ME7pLMFTKtvp5NJHdBI75Szr3P4d37Y$
          
           命令含义和前面一样,注意的是第三个参数为S, 第四个参数就是上面SSL连接中获取的Authentication-Info 字段中from-pp部分.
          
           如果密码正确notification 服务器将返回usr命令, OK作为第二个参数
           USR 7 OK yourname#hotmail.com /302/204/345/276/220/346/263/263 1 0/r/n
           其中第三个参数是用户登录名,第四个参数是用户的昵称(UTF-8值);第五个代表身份验证是否通过,1 表示true; 第六个如果是MSNP7以上为0,其他为1
          
           其他将返回一些错误.
          
           同时服务器将返回如下信息:
           MSG Hotmail Hotmail 438/r/n
           MIME-Version: 1.0/r/n
           Content-Type: text/x-msmsgsprofile; charset=UTF-8/r/n
           EmailEnabled: 1/r/n
           MemberIdHigh: 90496/r/n
           MemberIDLow: -1587598413/r/n
           lang_preference: 2052/r/n
           preferredEmail:/r/n
           country: CN/r/n
           PostalCode: /r/n
           Gender: /r/n
           Kid:0/r/n
           Age:/r/n
           BDayPre:/r/n
           Birthday:/r/n
           Wallet: /r/n
           Flags:1027/r/n
           sid:507/r/n
           kv:5/r/n
           MSPAuth:
           50yHvVtsqDmntb4B4z*UOKIkjWzyERUzYHRn07bmd*!4LS4w!JLRB95JjopamqbRz1APVaq*hqeYScQIt*Se21yA$$/r/n
           ClientIP: 211.91.101.105/r/n
           ClientPort: 64942/r/n
           /r/n
           各字段含义如下:
           LoginTime: 登录的时间,UNIX时间戳.
           EmailEnabled: 当前帐号是否新邮件通知,仅仅对hotmail.com msn.com 的用户有效,1或者0
           MemberIdHigh:90496, 联系人ID最大值
           MemberIdLow: -1587598413,联系人ID最小值
           lang_preference: 2052,首选语言代号(同LocalID)
           preferredEmail: 用户的主要邮件地址,一般为空
           country: CN, 用户国家代号两位字母
           PostalCode: 用户邮编
           Gender: 用户性别,m或者f或者u,u表示未知
           Kid:0 您的帐号是否是未成年人的帐号,0或者1
           Age:年龄
           BDayPre: 距离您的生日天数
           Birthday: 生日,使用数字表示
           Wallet: 是否有微软的Wallet服务,0或者1
           Flags: 1027 未知
           sid: 507 hotmail登录的一个数字, 一般为507
           kv: 5 hotmail登录的另一个数字,一般为5
           MSPAuth: SSL连接中取得Authentication-Info 字段中from-pp部分中的t的值
           ClientIP:211.91.101.105 告诉客户端实际上连接到服务器上的IP
           ClientPort: 29703 告诉客户端实际上连接服务器上的端口
          
           注意:实际返回的ClientPort不是真正的端口号,需要用函数ntohc转换,其原型为:
           function ntohc(ClientPort: Integer): Integer
           begin
                   Result := ((ClientPort and 255)*256) + ((ClientPort and 65280) div 256);
           end;
          
           端口号在HTTP类型的代理中将为0,在服务器返回的信息中ClientIP特别有用,它用来排断客户端是否位于
           防火墙,网关,代理服务器后面,决定客户端是否直接和服务器连接,如果ClientIP不是客户端所在机器IP地址列表中
           即可判断,客户端位于防火墙后面,它需要在文本传输中的"Connectivity"字段使用,同时在MSNP9 中(Conn-Type字段)
           可以去定连接类型,方法如下:
           将返回的IP地址,端口连接到服务器上的IP地址端口作比较,根据结果得出:
           IP地址相同端口相同: Direct_Connect
           IP地址相同端口不同: Port-Restrict-NAT
           IP地址不同端口相同: IP-Restrict-NAT(局域网连接多为这种情况)
           IP地址不同端口不同: Symmetric-NAT或者Unknow-NAT
           其他客户端不能确定的情况可以定为Unknow-Connect
          
          
           下一节将介绍同步本地联系人列表,欲知详情,请听下回分解.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值