前言
本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
网址
aHR0cHM6Ly93d3cucWl6aGlkYW8uY29tL2NoZWNrP3NlYXJjaEtleT0lRTUlQTQlQTclRTYlOTUlQjAlRTYlOEQlQUUmdGFnTnVtPTEmc2NQYWdlVGl0bGU9UEMlRTclQUIlOTklRTQlQjglQkIlRTclQUIlOTkmc2VhcmNoTW9kZVR5cGU9OCZmcm9tUm91dGVQYWdlPWNoZWNrJmJ1c2luZXNzU291cmNlRHpsUXVlcnk9
一、详情加密
获取参数data1位置的方法:
1、通过全局搜索decrypt找到加密位置
2、服务器发包解包的数据传输 一般采用 json格式,可以通过Hook json.parse(data1) 密文
var my_parse = JSON.parse;
JSON.parse = function (params) {
debugger;
console.log("json_parse params:",params);
return my_parse(params);
};
二、加密位置
下断点发现是AES加密:
通过请求enterpriseListV2链接发现每次都会返回一个hasUse参数int类型,每次请求都会变化。
在源码中可以发现AES的key是固定的,通过字典去取值
通过请求详情获取两参数
hasUse_num = response.json().get(‘hasUse’)
payload = response.json().get(‘data1’)
运用python实现AES解密
def decrypt(info: str, hasUse:int) -> list:
key = f'{hasUse}'.encode(encoding='utf-8')
cipher = AES.new(key, mode=AES.MODE_ECB)
json_str = str(cipher.decrypt(base64.b64decode(info)), encoding='utf-8')
data = re.sub('[\x00-\x09|\x0b-\x0c|\x0e-\x1f]', '', json_str)
return json.loads(data)
三、cookie加密分析
wz_uuid 应该是游客登录ID,没啥用,主要是x-web-ip这个参数。
经调试查看,被检测的请求ID应该是由浏览器环境 MD5后生成。
访问频繁和刷新频繁会被拦截,出现人机验证,需验证后重新
获取替换cookie中的x-web-ip方可访问。