mt 风控 behavior 加密以及参数分析

1、加密js在 component_sdk_common_min 这个js文件里面

入口代码

function S(r/*加密的内容*/, t/*风控的request_code*/,version/*JS版本号*/) {

        var n = r;

        return "object" === e(r) && (n = JSON.stringify(r)),

        A(E.Kaito(n, t),version)

 }

// 不同小程序 使用的版本号不一样。而加密方法里面有个 iv是参数用到了这个版本号

2、扣加密方法

 Kaito: function(r, t) {

       return d(e(r, t))

  function e(r, t) {

            return null == r || 0 === r.length ? r : (r = a(r),

            t = a(t),

            h(function(r, t) {

                var e, n, o, i, a, h, u = r.length, s = u - 1;

                for (n = r[s],

                o = 0,

                h = 0 | Math.floor(6 + 52 / u); h > 0; --h) {

                    for (i = (o = o + 2654435769 & 4294967295) >>> 2 & 3,

                    a = 0; a < s; ++a)

                        e = r[a + 1],

                        n = r[a] = r[a] + ((n >>> 5 ^ e << 2) + (e >>> 3 ^ n << 4) ^ (o ^ e) + (t[3 & a ^ i] ^ n)) & 4294967295;

                    e = r[0],

                    n = r[s] = r[s] + ((n >>> 5 ^ e << 2) + (e >>> 3 ^ n << 4) ^ (o ^ e) + (t[3 & s ^ i] ^ n)) & 4294967295

                }

                return r

            }(u(r, !0), s(u(t, !1))), !1))

        }

d = function() {

            var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");

            return function(t) {

                var e, n, o, i, a, h, u;

                for (n = o = 0,

                i = t.length,

                h = (i -= a = i % 3) / 3 << 2,

                a > 0 && (h += 4),

                e = new Array(h); n < i; )

                    u = t.charCodeAt(n++) << 16 | t.charCodeAt(n++) << 8 | t.charCodeAt(n++),

                    e[o++] = r[u >> 18] + r[u >> 12 & 63] + r[u >> 6 & 63] + r[63 & u];

                return 1 == a ? (u = t.charCodeAt(n++),

                e[o++] = r[u >> 2] + r[(3 & u) << 4] + "==") : 2 == a && (u = t.charCodeAt(n++) << 8 | t.charCodeAt(n++),

                e[o++] = r[u >> 10] + r[u >> 4 & 63] + r[(15 & u) << 2] + "="),

                e.join("")

            }

        }()

3、关键加密方法

function A(r,version) {

        var t = w(r)

          , e = W.padding.pkcs7.pad(t)

          , n = function() {

            var r = Math.random().toString().substr(2);

            if (r.length < 16)

                for (var t = 16 - r.length, e = 0; e < t; e++)

                    r += "M";

            return r.length > 16 && (r = r.substring(0, 16)),

            w(r)

        }()

          , i = function(r) {

            var t = w("ABEATBETTER".concat(version));

            return new W.ModeOfOperationCBX(t,r)

        }(n).encrypt(e);

        return function(r) {

            for (var t = "", e = r.length, n = 0; n < e; n++)

                t += String.fromCharCode(r[n]);

            return D.encrypt(t)

        }([].concat(o(Array.from(n)), o(Array.from(i))))

    }

至于解密方法。没有。需要自己实现,

这里其实是 cbc算法 由于js代码 混淆过了  补全一下代码就可以解密了

风控参数分析

71 滑块风控

{
    "env": {
        "zone": [298.08, 57.408],
        "client": [57.96, 340.4],
        "Timestamp": [1725470050360, 1725470080487],
        "count": 1,
        "timeout": 1
    },
    "trajectory": [{
        "point": [
            [0, 91.333, 388.667, 30127],
            [0, 98, 388.667, 30335]

        ]

}]

 "zone": [298.08, 57.408],
        "client": [57.96, 340.4],  固定 

Timestamp 时间戳 第一个为 方法初始化的时候 第二个 第一次拉动滑块的时候  第二个时间 减去第一个时间 要等于 轨迹里面的 最后一个时间间隔

count滑块 固定

point  滑块拖动轨迹 

 [0, 91.333, 388.667, 30127],  坐标 + 间隔  

如有侵权请联系作者删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值