QQ空间登录协议分析:JS篇
来源:互联网 发布:萌照软件下载 编辑:程序博客网 时间:2024/04/30 17:07
QQ空间是用GET方法
访问链接:
“http://ptlogin2.qq.com/login?u=” + QQ号 + “&p=” + 加密 (QQ号, QQ密码, 验证码) + “&verifycode=” + 验证码 + “&aid=1006102&u1=http%3A%2F%2Fid.qq.com%2Findex.html%23myfriends&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert&action=8-57-411578&mibao_css=&t=5&g=1&js_type=0&js_ver=10015&login_sig=M68RroVE7d9cWVGLMysPechIltwu1GWLDkOrMwJ1O2VISYLTKwX6t3*qLIwl1DIa”
检查验证码:
“http://check.ptlogin2.qq.com/check?uin=” + QQ号 + “&appid=1006102&js_ver=10015&js_type=0&login_sig=y9izLTQDUx-VRJ*tu9aAnzzd3Th5R5d3-LSQ-R-DgQmZx7cRXxodffTGfDUzJtox&u1=http%3A%2F%2Fid.qq.com%2Findex.html&r=” + 随机数 (15)
验证码地址:
“http://captcha.qq.com/getimage?aid=1006102&r=0.” + 随机数 () + “&uin=” + QQ号
JS的分析
加密的核心算法
function getEncryption(password, uin, vcode) { var str1 = hexchar2bin(md5(password)); var str2 = md5(str1 + uin); var str3 = md5(str2 + vcode.toUpperCase()); return str3 }password是密码,uin是QQ号的【字节集】,vcode是验证码
function hexchar2bin(str) { var arr = []; for (var i = 0; i < str.length; i = i + 2) { arr.push("\\x" + str.substr(i, 2)) } arr = arr.join(""); eval("var temp = '" + arr + "'"); return temp }
hexchar2bin是将md5文本转化为【字节集】
function ptui_checkVC(B, E, D) { clearTimeout(pt.login.checkClock); pt.login.saltUin = D; if (D == "\x00\x00\x00\x00\x00\x00\x27\x10") { pt.login.show_err(pt.str.inv_uin) } else { if (!pt.login.hasSubmit) { pt.login.hide_err() } } if (B == "0") { pt.login.hideVC(); $("verifycode").value = E; pt.login.needVc = false } else { if (B == "1") { pt.login.showVC(); $.css.show($("vc_tips")); pt.login.needVc = true } else {} } pt.login.domFocus($("p")); pt.login.hasCheck = true; g_time.time7 = new Date(); var A = g_time.time7 - g_time.time6; var C = 0; if (A < 0) { return } else { if (A <= 3000) { C = 11 } else { if (A <= 5000) { C = 12 } else { C = 13 } } } pt.login.checkResultReport(C)}
获取验证码和pt.login.saltUin ,也就是uin的【字节集】
QZFL.pluginsDefine.getACSRFToken = function() { return arguments.callee._DJB(QZFL.cookie.get("skey")) }; QZFL.pluginsDefine.getACSRFToken._DJB = function(str) { var hash = 5381; for (var i = 0, len = str.length; i < len; ++i) hash += (hash << 5) + str.charCodeAt(i); return hash & 2147483647 };
g_tk算法
- QQ空间登录协议分析:JS篇
- QQ空间登录协议实现:易语言篇
- QQ空间登录协议实现:Java篇(Android)
- QQ登录协议分析图
- QQ空间触屏登录加密JS
- QQ空间登录参数分析Firefox+Firebug
- QQ电脑管家登录协议分析
- 使用C#登录QQ空间的过程分析与实现
- 使用C#登录QQ空间的过程分析与实现
- 使用C#登录QQ空间的过程分析与实现
- 使用C#登录QQ空间的过程分析与实现
- QQ空间登陆协议分析-2014年8月
- QQ登录协议概要
- QQ空间登录的http包分析-QQ农场研究手札
- C#实现QQ空间登录
- QQ空间快速登录地址
- 使用selenium 登录QQ空间
- QQ协议分析(转贴)
- Java中的常见类型的输入输出
- SDJZ 放大的X
- Zipper
- SDJZ 摆积木
- parseBoolean
- QQ空间登录协议分析:JS篇
- android学习系列-JDBC连接SQL server与ADO.NET连接Sql Server对比(4)
- 欧拉函数
- Access Control
- 数据库查询优化方案(处理上百万级记录如何提高处理查询速度)
- 浅谈线程
- LIS3D20L的配置
- SDJZ 平均绩点
- VIM学习笔记001 - VIM配置