本文最后编辑于 前,其中的内容可能需要更新。
直接反编译看mainactivity。监听,把输入的字符串传给encode.check()检查

跟到encode里
input是接收str转成的数组
b是已经有的数组
temp是空的16位的数组
在经过了运算之后temp[i]=((input[i]+b[i])%61)*2-i
如果temp和str还相等,就返回true,输出correct。

写个脚本
这个脚本是直接跑的,把每一位依次比较,正确就转成字母输出
这里的80可以往大里改,算是爆破出来的
参见
1 2 3 4 5
| str1=[23, 22, 26, 26, 25, 25, 25, 26, 27, 28, 30, 30, 29, 30, 0x20, 0x20] for i in range(16): for j in range(80): if((j+str1[i])%61)*2-i==j: print(chr(j),end="")
|

另一种脚本的写法
也是爆破的,生成了所以的大小写和数字,一位一位爆破。
参见
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import string b = [ 0x17, 0x16,0x1a,0x1a,0x19,0x19,0x19,0x1a,0x1b,0x1c,0x1e,0x1e,0x1d,0x1e,0x20,0x20] i=0 v6=16 tmp="" strall=string.ascii_letters+string.digits while i<v6: for a in strall: tmp1 = ord(a) tmp2 = ((ord(a)+b[i])%(0x3d))*2-i if tmp1==tmp2: tmp+=a i+=1 break else: continue print(tmp)
|
