reverse-for-the-holy-grail-350

这个题 其实算是比较简单的 加密过程也很简单明了

加密还有 check 函数 全部都在stringMod 这个函数里面

reverse-for-the-holy-grail-350_第1张图片

先检查  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 就直接出来了

你可能感兴趣的:(逆向之旅)