飞信登录过程的协议分析 (TCP直连方式)
- 用户向服务器发送get请求,获取sip和ssic
服务器返回如下信息:
HTTPMessage: Date: Mon, 17 May 2010 04:39:09 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: ssic=DhIOAADSatQxhddLQSDjDno5A
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 219
<?xml version="1.0" encoding="utf-8" ?>
<results status-code="200">
<user uri=sip:592252757@fetion.com.
<credentials></credentials>
</user>
</results>
记录sip和ssic,后面要用到。
- 向221.176.31.45:8080发送数据,
获取nonce
R fetion.com.cn SIP-C/2.0
F: 592252757 //这个是飞信号
I: 1 //这个应该是会话编号
Q: 1 R
L: 336 //数据内容的长度
<args><device type="PC" version="327249223" client-version="3.5.2560" /><caps value="simple-im;im-session;
服务器返回如下信息:
SIP-C/2.0 401 Unauthoried
F: 592252757
I: 1
Q: 1 R
W: Digest algorithm="MD5-sess;SHA1-sess"
记录下nonce,下面会用到。
- 向221.176.31.45:8080发送response:
R fetion.com.cn SIP-C/2.0
F: 592252757
I: 1
Q: 2 R
A: Digest algorithm="SHA1-sess",
L: 336
<args><device type="PC" version="327249223" client-version="3.5.2560" /><caps value="simple-im;im-session;
如果服务器返回200 OK,即成功登陆。
其中response计算方法如下:
- 随机生成一个32位的cnonce (
627D247341E2C76B51553F413EACB7 5C) - 指定salt为777A6D03,相应的字符串为wzm\x03 (这个貌似也是任意的)
- Hash_pwd=(777A6D03+(Salt+
密码的sha1值)的sha1值) ( 777A6D034D3493C9AC1FA46EB512C6 CEF1B050E3802CD215) - 求sip:fetion.com.cn:hash_
pwd字符串的sha1值,得出key - 求key:nonce:cnonce字符串的md5值,得出H1
- 求REGISTER:sip字符串的md5值,得出H2
- 求H1:nonce:H2字符串的md5值,
得出response ( 88EDC599066D6B775CCF4E91637D4A 0F)
在一般情况下,某事物个体发生具有其特有属性的负面现象,且无法以科学的角度得到合理有效的解释。我们通常称此类现象为“人品问题”(RPWT)。
——摘自《辞海》第314页