首页 > 心得分享,程序资源,易语言 > QQ网页登陆验证协议分析,附易语言实现代码。

QQ网页登陆验证协议分析,附易语言实现代码。

一直以来,就打算自己做QQ网页登陆验证的。

看似简单的东西,其实做出来还是很复杂的。

之前有人分析出了旧版的,但是,现在协议更新了。

不能直接使用了,网上还流传着很多是执行JS脚本实现的。

这个虽然可以用,但是,还是使用脚本组件,或者是建一个脚本执行的类。

很不完美。

这次,花了很久,分析了一下。

选择的是 “我的QQ中心” 的登陆ID。

大概是这么回事。

所有的参数r的值实际为 随机数。

向“http://check.ptlogin2.qq.com/check?uin=QQ号码&appid=1006102&r=0.8499363877657934”提交一次请求。

其中,红色为QQ号码,紫红色为登陆网页的APPID, 我的QQ中心的APPID就是 1006102.不同的登陆有不同的Appid

返回 “ptui_checkVC('0','!2QC','\x00\x00\x00\x00\x8e\xa9\x98\x05');”

或 “ptui_checkVC('1','a1ca88a70369553379dcc5d3140e927242d018cc5568fa98','\x00\x00\x00\x00\x8e\xa9\x98\x05');”

其中,黄色部分,为0,说明,无需验证码,为1则需要验证码。

如果需要验证码,验证码的地址为:“http://captcha.qq.com/getimage?aid=1006102&r=0.3437895567913438&uin=QQ号码

而返回的 红的部分,如果不需要验证码,那么这个就是 校验的验证码。 蓝色部分 实际为QQ号码的16进制。

做好验证码以后,就是最关键的,密码的生成计算,与登陆连接的生成。

置为关键的是密码的计算。

参考下面的代码:

[code lang="vb"]

.版本 2

.子程序 计算密码, 文本型
.参数 密码, 文本型
.参数 验证码, 文本型
.参数 附加码, 文本型
.局部变量 I, 字节集
.局部变量 H, 文本型
.局部变量 G, 文本型

I = hexchar2bin (MD5 (到字节集 (密码)))
H = MD5 (I + 取字节集 (附加码))
G = MD5 (到字节集 (H + 验证码))
返回 (G)

.子程序 hexchar2bin, 字节集
.参数 str, 文本型
.局部变量 i, 整数型
.局部变量 arr, 字节集

arr = 取空白字节集 (16)
.判断循环首 (i < 取文本长度 (str))
arr [i ÷ 2 + 1] = 进制_十六到十 (取文本中间 (str, i + 1, 2))
i = i + 2
.判断循环尾 ()
返回 (arr)

.子程序 MD5, 文本型
.参数 文本, 字节集

返回 (到大写 (取数据摘要 (文本)))

.子程序 取字节集, 字节集
.参数 文本, 文本型
.局部变量 结果, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 arr, 字节集

arr = 取空白字节集 (8)
结果 = 分割文本 (文本, “\x”, )
.计次循环首 (取数组成员数 (结果) - 1, i)
arr [i] = 进制_十六到十 (结果 [i + 1])
.计次循环尾 ()
返回 (arr)

[/code]

这段代码是根据QQ登陆的JS源码转过来的。

密码计算出来了。

其中,计算密码命令中,QQ号码容易理解。

验证码,如果没有验证码,就是上面请求是否需要验证码时返回的 红色字体“!2QC”,如果有验证码,就属于验证码,要转换为大写。

至于第三个那个参数,校验码,是在请求需要验证码的时候,返回的 蓝色字体,就是 那个 十六进制的 QQ号码。

密码生成以后,就可以组登陆连接了,如下格式:

“http://ptlogin2.qq.com/login?u=QQ号码&p=生成的QQ密码&verifycode=验证码&aid=1006102&u1=http%3A%2F%2Fid.qq.com%2Findex.html&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert&action=36-150-1025380&mibao_css=&t=3&g=1”

红色的为QQ号码

橙色的为上述命令生成的QQ密码

黄绿色的是验证码,如果没有验证码,那就是请求时返回的验证码。大写。

提交后,如果登陆成功,会返回“ptuiCB('0','0','http://id.qq.com/index.html','1','登录成功!', 'QQ昵称');”

其中,红色的 值 为1 则登陆成功,否则登陆失败。

错误代码自己研究吧。

上一篇: 杯具,售后检修后说硬盘没有坏道...

下一篇: 中秋节不放假,坑爹了...

  1. 这次的速度不错。好长时间没看见你更新了。看来9月份开学了你才出来啊。

    1. 克服了那股懒劲,就好说了,现在懒了又...

  2. Pang Pang

    观摩

  3. 你为何这么吊,你家里知道么。。。我们做盆友吧。。

  4. 师傅 请受徒儿一拜

最近回复

标签