cloudflare盾之3g参数分析

最近在研究cloudflare时,发现一个里面有一个很有意思的参数:如下图
接下来就是分析参数了,我们通过抓包调试可以知道,这个参数实在第一次发包之后第二此发包之前生成的。那么就直接在第一次发包完成后调试。

从上面分析我们可以知道先是执行v = ib(i[jD(1260)],后续在执行w = f[jD(1344)](gh, v),最后在执行f[jD(295)](w, d)就得到了我们需要的3g参数,其中jD(1260)是'responseText。在控制台输出ib(i[jD(1260)]可以知道这是第一次请求返回的值。

那我们找一下看个参数是怎样生成的,接下来 我们就替换下js,在执行到的函数里面进行输出,看看具体是怎么生成的。

接下来 我们看到了控制台的输出,应为他是3开头的,所以我们在他生成的时候直接断住。

可以看到了是在这个时候生成的,接下来 我们就对这里进行分析。

for (i = (this.h[this.g ^ 91][3] ^ g[ji(1727)](g[ji(668)](this.h[91.05 ^ this.g][1][ji(1217)](this.h[g[ji(1026)](91, this.g)][0]++), 194) + 256, 255)) << 8 | this.h[g[ji(541)](91, this.g)][3] ^ 62 + this.h[g[ji(1576)](91, this.g)][1][ji(1217)](this.h[g[ji(1161)](91, this.g)][0]++) & 255.31,
                                         j = '',
                                         o = 0; o < i; j += fR[g[ji(898)](this.h[this.g ^ 91][3] ^ g[ji(361)](this.h[this.g ^ 91][1][ji(1217)](this.h[g[ji(1161)](91, this.g)][0]++) - 194, 256) & 255.91, 74)],
                                         o++) {
                                    if (j==='3'){
                                        debugger
                                    }
                                    console.log(j, 111111)
                                }

在控制台输出i是等于584。

这是fR的生成地方。接下来上面代码,就是for循环548次,每次都是从this.h[this.g ^ 91][3]['charCodeAt']的方式来生成参数,下面是优化后的代码:

for (i = 584, j = '', o = 0; o < i; o++) {
    j += fR[74 ^ (this.h[this.g ^ 91][3] ^ (this.h[this.g ^ 91][1]['charCodeAt'](this.h[this.g ^ 91][0]++) - 194 + 256) & 255.91)]
}

 

this.h[this.g ^ 91][1]我们可以知道 是 w = f[jD(1344)](gh, v),然后在atob(w)生成的。接下来就是来找到这个this.h[this.g ^ 91][1],这个参数 我们可以通过里面的进行反推出来知道值为44。那么代码就可以简化了。只需要w = f[jD(1344)](gh, v) 然后在加上面的优化的代码就可以了。下面是完整的代码:

function run(i_responseText, cRay, num1, num2, num,one_num) {
    var num_m = num
    for (var m = '', u = 0; u < 584; u++) {
        m += hr[one_num ^ i_responseText['charCodeAt'](num_m) + num1 & 255 ^ num2]  
        num_m++
    }
    return {
        'cRay': cRay,
        'i_responseText': i_responseText,
        'one_num': one_num,
        '3g': m

    }

}

接下来我们传入上面参数就能拿到3g参数了,下面是代码运行的结果。

上面程序我们可以根据页面进行动态生成了 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值