[SWPUCTF 2021 新生赛]fakebase
查壳:
双击吧:
简单的逻辑,不要怕那个循环,也不要去纠结那个循环。
首先看我们要找的是啥:b1嘛,也就是将flag每个字符转化成十进制后,再转成二进制,一个字符的二进制接后一个字符的二进制链接而成的字符串,再将这串字符串转为十进制。也就是b1
由除法原则我们知道,要想还原b1,首先得倒着来,其次能将这么大的一个数据转化成字符来脚本咯:(这是我参考某位大佬的脚本,不记得是谁了QWQ)
import libnum
s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
s = 'u#k4ggia61egegzjuqz12jhfspfkay'
for k in range(5): # ascii 最大为128 % 31 == 4
b1 = k
for i in range(len(s)-1, -1, -1): # 倒序查找
b1 = b1 * 31 + s_box.index(s[i])
print(libnum.n2s(int(b1))) # 十进制转化成字符,libnum.s2n --> 字符转化成十进制