目录
目标网站:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s
首先感谢成功你要成仁啊对我逆向学习路上的指点,向大佬看齐,respect!!
一、分析整体流程
1.点击按钮之前
刷新页面,服务器发送三个请求
①逐一看下去分析其中的参数,第一个是携带时间戳请求拿到gt ch值
②第二个是携带上个包返回的gt和ch值请求 获取js文件
③第三个携带gt ch 和 w 值获取无感验证(此处的w值可以置空
2.点击按钮之后
同样携带一堆参数请求https://api.geetest.com/get.php该接口 其中比较重要的参数有gt ch
(注意此刻的ch值已经更新了
需要留意的值在上图标出,其中有底图链接,更新后的ch,c以及s值。
3.滑动之后
携带gt ch 和w参数请求该接口https://api.geetest.com/ajax.php 其中w值中应该就包含了轨迹信息以及其他加密信息
验证成功会返回 success: 1 的信息
二、还原底图
下Canvas事件断点,然后点击刷新图片,直接可以断到图片还原的地方
可以根据它的算法自己用python或者其他语言还原
三、跟W值
这里就不跟栈去找了 直接搜"\u0077" 定位到w值生成的地方
这里就着重说一下O里面的aa参数吧(包含轨迹信息
其他参数比较简单,正常跟就可以跟到生成的地方了
aa
可以看到aa : e, 然后e是从上一个方法的第二个参数传进来的,进去上一个方法栈看看
看到很长一段 l = xxxxxxxxxxx 复制出来分析一下
肉眼大概还原一下 l = 方法1( 方法2(), 参数2, 参数3 )
在控制台输出看看方法1里的三个参数都是什么
进去方法2 看看这一串乱七八糟的符号是怎么生成的
极验滑块分析基本到这里就结束了,其他参数的生成和加密都比较简单,慢慢扣还是能扣完的
四、部分代码
var aa = function(t) {
var r = []
, i = []
, o = [];
var $_BEHIs = lTloj.$_CX
, $_BEHHw = ['$_BEIBE'].concat($_BEHIs)
, $_BEHJy = $_BEHHw[1];
$_BEHHw.shift();
var $_BEIAO = $_BEHHw[0];
var e = function(t) {
var $_BEIDv = lTloj.$_CX
, $_BEICk = ['$_BEIGW'].concat($_BEIDv)
, $_BEIEU = $_BEICk[1];
$_BEICk.shift();
var $_BEIFh = $_BEICk[0];
for (var e = [[1, 0], [2, 0], [1, -1], [1, 1], [0, 1], [0, -1], [3, 0], [2, -1], [2, 1]], n = 0, r = e[$_BEIDv(182)]; n < r; n++)
if (t[0] == e[n][0] && t[1] == e[n][1])
return $_BEIEU(413)[n];
return 0;
}(t);
for (var num = 0; num < t.length; num++){
e ? i[$_BEHIs(140)](e) : (r[$_BEHJy(140)](n(t[num][0])),
i[$_BEHJy(140)](n(t[num][1]))),
o[$_BEHJy(140)](n(t[num][2]));
}
return r[$_BEGJJ(444)]($_BEGIH(33)) + $_BEGIH(407) + i[$_BEGIH(444)]($_BEGJJ(33)) + $_BEGIH(407) + o[$_BEGIH(444)]($_BEGIH(33));
}
function t() {
return (65536 * (1 + Math['random']()) | 0)['toString'](16)['substring'](1)
};;
function ot(){
return t() + t() + t() + t()
}
t2 = (new Date()).getTime();
function get_w(challenge,gt,out_time,track,c,s,n){
o = {
'lang': 'zh-cn',
'userresponse': H(out_time, challenge), // out_time ch
'passtime': n, // n
'imgload': 89,
'aa': jiami(aa(track), c, s),
'ep':{"v":"7.8.6",
"$_BHR":false,
"me":true,
"tm":{a: t2,
b: t2 + 144,
c: t2 + 144,
d: 0,
e: 0,
f: t2 + 2,
g: t2 + 11,
h: t2 + 35,
i: t2 + 35,
j: t2 + 53,
k:0,
l: t2 + 67,
m: t2 + 133,
n: t2 + 193,
o: t2 + 164,
p: t2 + 818,
q: t2 + 818,
r: t2 + 824,
s: t2 + 1776,
t: t2 + 1776,
u: t2 + 1778
},
"td":-1},
'gdmb': "1349311058",
'rp': U(gt + challenge + out_time) // gt ch out_time
};
var l = V["encrypt"](JSON['stringify'](o), ot());
var e = new X()['encrypt'](ot());
return l + e;
}
搞定✔ 继续努力,我们的目标是星辰大海!!!
理解不对的地方欢迎大佬指正。(抱拳