本文 主要是写算法入口 篇幅有限不能写跟栈细节

要知道细节 评论就可以 或者加v (记得备注)

目录

第一题

第二题

第三题

第四题

第五题

第六题

请求

响应

第七题

请求

TS值

M值  

X值

响应

第八题

M值

第九题

请求

M值

TT值

第十题

第十一题

请求

M值

_ts值 

第十二题

请求

T值

M值

 补环境方案

第十三题

请求

R值

S值

T值

第十四题

请求

M值

第十五题

请求

Hexin-v值

Cookie中 V值

第十六题

请求

H5值 与 T值

第十七题

响应

第十八题 

请求         

第十九题

响应

 

第一题

第二题

第三题

F12检测 -> 手动点开发者工具

第四题

MD5 算法

第五题

AES 加密

第六题

请求

请求头 headers 中的 s 值 和 tt  

响应

响应为密文                      在下面进行解密

响应为 16进制  在转字节时   需要注意

第七题

请求

TS值

时间戳                        

M值  

md5算法

X值

sha256算法

在  m 值 生成后不远

响应

AES 解密

第八题

M值

加密明文为 -> 盐 + 时间戳 + 时间戳转base64 + 盐

下方 ‘\x6d' 即是 加密点

第九题

请求

M值

HmacSHA1 加密

TT值

时间戳 编了个base64码

第十题

扣代码实现 魔改算法 T值

控制台输出的是 加密函数 与明文

第十一题

请求

M值

下方就是入口

加密函数

python实现

def encrypt(var0, var1):
    result = var0 + (var1 // 3)
    result = result + 16358
    return result

encrypt(page,_ts)

_ts值 

这个还是时间戳 和那个wasm加密用的一个时间戳 长度为10

第十二题

请求

T值

13位时间戳 

M值

手动分析到了 20位长度的字节数组 找到他生成方式

即可通过下面代码 生成密文

const obj = {
    "0": 223,
    "1": 189,
    "2": 8,
    "3": 151,
    "4": 184,
    "5": 62,
    "6": 4,
    "7": 61,
    "8": 177,
    "9": 200,
    "10": 17,
    "11": 118,
    "12": 160,
    "13": 118,
    "14": 211,
    "15": 221,
    "16": 97,
    "17": 123,
    "18": 184,
    "19": 64
};
var lin = []

const values = Object.values(obj);
values.forEach(val => {
    var OOO00OO = [
    "/api/problem-detail/12/data/?page=1&m=",
    "",
    "",
    16,
    val,
    "toString"
    ]
    var O00000O = 1305
    OQOQQ0Q = 1,
        Q0OQO0O = OOO00OO['pop'](),
        QQQ0OQQ = OOO00OO['pop'](),
        QQO0OQ0 = [''];
        for (Q0OQO0Q = 0x0; (Q0OQO0Q < OQOQQ0Q); Q0OQO0Q++)
        QQO0OQ0['unshift'](OOO00OO['pop']());
    QQQ0OQO = QQQ0OQQ["toString"]['apply'](QQQ0OQQ, QQO0OQ0);
    if (QQQ0OQO.length == 1){
        lin['push']('0'+QQQ0OQO)
    }else {
        lin['push'](QQQ0OQO)
    }

});

console.log(lin['join']["apply"](lin, ['']))

 补环境方案

参考 这个大佬的视频  

https://www.bilibili.com/video/BV1rjd5Y9ELG/

第十三题

请求

R值

下方是入口    本人扣代码还原的

S值

控制台输出的是 S值加密明文

然后 把明文进行  MD5加密  得到S值密文

T值

13位时间戳

第十四题

请求

M值

是个自运行函数     扣出来即可

当前自运行函数传参时有个p值    这个p值是上方函数 生成出来的   没几行代码

第十五题

请求

Hexin-v值

下方就是入口补环境就出来了

D方法改成这样       补完环境  直接调用出值

Cookie中 V值

v值  和   hexin-v 值同一个

第十六题

请求

H5值 与 T值

下方是生成点

通过补环境实现         补完后         直接调用出值   

第十七题

响应

响应为密文

下方就是解密处                


解密代码

function decryptFontNumber(c) {
    if (typeof c !== 'string')
        return c;
    const e = c['split']('')['map'](f => {
        const g = {
    "ꙮ": "0",
    "ઊ": "1",
    "સ": "2",
    "ત": "3",
    "ধ": "4",
    "ન": "5",
    "પ": "6",
    "ફ": "7",
    "બ": "8",
    "ભ": "9"
}[f];
        if (!g && (f !== '\x20')) {}
        return (g || f);
    }
    )['join']('');
    return e;
}


function updateCounter(c) {
    let e;
    let f = [];
    e = c['current_array'];
    for (var h = 0; h< e['length']; h++) {
        font = decryptFontNumber(e[h]),
        f['push'](font);
    }

    return f
}

第十八题 

请求         

M值前段生成   和   时间戳生成点

是个webpack      本人采取补环境    补的也不多

M值后段生成点

其实就是 base64编码  拼上了 生成的M值前段

第十九题

响应

响应为密文

下方是入口      3DES解密

iv生成代码

from datetime import datetime
def date_format(v, format_str="yyyyMMdd"):
    d = v
    format_mapping = {
        "yyyy": d.year,
        "MM": str(d.month).zfill(2),
        "dd": str(d.day).zfill(2),
        "h+": str(d.hour).zfill(2),
        "m+": str(d.minute).zfill(2),
        "s+": str(d.second).zfill(2),
        "q+": (d.month + 2) // 3,
        "S": d.microsecond // 1000
    }

    for pattern, value in format_mapping.items():
        if pattern in format_str:
            format_str = format_str.replace(pattern, str(value))

    return format_str


print(str(date_format(datetime.now())).encode())

  <------感谢观看------>

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