今日受害者
aHR0cDovL3d3dy5kZGt5LmNvbS9jb21tb2RpdHkuaHRtbD9kZGt5Y2FjaGU9YTdiMTllODc5ZDJmMmYyNzlkMzU2ZjVhZmE2ZDVjZmY=
分析请求
请求一波,看看有哪些加密的参数。如图
似乎 sign 是经过加密的,其他参数好像没什么问题,那我们就来找找 sign 在哪。
鼠标悬停,选中点击红框中的文件
直接搜索 sign ,出现四个结果,在这里就能看到 sign 加密了。
接着,分析逻辑,这里的 sign 值是 y ,而 y 又是 MD5(f) 赋值的,而 f 又是 t.get(“method”) + p + r 的结果,p 的生成看这段代码,,r 呢 是上面写死的,鼠标划上一点可以看到 var r = “6C57AB91A1308E26B797F4CD382AC79D”; 经过一轮分析,就可以得到下面的逻辑:
sign = md5(t.get("method") + p + r)
接下来只需要把我们不知道的值通过断点的方式调式出来。
像这样把不知道的值打上断点
然后重新请求,进入到断点,可以通过 console 中打印值来理解生成逻辑
知道需要的变量值后,我们就可以用Python复写加密的逻辑。
代码如下:
import time
from hashlib import md5
def md5_value(s):
a = md5(s.encode()).hexdigest()
return a
def get_sign():
time_stamp = time.time()
local_time = time.localtime(time_stamp)
str_time = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
l = ["method", "orderTypeId", "orgcode", "pageNo", "pageSize", "plat", "platform", "shopId", "t", "v",
"versionName"]
t = {
'method': 'ddsy.product.query.orgcode.product.list.b2c',
'orderTypeId': '0',
'orgcode': '010502,010503,010504,010505,010506,010507',
'pageNo': '1',
'pageSize': '100',
'plat': 'H5',
'platform': 'H5',
'shopId': '-1',
# 't': '2019-9-23 22:4:16',
't': str_time,
'v': '1.0',
'versionName': '3.2.0'
}
p = ''
for i in range(0, len(l)):
m = l[i]
p += m + t.get(m)
f = t['method'] + p + '6C57AB91A1308E26B797F4CD382AC79D'
sign = md5_value(f).upper()
print(sign)
return sign
到这里把sign值带入URL里请求就可以了。
欢迎点赞,留言,转发,转载,感谢大家的支持