
下载附件是一个pyc文件,pyc是一种二进制文件,是由py文件经过编译后生成的文件,是一种byte code。py文件编译成pyc文件后,运行加载的
速度会有所提高;另一方面,把py文件编译为pyc文件,可以实现部分源码隐藏,保证了python做商业化软件时的安全性。
安装了半天uncompyle6,都还是各种报错,估计是python版本的问题,最后干脆找了个可以替代的,具体见:
https://cloud.tencent.com/developer/article/2163749
其实也有不少在线工具可以用的,但还是离线的方便些。只要把pyc文件和pycdc文件放到同一目录下然后执行,源码就会显示在终端中。

脚本如下:
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 = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
print 'correct'
else:
print 'wrong'
由代码可知,这一加密过程是将final先encode1然后encode2最后encode3。于是我们倒过来就行了。脚本如下:
import base64
def decode1(ans):
s = ''
for i in ans:
x = ord(i) - 25
x = x ^ 36
s += chr(x)
return s
def decode2(ans):
s = ''
for i in ans:
x = i ^ 36
x = x - 36
s += chr(x)
return s
def decode3(ans):
return base64.b32decode(ans)
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
print(decode1(decode2(decode3(final))))