首先仍是取得验证码,抓包可得:
http://check.ptlogin2.qq.com/check?regmaster=&pt_tea=1&uin=2630366651&appid=7000101&js_ver=10113&js_type=1&login_sig=jBX*GEgR-BFtNPRz-Rz6AG1f2PwOqw0ksVxs0gHPEceuRD0e1VBmwdztN-JoAIlY&u1=http%3A%2F%2Fpet.qq.com%2Floginback.html&r=0.4001144212670624css
uin是用户名都懂得,login_sig目前仍是没堵上可忽略,其中最大的变化就是增长了pt_tea参数,通过分析测试应该是个过分参数,若是为0在登陆时必定要求输入验证码,而且采用老算法加密参数。
这也是为何老程序仍然能够登陆,但每次都要验证码的缘由,估计不久就要堵上了,因此这里应该赋值1采用新算法。html
响应以下:
ptui_checkVC('0','!MOF','\x00\x00\x00\x00\x9c\xc8\x35\xbb','d1f329403a04f3cdcfa2c2edb634bcba803a436ee23330e6d728500550d61349c756894065e5e2ae635c783dd10d3ba1','0');算法
为了方便叙述,各自段名左到右分别命名为:isverified,vcode,salt,pt_verifysession_v1,pt_vcode_v1
isverified仍是指示是否须要验证,0和1分别表明无需和须要。
slat以前叫pt_uin,当使用QQ号登陆时仍是老含义,既字节化的QQ号,而当使用邮箱登陆时返回的字节序列目前不明,分析了下其值是固定的,没找到还原成QQ号的算法,貌似新算法的QQ号都是从cookies里直接取得的。
pt_verifysession_v1就是session验证码,以前一直是摆设如今堵上了,当须要验证的时候这个字段为空,其值须要从cookies中取出。
pt_vcode_v1是新增的,后面会讲到。
vcode在无需验证的状况下含义不变,当须要验证时有了新含义,此时会返回一串字符,以前取得验证码图片时有个cap_cd参数,此次也堵上了,
那么这个参数哪来的呢?就是vcode返回的这串字符了,前面说了须要验证时pt_verifysession_v1为空,当取得验证码后cookies里会多出一个verifysession,没错就是它了。cookie
有了以上参数剩下的就是登陆了:
http://ptlogin2.qq.com/login?u=2630366651&p=Bf89JSlQuPB7vtFHxbBdS9-0BH2SPHfv5f3FcRVsPE8TyMT24eTW5GkVxyAoQXqY58fNiMUyCUJ586NasPx8F-m*pvorVhEKRqedsLIqjFr-nZu6e3W6x8*CVUcbb*LS6OhXQSsul70IMpGBUmw0KEJXURnKApOcPeIJXy1bCEaOkLET*realhzlnmsagmNuRZvqobAVGjFw5QVKmAubXw__&verifycode=!MOF&aid=7000101&u1=http%3A%2F%2Fpet.qq.com%2Floginback.html&h=1&ptredirect=0&ptlang=2052&daid=41&from_ui=1&dumy=&low_login_enable=0®master=&fp=loginerroralert&action=1-10-1423480485958&mibao_css=&t=1&g=1&js_ver=10113&js_type=1&login_sig=jBX*GEgR-BFtNPRz-Rz6AG1f2PwOqw0ksVxs0gHPEceuRD0e1VBmwdztN-JoAIlY&pt_uistyle=17&pt_randsalt=0&pt_vcode_v1=0&pt_verifysession_v1=d1f329403a04f3cdcfa2c2edb634bcba803a436ee23330e6d728500550d61349c756894065e5e2ae635c783dd10d3ba1session
u是用户名,verifycode和pt_verifysession_v1无需多言,而pt_vcode_v1不要被这货骗了,不管前面返回的是什么,这里都应该是0,而前面进行验证时返回的pt_vcode_v1实际上对应这里的pt_randsalt,这个字段是干啥的呢,
当你用qq号登陆时它为0,反之你用邮箱之类的辅助账号登陆时为1,否则登陆会失败。
最后的重头戏就是参数p了,它是暗文密码,相较以前简单的MD5几回此次可谓丧心病狂还新增了RSA,我已经逆向出一大半了,可最终仍是放弃了,理由很简单新算法可变更的地方较多,随便改改又要花费大把精力从新分析绝比费力不讨好,
那么咱们就充分发扬拿来主意吧,反正登陆脚本是现成的,伪造document对象或者把脚本改改直接用本地js引擎拿结果就好喽~~~app