是一个pyc文件,使用pyc在线解密进行解密,得到
print ('Welcome to Re World!')
print ('Your input1 is your flag~')
l = len(input1)
for i in range(l):
num = ((input1[i] + i) % 128 + 128) % 128
code += num
for i in range(l - 1): #i从0取到l-1-1
code[i] = code[i] ^ code[i + 1]
print(code)
code = ['\x1f','\x12','\x1d','(','0', '4','\x01','\x06','\x14','4',',','\x1b', 'U',
'?','o', '6','*',':','\x01','D',';','%','\x13']
code[i] = code[i] ^ code[i + 1] i从0取到l-1-1,code[l-1]的值没有变。所以要逆向的话,应该让i从l-2到0,code[i] = code[i] ^ code[i + 1] (因为abb=a),这样,就得到执行第二个循环前的input1。
关于取模,由于(a%c+b%c)%c=(a+b)%c,所以num 等价于 (input1[i] + i) % 128
解密脚本:
code = ['\x1f','\x12','\x1d','(','0','4','\x01','\x06','\x14','4',
',','\x1b','U','?','o','6','*',':','\x01','D',';','%','\x13']
for i in range(len(code)-2,-1,-1):
code[i] = chr(ord(code[i])^ord(code[i+1]))
for i in range(len(code)):
print(chr((ord(code[i])-i)%128),end="")#不是很懂为何是减