自学内容网 自学内容网

QQ空间协议访客签名q_sig参数分析

QQ空间协议访客需要的签名参数,q_sig加密算法的获取以及分析,可以用来实现QQ空间访客

q_sig算法在很早之前是可以用qr_sig替代的,并且最新的q_sig算法逆向起来较为复杂

JS/爬虫逆向玩转qq空间协议保姆级教学—qq空间访客篇

QQ空间协议账号密码登录

QQ空间扫码登录协议实现

 一、抓包

get请求https://user.qzone.qq.com/proxy/domain/g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=&loginUin=3592795816&rd=0.17621838767080367&num=3&noflower=1&q_sig=42011e13bcc2665566314c457974f7b10f67c4d90dcb02afaeb9&ver=1.0.3&g_tk=896053551https://user.qzone.qq.com/proxy/domain/g.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=XXXXXX&loginUin=3592795816&rd=0.17621838767080367&num=3&noflower=1&q_sig=42011e13bcc2665566314c457974f7b10f67c4d90dcb02afaeb9&ver=1.0.3&g_tk=896053551

uin——访问的QQ空间

loginUin——登录QQ

q_sig——qq空间签名

g_tk——登录qq的gtk 利用Cookie中的p_skey通过加密算法获得

二、g_tk算法 

 简单跟栈,搜索g_tk即可发现在interface_minl.jsQZONE.FrontPage.getACSRFToken 方法返回的结果就是g_tk  ,在这个方法处下断点可以知道参数为cookie中的p_skey

 三、q_sig签名

小建议:在逆向时可以同时使用火狐浏览器和谷歌浏览器进行逆向,两个浏览器的功能互补可以快速找到加密的地方以及参数的位置

 3.1q_sig参数位置

直接通过火狐浏览器的调试器搜索q_sig即可快速找到其位置

 ​

这里可以知道q_sig参数是在qzone/v8/index/visitor.js中,并且是通过QSEC.q_sign这个方法得到的,并且这个方法的参数是params,接下来我们打开谷歌浏览器,找到这个位置下断点

  3.2方法参数及扣代码思路

 var params = {
        uin:window.g_iUin,
        loginUin:window.g_iLoginUin,
        rd:Math.random(),
        num:3,
         noflower:1
}

通过控制台输出可以看到params的参数

uin——访问的QQ空间

loginUin——登录的QQ

rd——随机数

代码是经过混淆的,触发断点之后,将鼠标悬停在q_sig 方法上,可以追踪到这个方法的位置

 点进来发现是通过这里进行加密的,这是一个经过混淆的很复杂的代码

 拉到最顶上可以看到写代码的人的注释,这是空间签名

 点击代码段,新建一个aaaaaa直接把整个sign_bundle.js扣下来

四、调用扣下来的 sign_bundle.js

doVisit=function(){
seajs.use("aaaaaaa.js", function(QSEC){
var params = {
uin:12345,//访问的QQ空间
loginUin:1234586,//登录的QQ
rd:Math.random(),
num:3,
noflower:1
}
var content = QSEC.q_sign(new URLSearchParams(params).toString());
params.q_sig = content;
console.log(content)
});
}
doVisit()

像我一样直接写一个方法包含在里面即可调用成功 ,运行qqlogin.js之后成功在控制台输出签名,想要在pythonnode.js环境中实现只需要dump下当前浏览器的临时环境,或者补环境即可


原文地址:https://blog.csdn.net/qq_37454479/article/details/142990626

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!