js逆向 极验滑块(记录学习 3.17)

 

目录

 一、分析整体流程

        1.点击按钮之前

         2.点击按钮之后

        3.滑动之后

二、还原底图

三、跟W值

   aa

四、部分代码


目标网站: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;

}

 搞定✔     继续努力,我们的目标是星辰大海!!!

理解不对的地方欢迎大佬指正。(抱拳

 

 

 

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值