下载附件得到是一个pyc文件,对pyc代码反编译,可以得到其python代码
# !/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import base64
def encode1(ans):
s = ''
for i in ans:
x = ord(i) ^ 36
x = x + 25
s += chr(x)
return s
def encode2(ans):
s = ''
for i in ans:
x = ord(i) + 36
x = x ^ 36
s += chr(x)
return s
def encode3(ans):
return base64.b32encode(ans)
flag = ' '
print('Please Input your flag:')
flag = input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
print('correct')
else:
print('wrong')
对于python源码,我们发现其使用了base32编码,然后又进行了异或的编码操作,首先对于逆向final,就可以得到答案。在求解过程,base32的解码方式,出现了很多问题,一直显示无法解码,通过wp活动base32的编码要求,就能得到答案。
import base64
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
st=base64.b32decode(final).decode('ISO-8859-1')
s=''
for i in st:
temp=ord(i)
temp=temp^36
temp-=36
temp-=25
temp=temp^36
s+=chr(temp)
print(s)