import time,random
from loguru import logger
import requests
TOKEN_SERVER_TIME = 1753247964.406;
# E里的很多值写死了,能用就行
E=[]
E.append(3264648686)
E.append(int(TOKEN_SERVER_TIME))
# E[2]=int(time.time())
# E[3]=195367209 # 这个值是对 ua进行了hash之后偏移计算出来的,这里固定写死,function ln(n) 搜索续写
# E[4]=7
# E[5]=10
# E[6]=5
# E[7]=91
# E[8]=1
# E[9]=19
# E[10]=0
# E[11]=699
# E[12]=422
# E[13]=3748
# E[14]=0
# E[15]=0
# E[16]=7
# E[17]=3
E.append(int(time.time())) # E[2]
E.append(195367209) # E[3]
E.append(7) # E[4]
E.append(10) # E[5]
E.append(5) # E[6]
E.append(230) # E[7]
E.append(3) # E[8]
E.append(19) # E[9]
E.append(0) # E[10]
E.append(800) # E[11]
E.append(425) # E[12]
E.append(3748) # E[13]
E.append(0) # E[14]
E.append(0) # E[15]
E.append(1) # E[16]
E.append(3)
def tobuff(e):
a='37'
o='7'
i=[4, 4, 4, 4, 1, 1, 1, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 1]
# u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
c=-1
u=[]
# s=0
# f=len(i)
# while s<f:
# v=e[s]
# l=i[s]
# c+=l
# p=c
# while l!=0:
# l -= 1
# p-=1
# v>>=8
# u[p] = v & int(a + o, 8)
#
# s+=1
mask = int(a + o, 8) # JavaScript: parseInt('377', 8) == 255
for s in range(len(i)):
v = e[s]
l = i[s]
c += l
p = c
while True:
# 相当于 u[p] = v & 255
if len(u) <= p:
u.extend([0] * (p - len(u) + 1)) # 保证有足够长度
u[p] = v & mask
l -= 1
if l == 0:
break
p -= 1
v >>= 8
return u
def d(n):
a=0
o=0
i=43
mask = int('ff', 16)
while o<i:
a=(a<<5)-a+n[o]
o+=1
logger.debug(a)
return a & mask
def f(n,t,a,i,u):
c=len(n)
mask = int('ff', 16)
mask1 = int('83', 16)
while t<c:
a.extend([n[t]^u & mask])
u = ~(u * mask1)
i += 1
t += 1
logger.debug(a)
return a
v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
def g(a):
o=0
u=45
c=[]
mask = int('20', 8)
while o<u:
s=(a[o]<<mask)|(a[o+1]<<8) | a[o+2]
c.append(v[s>>int('22',8)])
c.append(v[(s>>int('14',8))&int('3f',16)])
c.append(v[(s>>6)&int('3f',16)])
c.append(v[s&int('3f',16)])
o+=3
logger.debug(c)
logger.debug(len(c))
return "".join(c)
def encode(r):
e=d(r)
# e=76
logger.debug(e)
a=[3,e]
logger.debug(r)
a=f(r,0,a,2,e)
return g(a)
logger.debug(E)
t=tobuff(E)
logger.debug(t)
logger.debug(encode(t))
这个是花了一下午时间给他手动还原的python版本,真累啊