极验滑块(8-16,js逆向)

网址:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s

一、抓包分析
无痕模式,刷新页面,
这里第一次获取gt和challenge
在这里插入图片描述
然后携带gt和challenge请求…gettype.php?..网址(保持session)
在这里插入图片描述
然后就是第三个请求,这里的w可以设置为空(保持session)
在这里插入图片描述

走完前三个流程后,就真正开始分析了
点击验证按钮,携带的参数中gt和challenge是上面已经拿到的
在这里插入图片描述
然后分析返回的数据,这里注意gt和challenge的值已经更新了,然后就是常规的bg和fullbg,c和s在后面的加密会用到
在这里插入图片描述
二、图片还原
打canvas断点,刷新验证码图片,一直跳过,直到出现图片但图片还没还原的时候停下,这里是还原的算法,python改写也很方便的,Ge是不变的
在这里插入图片描述

三、w值分析
这里可以跟栈找到生成的地方,想省点头发的可以直接搜"\u0077",w=_+s
在这里插入图片描述
先看s,下断点跟进来

在这里插入图片描述
s就是在图中箭头的那行生成的
简化一下就是var r = new K()["encrypt"](random_str);,random_str跟进去就发现是个随机数(固定即可),至于这个加密的话怎么扣的话,把整个js文件拿下来放notepad++折叠所有层次,把整个K扣下来就能用了
在这里插入图片描述

然后到_值的分析
简化一下

var u = ee["encrypt"](me["stringify"](o), n["qNfX"]());
var _ = l["TYCF"](u);

这个o包含了很多信息,箭头标着的都需要我们生成的,其他都可固定
在这里插入图片描述

我们重点来看下这个aa(轨迹),追回上一个栈,就可以找到aa生成的地方了
在这里插入图片描述

简化一下r[KnGa(1063)][LsRU(1020)](r[LsRU(1063)][LsRU(1047)](),c,s),c和s我们在上面抓包分析的时候已经拿到了,然后跟进r[LsRU(1063)][LsRU(1047)]这个方法里面,看它的轨迹是怎么生成的
在这里插入图片描述
这里的e是最初的轨迹,后面它会进行相减,生成一个差值轨迹。给出部分代码(包括从网站扣的和自己改写的)

function nn(e) {
    var JSo = AEebd.EdE()[8][26];
    for (; JSo !== AEebd.EdE()[12][22]; ) {
        switch (JSo) {
        case AEebd.EdE()[20][26]:
            var t = [[1, 0], [2, 0], [1, -1], [1, 1], [0, 1], [0, -1], [3, 0], [2, -1], [2, 1]];
            JSo = AEebd.EdE()[4][25];
            break;
        case AEebd.EdE()[16][25]:
            var r = "stuvwxyz~";
            JSo = AEebd.EdE()[0][24];
            break;
        case AEebd.EdE()[8][24]:
            for (var n = 0, i = t["length"]; n < i; n++) {
                if (e[0] == t[n][0] && e[1] == t[n][1]) {
                    return r[n];
                }
            }
            JSo = AEebd.EdE()[4][23];
            break;
        case AEebd.EdE()[16][23]:
            return 0;
            break;
        }
    }
}

function rr(e) {
    var IMt = AEebd.EdE()[16][26];
    for (; IMt !== AEebd.EdE()[0][25]; ) {
        switch (IMt) {
        case AEebd.EdE()[16][26]:
            var t = "()*,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqr";
            var r = 65;
            var n = "";
            var i = Math["abs"](e);
            var o = parseInt(i / r);
            if (o >= r) {
                o = r - 1;
            }
            if (o) {
                n = t["charAt"](o);
            }
            i = i % r;
            var a = "";
            if (e < 0) {
                a += "!";
            }
            if (n) {
                a += "$";
            }
            return a + n + t["charAt"](i);
            break;
        }
    }
}

function tt(e, t, r) {
    var UOMq = AEebd.Dod
      , TpucED = ['XCfsd'].concat(UOMq)
      , VYcA = TpucED[1];
    TpucED.shift();
    var WUZs = TpucED[0];
    if (!t || !r) {
        return e;
    }
    var n = 0;
    var i = 2;
    var o;
    var a = e;
    var s = t[0]
      , u = t[2]
      , c = t[4];
    while (o = r[VYcA(123)](n, i)) {
        n += i;
        var _ = parseInt(o, 16);
        var f = String[VYcA(72)](_);
        var l = (s * _ * _ + u * _ + c) % e[VYcA(65)];
        a = a[UOMq(123)](0, l) + f + a[UOMq(123)](l);
    }
    return a;
}

function get_aa(devarr,c,s) {
    var cha = "()*,-./0123456789:?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqr";
    var list = devarr;
    var x = [];
    var y = [];
    var a = [];
    for (var i = 0; i < list.length; i++) {
        var t = nn(list[i]);
        if (!t) {
            x.push(rr(list[i][0]))
            y.push(rr(list[i][1]))
        }else{
            y.push(t)
        }
        a.push(rr(list[i][2]))
    }
    var e=x.join("") + "!!" + y.join("") + "!!" + a.join("");
    return tt(e,c,s)
}

然后这个aa搞定的话,其他一些小的参数应该都不成问题了,还有就是最终的加密,那几个方法都比较好扣,也不一定局限于缺啥补啥,有时候可以用全扣然后导出关键函数的方法。

至此极验滑块分析完毕啦,收工!
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据提供的引用内容,美团滑块验证的js逆向过程如下所示: 1. 首先,需要获取主页接口的参数,包括csrf、uuid、token_id和continues等。这些参数可以在第一个链接返回的源码中找到。 2. 接下来,使用这些参数进行登入接口的请求,其中包括两个加密参数password和h5Fingerprint。 3. 然后,通过验证码获取的接口来获取验证码相关的参数,如verifyMethodVersion、slider、yodaVersion、timestamp、sign、ses和requestCode等。 4. 在获取到这些参数后,可以进行验证接口的请求。该请求需要使用到加密参数behavior和_token,以及动态参数v_c和3eac9809,同时还需要在请求头中添加Authencation。 总结起来,美团滑块验证的逆向过程可分为以下步骤: 1. 获取主页参数 2. 逆向pwd和h5Fingerprint 3. 请求page_data链接 4. 逆向Authencation、behavior和_token 5. 发起最终的验证请求 需要注意的是,以上仅是根据提供的引用内容进行的分析,具体的逆向过程可能还需要进一步的研究和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【2023-03-10】JS逆向之美团滑块](https://blog.csdn.net/qq_26079939/article/details/129442967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [美团滑块(1-18,js逆向)](https://blog.csdn.net/weixin_44772112/article/details/128721509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值