首页 > 其他分享 >QQ空间协议重要参数获取login_sig、ptqrtoken、g_tk、p等

QQ空间协议重要参数获取login_sig、ptqrtoken、g_tk、p等

时间:2024-09-27 17:22:38浏览次数:9  
标签:QQ qq ptqrtoken 代码 html 参数 tk login com

QQ空间协议login_sig、ptqrtoken、p、g_tk、E.salt参数逆向获取

QQ空间协议所有需要加密算法的重要参数汇总

除了这些参数,其他所有参数都可在相关请求包的响应中找到,只要有这几个参数便可以玩转QQ空间协议

本专栏包含QQ空间协议登录、点赞、发|删说说、留言等

login_sig、ptqrtoken、p、E.salt和登录有关

g_tk 登录成功后发说说、点赞、留言等所有功能都需要的参数

一、 各参数算法

1.1ptqrtoken

直接在c_login_2.js中搜索ptqrtoken即可发现是通过hash33函数进行加密得到

 下断点可以判断,参数就是qrsig 

1.2login_sig

 直接GET请求 下方的URL  在响应Cookie中即可找到login_sig

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https://qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&=&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https://qzs.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=手机QQ空间&pt_qr_link=https://z.qzone.com/download.html&self_regurl=https://qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=https://z.qzone.com/download.html&pt_no_auth=0

1.3g_tk

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

1.4 p

1.4.1 p分析 

 先在登录包处查看堆栈,在loadScript、submit、匿名处下断点

 在c_login_2.js,通过debug的作用域参数列表可以知道p参数是在S['default']中,搜索这个逐步查找可以找到图片中框起来的部分,发现p是通过getEncryption函数进行加密得到

 

可以看到密码p的密文是通过getEncryption这个函数得到的,一共有4个参数 ,注意其中的E.salt

getEncryption函数 可以看到函数的参数

t——密码明文

e——E.salt 

n——验证码包响应的验证码

o——空

此处验证码包也就是参数n请看我的文章

点我跳转——QQ空间登录协议逆向分析|账号密码登录

 

跟踪E.salt ,可以看到E.salt是通过账号进行uin2hex算法得到的,登陆时输入邮箱的话会把@qq.com替换为空 

uin2hex 就是 getEncryption函数 e参数算法  参数str为账号明文 

 1.4.2 getEncryption扣代码思路

代码是经过简单混淆的,扣代码还是比较困难的,和p算法有关的代码扣了900多行

