腾讯滑块 vmp逆向
·
腾讯滑块 vmp
定位
var i, n = this, a = decodeURIComponent((0,o.getTdcData)()),
s = (0, o.getKeyInfo)(),
c = {
collect: a,
tlg: a.length,
eks: s,
sess: this.sess,
ans: JSON.stringify(e)
}
collect
跟进 (0, o.getTdcData)()
window.TDC.getData(!0)
发现是vmp

下断点分析日志
发现最后的值
往上看,可以很明显找到一组环境对象
它每次会从中按索引位取4个字符出来
现在可以看到更多的信息了也很明显可以看出这四位数组的计算方法
接着就需要找到这个4266397795和6003456812是咋来的
每两组环境计算出的乱码字符串最后会进行相加
且都是每隔两组会有大量运算出现
可以猜测是一个循环,会走同一个算法
仔细再分析运算的日志,可以发现一个常量值2654435769频繁的出现

两个结果密文我们知道是4266397795和6003456812
之前听说过腾讯的TEA算法,我们让AI推一下

AI告诉我们这不是TEA算法 这是XTEA算法,那我们让AI写个XTAE算法,肯定有KEY,让AI分析下,key拿到了

我们反其道而行之,直接反解试试XTEA 解出来了,时间戳 UA 轨迹等等
{"cd":["","98k",10,[360,360],"+08",1778499801,0,"https://cloud.tencent.com/product/captcha?Is=sdk-topnav",812,0,"",830,0,1023,"https://turing.captcha.gtimg.com/1/template/drag_ele.html?rand=1519713624347",0,"MacIntel","","ANGLE (Apple, ANGLE Metal Renderer: Apple M1 Pro, Unspecified Version)",["zh-CN","en"],[],"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36","iframe",1,1080,2,572926944,"1920-1080-1055-24-*-*-|-*",24,1,"UTF-8","GgoAAAANSUhEUgAAASwAAACWCAYAAAYXTMY+FySbLx8DgDpTw7X3SXJGzfsWQDAIlHM7RrgRs/AAAAAElFTkSuQmCC","Google Inc. (Apple)",1920, [[148,341,20],[0,0,26],[0,1,4],[0,0,6],[-1,0,6],[0,0,10],[0,0,4],[0,0,6],[-1,0,8],[0,0,4],[0,0,2],[0,0,2],[0,0,8],[0,0,4],[-1,0,4],[0,0,4],[0,0,2],[0,0,3],[-1,0,4],[0,0,3],[0,0,2],[-1,0,2],[0,0,5],[0,0,1],[0,0,2],[-1,0,2],[0,0,2],[0,0,2],[-1,0,2],[0,0,6],[-1,0,2],[0,0,4],[0,0,2],[-1,0,1],[0,0,3],[-1,0,1],[0,0,2],[0,0,3],[-1,0,1],[0,0,2],[0,0,2],[0,0,3],[-1,0,2],[0,0,3],[-1,0,2],[0,0,1],[0,0,2],[-1,0,2],[0,0,2],[0,0,2],[-1,0,1],[0,0,5],[-1,0,1],[0,0,3],[0,0,2],[-1,0,2],[0,0,1],[0,0,3],[0,0,1],[-1,0,3],[1,1,12]] ,1300053569,1778336742,1778499813], "sd":{"od":"C","ft":"qf_7Pf__H"}}

collect到这里就结束了,轨迹缺口识别部分略
pow_answer
"".concat(p).concat(d)
p 是从获取验证码信息的接口返回的
d u.workloadAns d = u.workloadAns l = u.workloadDuration
d 和 p 进行拼接就是 pow_answer
这两个值来自接口

接着往下调试可以到如下位置

这里的ans正好是那个concat(d) d值 直接python还原即可
pow_calc_time
pow_calc_time = l
再看更上面赋值过程
l = u.workloadDuration
l往上跟实际上就是duration
其他参数
eks
来自JS文件
tlg
len(collect) 长度
ans
{
"elem_id": 1,
"type": "DynAnswerType_POS",
"data": "121,194" 第一个值left 第二个值就是接口返回的init_pos
}

官方demo测试
状态码 200 ticket有值
测试 小鹅通
可以看到成功了,登陆到帐号主页了…
注意
别人都说腾讯的key是动态的,但我看到得每一套js确实key不一样,环境数组也不一样,但是我把key固定了,环境数组也固定顺序了,竟然成功了,但是会出现没有值的,上代理轻松过了~~
{'errorCode': '12', 'randstr': '', 'ticket': '', 'traceId': '', 'errMessage': '', 'sess': 's0WobnfCueFXMtDqqSFrStWSMmaNjGUa_BlsKyIvTHrtb274gn5oOSUyyVX2KCXRUZ-R6SnoDw3Y6ESm8F6cosXeVanqpqyjPPYbciSuVwaf5aP4_YFgKdxvWBXnugIMRV3gLdSYZMbrLtHMZlBCknt9wLfH2TnPk4pdpw0kPXDVhju0xks0vuwQ84gRa750adQOklU_lR-1Xx7Kf2w1He30Cq57B9PenHtyW3raetUVGDboK0jpCs-i4a0iIUnAHtUxIe2BZEgxUYR-pcAGO3oF5gVakpjVvlGDAn0XPM9pD-AP_ALWwCMAwdd7YNZ8ai3uiXLOAZPYttTB7ALUICmQ**'}
声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!
更多推荐


所有评论(0)