flag = 'xxxxxxxxxxxxxxxxxxx'
s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
tmp = ''
for i in flag:
tmp += str(bin(ord(i)))[2:].zfill(8)
b1 = int(tmp,2)
s = ''
while b1//31 != 0:
s += s_box[b1%31]
b1 = b1//31
print(s)
# s = u#k4ggia61egegzjuqz12jhfspfkay
exp:
import libnum
s = "u#k4ggia61egegzjuqz12jhfspfkay"[::-1]#最后一个字符,逆回去就是第一个字符
s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
for i in range(31):#爆破最后一位数;
key = i
for j in range(len(s)):
key = 31*key +s_box.index(s[j])
print(libnum.n2s(key))#libnum库,将数值转换成字符;很方便;
flag 为:NSSCTF{WHAt_BASe31}