可以看到涉及三个不同的作用域n['default]、u['default]、S['default]还有本身的作用域 

 像这些本地作用域的函数,直接在函数所在的本地作用域找即可

 直接在这里面找l(),t(),w()等方法抠出来 

对于其他作用域 

 

可以像这样单独创建对应的代码块,然后抠出来放进去,对S,n,u分别弄 

 怎么找到对应的块的代码?

下断点之后,鼠标悬停在对应的方法,即可找到该函数的代码 ,网上找到这个代码所在的区域,把_()、y()、k()等方法扣下来放到u对应的里面即可

比如我的var   aaaaaa对象则代表u['default']  

完整且规范写的话需要写var S,var n,var u三个

二、Python代码

2.1ptqrtoken代码

def hash33(t):  #参数:qrsig
    e = 0
    for n in range(len(t)):
        e = (e << 5) + ord(t[n])  
    return e & 2147483647  # 返回ptqrtoken

 2.2login_sig代码

def get_initial_cookies(): 
    global global_cookies
    # 发送 GET 请求到指定的 URL 来获取初始 Cookie
    url = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https://qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&=&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https://qzs.qqzone.qq.com/qzone/v5/loginsucc.html?para=izone&pt_qr_app=手机QQ空间&pt_qr_link=http://z.qzone.com/download.html&self_regurl=https://qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=http://z.qzone.com/download.html&pt_no_auth=1"
 
    headers = {
        "Host": "xui.ptlogin2.qq.com",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Accept-Encoding": "gzip, deflate, br, zstd",
        "Connection": "keep-alive",
        "Upgrade-Insecure-Requests": "1",
        "Cache-Control": "max-age=0"
    }
 
    # 发起 GET 请求
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        # 合并获取的 Cookie 
        global_cookies.update(response.cookies)
        return global_cookies, headers
    else:
        print(f"请求失败,状态码:{response.status_code}")
        return None, None

2.3g_tk代码

def get_tk(skey):
    hash_value = 5381
    for char in skey:
        hash_value += (hash_value << 5) + ord(char)
    return str(hash_value & 2147483647)
print(get_tk('p_skey'))

2.4p算法代码调用思路

将p算法完整的js代码扣下来之后,使用python的subprocess库对js代码进行调用即可

由于扣下来的js代码较长,这里只展示扣代码思路,只要跟着debug里面的方法一点点扣下来即可

 使用args配合subprocess库,args[0]即为python代码传入的第一个参数,其他同理 

 vercode就是js代码中args[0] 

 测试结果: i267PnCDEUJb5h03dENIKxs8lQw7piqg*kUELiyl1L3s7QVsgk2LuM4HGtGJ0G0vc6q-u1aCHsdioDr4n9MQEeLx9WdtB5l4Y*hPMOUn5jQ5ygWyioefo1usP0kguKCzppaxBs0HCiMF0aI0DPSvxXtE8BPPaRaFV*h4rFdNNdeSs2AHF9STi44GUmwtUwxS0rb*MJ75InMO7bxgyP4d-o3mjgHO10mftu0EBJLl-WDn03LCWlhl3GCFyY3t0*gKMKMf*XULEjkA660vGOlB5Je*iLgivVQCWNEokL6JoIVjZp7IP1sy7h0IzAFX7Fy2fI2DKCsOjYKRLbQrq-HbDA__

标签:QQ,qq,ptqrtoken,代码,html,参数,tk,login,com
From: https://blog.csdn.net/qq_37454479/article/details/142550262

相关文章

  • Springboot大学生交流和辅导系统4btkz(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,教师,在线留言开题报告内容一、课题背景随着高等教育的发展和大学生规模的不断扩大,大学生之间的交流和辅导成为了一个日益重要的问题。传统的面对面交流和......
  • 禁用QQ自动升级(实测可用)
    事件起因:某客户电脑QQ从怀旧版(9.7)自动升级到NT版本(9.9)版本,新版本由于消息通知功能不能直接查看,老版本右下角消息闪烁,鼠标放上去便可以看到有几个联系人的消息,因此客户强烈要求版本回退到9.7版本,于是帮客户卸载重装;没两天,客户又来报修说是QQ又自动升级到了9.9版本,确定QQ设置......
  • Tkinter制作登录界面以及登陆后页面切换--用户数据从数据库获取并进行合法性校验(二)
    Tkinter制作登录界面以及登陆后页面切换(二)新增功能1.数据库管理(SqlLite)2.用户表创建(用户信息增删改查操作)3.完善登录校验续接上集,废话不多说,开搞!新增功能数据库管理用户表创建(用户信息增删改查操作)完善登录校验1.数据库管理(SqlLite)下面代码中fromdata......
  • 聊聊蓝牙配对技术-CTKD OVER BR/EDR
    背景最近一直在调试耳机的BLEAUDIO功能,一次测试中把CTKD(Cross-transportkeyderivation)宏开关给关了,发现手机完全不会去连接耳机的LEAUDIO服务,甚至BLE连接都不会建立。说明手机连接双模蓝牙耳机的机制是:先去配对BR/EDR,然后通过CTKD的方式去建立BLE连接。带着好奇心去一......
  • Tkinter制作登录界面以及登陆后页面切换
    Tkinter制作登录界面以及登陆后页面切换前言序言1.由来2.思路3.项目结构描述4.项目实战1.登录界面实现(代码)2.首页界面实现(代码)3.打包build.py(与main.py同级目录)4.打包安装包前言本帖子,默认您已了解Tkinter的基础操作,以及原理,文中仅会对部分逻辑描述,不会对T......
  • 《腾讯视频》qqlivebase.dll报错怎么回事,几个快速解决腾讯视频qqlivebase.dll文件丢失
    在我们日常的娱乐生活中,腾讯视频无疑是一个备受欢迎的视频播放平台。然而,当你正准备沉浸在精彩的影视内容中时,却突然遭遇qqlivebase.dll报错,这无疑会让人感到十分困扰。那么,qqlivebase.dll报错究竟是怎么回事呢?又有哪些快速解决腾讯视频qqlivebase.dll文件丢失的方法呢?......
  • 安卓主板_MTK联发科android智能主板方案
    新移科技安卓智能主板,是采用联发科MT8766、MT6762、MT6765、MT8788等芯片平台,64bit四核/八核Cortex-A73/A53架构,主频高达2.3GHZ,是一款性能功能强大的4G安卓平台。板载多路显示屏接口:双LVDS、MIPI、EDP、HDMI多种显示输出接口。内置屏背光电源,3V/5V/12V屏电压跳线,兼容多种种......
  • 仿QQ音乐(HTML+CSS) (1)
    ......
  • Telephony MTK RILD
    1、RILD架构        MTKRILD相关架构,摘取自MTK官方文档        MTKRILD分为两层,TCL层用于消息分发,和MCL层用于和Modem进行AT交互。1、vendor/mediatek/proprietary/hardware/ril/fusion/libril编译生成librilfusion2、vendor/mediatek/proprietary......
  • AWTK fscript 中的 value 扩展函数
    fscript是AWTK内置的脚本引擎,开发者可以在UIXML文件中直接嵌入fscript脚本,提高开发效率。本文介绍一下fscript中的**value扩展函数**value扩展函数value相关的辅助函数。1.value_is_valid判断value是否有效。原型value_is_valid(v)=>bool示例vara=object_c......