今日网站
aHR0cHM6Ly90aXRhbm1hdHJpeC5jb20vdGd4eA==
这个例子来自交流 4 群
这个参数直接通过下面的请求可以找到
aHR0cHM6Ly9tYWNhZmUudGl0YW5tYXRyaXguY29tL21hY2FmZS9nZXRTdGF0ZQ==
接着就是搜索大法,之前有讲过定位加密参数的几种方法,
有读者在留言区问我是哪一篇,我一时间也没有找到
这里直接补一下
1、参数搜索 - 通过搜索加密值的参数名快速定位,类似搜索下面的例子
sign:
sign :
sign=
sign =
# 从开发角度思考为什么这样搜索
2、xhr 断点 - 这个方法有一定的局限性,且需要有一定的堆栈分析能力
F12 - 点击【Sources】- 右边工具栏【如下图的位置】 - 新建一个断点,在输入框输入要匹配的 url
这个原理就是在xhr
发包的时候匹配 url 是否包含你设置的字符串,如果包含就 debugger
所以在这里就不要填上包含可变的参数的 url,填写 url 主体部分即可
ps:每次都变的参数,当然是匹配不上了
3、js 调用栈分析大法 - 基本都能用上,通用性强
在控制台找到你需要分析的请求 - 选中他 - 找到【Initiator】 - 找一个打上断点 - 再次刷新
继续上面的分析,一个个试我列出来的几个选项
像上面这样就出来了,之后你再打上断点然后刷新,就可以验证下是不是通过这个逻辑生成的
像这样
断上了像这样
然后分析ke.a.hash
就可以了
这个时候断上了不要慌,也不要记着去分析hash
搞了什么操作
先看参数
像我这样复制出来
appid=201010&client={"system":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36","version":"1.0.0"}¶m={"serviceKey":"a4966e02741c4cc091fe1834d00f149c"}&rank=7294033887935694×tamp=2021/12/03 20:02:08&token=&key=72933362EAA649B893699E6191BC898F
然后看下经过这个hash
发生了什么
再复制出来
fd38dd0d6427bb8cc13e62568af6dd27
这个步骤多做几步,确认以下几点
1、参数是不是不变的?
2、参数长度是不是不变的?
3、参数在其他请求里是否有返回或者携带?
确认完,再看看特征
1、有没有和一些常见的算法结果类似的?
2、是不是 16、32 位这样显著的固定长度?
3、是不是和 base64 长的很像? - 通常结果以大小写字母、0-9、+/ 组成,有些还会以 = 结尾
完成以上几点花费不了几分钟,慢慢的可以节省你大把的时间,有这些时间可以用来认真总结或者看些技术文章了(比如咸鱼我的)
确认完是不是会发现符合一些猜测的特征?
那就拿到一些在线加密的测试网站上试试
16、32 位 hash 测试我经常用的是下面这个网站
https://1024tools.com/hash
你们有好用的也可以分享一波
把我们刚刚复制的明文粘贴进去
你看这样不就出来了?
再贴一下群里的J佬
写的代码
# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# Project: js_nx
# Name: sss
# Description:
# Author: 阿J
# Date: 2021/12/2
#-------------------------------------------------------------------------------
import requests,json,hashlib
import time
def md5(xx):
return hashlib.md5(xx.encode()).hexdigest()
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
'Accept': 'application/json, text/plain, */*',
'apiVersion': '1.0',
'Content-Type': 'application/json;charset=UTF-8',
'sec-ch-ua-mobile': '?0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
'Origin': 'https://titanmatrix.com',
'Sec-Fetch-Site': 'same-site',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://titanmatrix.com/',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
data = {
"appid": "201010",
"client": {
"system": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"version": "1.0.0"
},
"param": {
"serviceId": "a4966e02741c4cc091fe1834d00f149c",
"sid": 7017,
"pkey": "",
"withParam": True,
"noWaterMark": True
},
"timestamp":time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()),
"rank": "9018048684590414",
"sign": ""
}
enc_data = "appid=" + data['appid'] + "&client=" + json.dumps(data['client'],separators=(',',':')) + "¶m=" + json.dumps(data['param'],separators=(',',':')) \
+ "&rank=" + data['rank'] + "×tamp=" + data['timestamp'] + "&token=" + ""+ "&key=" + "72933362EAA649B893699E6191BC898F"
print(enc_data)
sign = md5(enc_data)
print(sign)
data['sign'] = sign
response = requests.post('https://macafe.titanmatrix.com/macafe/getState', headers=headers, data=json.dumps(data,separators=(',',':')))
print(response.text)
好了,以上就是今天的全部内容了。
我是没有更新就在摸鱼的咸鱼
收到请回复~
我们下次再见。