这个题 其实算是比较简单的 加密过程也很简单明了
加密还有 check 函数 全部都在stringMod 这个函数里面
先检查 3的倍数的下标是不是等于firstcha里面的值 然后让 我们输入的值异或 (其实异或的值固定的)
然后下面就是又一次的check 其实慢慢分析也是比较简单明了的 然后我们用脚本算出答案
#!/usr/bin/python3
#coding:utf-8
firstchar = [0x41, 0x69, 0x6e, 0x45, 0x6f, 0x61]
thirdchar = [0x2ef, 0x2c4, 0x2dc, 0x2c7, 0x2de, 0x2fc]
masterarray = [0x1d7, 0xc, 0x244, 0x25e, 0x93, 0x6c]
xor_number=0x29a
xor_array=[]
for i in range(18):
xor_array.append(xor_number)
xor_number+=xor_number%5
flag="tuctf{"
for i in range(6):
one=firstchar[i]
three=thirdchar[i] ^ xor_array[(i*3) + 2]
for j in range(256):
if masterarray[i]==(j^xor_array[i*3+1])*(one^xor_array[i*3])%thirdchar[i]:
flag+=chr(one)+chr(j)+chr(three)
break
flag+="}"
print(flag)
flag 就直接出来了