来到主函数,分析后得知,会检测第三次的输入。
函数是对输入检测,函数内容觉得没用,没有分析。
再往下看,
v4是对输入的校验,关键函数就是stringMod。
进入函数分析。
输入每三个一组,每组第一个字符是对应的firstchar的值。
然后对输入的每个字符进行异或。
然后检测每组的第二个和第三个字符。
解密思路:
我的思路是,先拿到经过异或后的结果,此时每组的第一个和第三个字符是已知的,然后爆破得到第二个字符串异或后的结果。最后在经过一轮异或还原回去。
脚本写的着实辣鸡。。。。
firstchar = [65, 105, 110, 69, 111, 97]
thirdchar = [751, 708, 732, 711, 734, 764]
masterArray = [471, 12, 580, 606, 147, 108]
v1 = [0] * 18
j = 0
v7 = 666
for i in range(0, 18, 3):
v1[i] = firstchar[j]
v1[i] = v7 ^ v1[i]
v7 += v7 % 5
v1[i+2] = thirdchar[j]
for x in range(128):
if (x ^ v7) * v1[i] % v1[i+2] == masterArray[j]:
v1[i+1] = x ^ v7
break
v7 += v7 % 5
v7 += v7 % 5
j += 1
v7 = 666
for i in range(18):
v1[i] = v1[i] ^ v7
v7 += v7 % 5
flag = ''.join(chr(i) for i in v1)
print(flag)
接下来一堆课设实验考试,要学一学Android安全了,为XMAN做准备吧。