第十五题是 备周则意怠 常见则不疑
还是数值求和
控制台抓包,看参数 还是加密的 m 参数
惯例去查找m加密的方式
打开请求调用堆栈 ,点击request后面的链接 进行链接跳转
跳转后:
m就是window.m,控制台 打印一下?
就是我们需要的东西,然后就去浅分析一下加密方式
ctrl+f 搜索一下 window.m
如下:
return 的正是需要的数据,
t1 和 t2 已经在上面给出了
只需要转换为相对应的python语言即可:
t = time.time()
t1 = int(t/2)
t2 = int(t/2 - math.floor(random.random()*50+1))
就是一个时间戳的简单加密
t1和t2组成了加密的后半段 用了||隔开
第一部分window.q以他两为参数 我们继续找
啊 就在上面,window.q = instance.exports.encode;
这是啥意思呢? 我也不太清楚 百度一下,最后说是wasm加密,,具体自己百度吧,不常见 但是要懂。。
用对应得wasm文件来执行即可
对应的wasm文件在控制台就有返回 直接下载即可。。。
下面是代码咯
import requests
import pywasm
import time
import math
import random
def getM():
t = time.time()
t1 = int(t/2)
t2 = int(t/2 - math.floor(random.random()*50+1))
vm = pywasm.load("./main.wasm")
r = vm.exec("encode", [t1, t2])
return f"{r}|{t1}|{t2}"
if __name__ == '__main__':
number = []
headers = {
'user-agent':'yuanrenxue.project',
'cookie': '???'
}
for page in range(1,6):
m = getM()
url = "https://match.yuanrenxue.com/api/match/15?m="+ str(m) +"&page="+ str(page)
response = requests.get(url, headers=headers).json()
for value in response["data"]:
number.append(value['value'])
print(sum(number))