Du kannst nicht mehr als 25 Themen auswählen
Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
51 Zeilen
1.7 KiB
51 Zeilen
1.7 KiB
import base64
|
|
import hashlib
|
|
|
|
|
|
def getSign(params):
|
|
# sv传120
|
|
key = [55, 146, 68, 104, 165, 61, 204, 127, 187, 15, 217, 136, 238, 154, 233, 90]
|
|
arg0 = [56, 48, 51, 48, 54, 102, 52, 51, 55, 48, 98, 51, 57, 102, 100, 53, 54, 51, 48, 97, 100, 48, 53, 50, 57, 102,
|
|
55, 55, 97, 100, 98, 54]
|
|
|
|
sign = "functionId=" + params.get("functionId") + "&body=" + params.get("body") + "&uuid=" + params.get("uuid") \
|
|
+ "&client=" + params.get("client") + "&clientVersion=" + params.get("clientVersion") + "&st=" + str(
|
|
params.get("st")) \
|
|
+ "&sv=" + str(params.get("sv"))
|
|
arg2 = bytearray(sign, 'utf-8')
|
|
# print([x for x in arg2])
|
|
ss = [None] * len(arg2)
|
|
for i in range(len(arg2)):
|
|
R0 = arg2[i]
|
|
R2 = key[i & 15]
|
|
R4 = arg0[i & 7]
|
|
R0 = ((R2 ^ R0) ^ R4) + R2
|
|
R2 = (R2 ^ R0)
|
|
R1 = arg0[i & 7]
|
|
R2 = (R2 ^ R1)
|
|
# print(R2)
|
|
ss[i] = R2
|
|
m = hashlib.md5()
|
|
m.update(base64.b64encode(bytes(i % 256 for i in ss)))
|
|
return str(params.get("st")), m.hexdigest(), str(params.get("sv"))
|
|
# return "st=" + str(params.get("st")) + "&sign=" + m.hexdigest() + "&sv=" + str(params.get("sv"))
|
|
|
|
|
|
def generateSign():
|
|
params = {
|
|
"st": 1648992407201, # 毫秒级时间戳
|
|
"sv": "120",
|
|
"functionId": 'serverConfig',
|
|
"uuid": '947934e94e0cb9e4',
|
|
"client": "android",
|
|
"clientVersion": '10.4.6',
|
|
# "body": '{"to":"https://plogin.m.jd.com/jd-mlogin/static/html/appjmp_blank.html"}'
|
|
"body": '{}'
|
|
}
|
|
# return getSign(params)
|
|
print(getSign(params))
|
|
# print("正确结果:st=1648992407201&sign=474c50af52257126ae65700b825bdf4c&sv=120")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
generateSign()
|
|
|