题目描述:
这是一个pyc后缀的文件。
1.首先我们百度一下pyc文件,了解一下pyc文件是什么。
pyc 文件是 python 编译产生的中间文件。python 是一个先编译再解释型语言。python 解释器由一个编译器 和一个虚拟机构成,python.exe 先将源码编译成字节码(即将.py 文件换转成 .pyc 文件),.pyc 不是二进制 码,而是一种字节码文件,它是与平台无关的中间代码,不管是在 Windows 还是 Linux 平台都可以执行。 运行时再由虚拟机逐行把字节码翻译成目标代码。
pyc文件是由.py文件经过编译后生成的字节码文件,其加载速度相对于之前的.py文件有所提高,而且还可以实现源码隐藏,以及一定程度上的反编译。比如,Python3.3编译生成的.pyc文件,Python3.4就别想着去运行啦!→_→
2.在网上有一个在线反编译的网站https://tool.lu/pyc/将 pyc 文件反编译
import base64
def encode(message): 定义的函数
s = ''
for i in message:
x = ord(i) ^ 32
x = x + 16
s += chr(x)
return base64.b64encode(s) 返回经过 base64 加密的数据
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input() 输入
if encode(flag) == correct: 判断
print 'correct' else: print 'wrong'
3.通过阅读代码可知,flag 的每一个字符通过异或、加 16、base64 加密后得到密文 XlNkVmtUI1MgXWBZXCFeKY+AaXNt;
4.在spyder中编辑代码,将密文通过base64解密,减16,异或,得到flag。
5.运行后得出flag=nctf{d3c0mpil1n9_PyC}