- 知识点
1,对 .pyc 文件的了解;
2,反编译 .pyc文件;
0x01
简介 .pyc文件:是python文件在 import 条件下,通过python 解释器解释(或者编译)后生成的字节码文件,可以理解为 python 源程序的一种存在方式,具有隐藏源码的安全性;
0x02
解题:下载题目的 .pyc 文件,首先安装一波 python 的 pyc文件反编译 模块:
pip install uncompyle
#命令行
安装好模块后直接 运用模块进行反编译:
uncompyle6 6.pyc > 6.py
得到 python 源码:
import base64
def encode(message):
s = ''
for i in message:
x = ord(i) ^ 32
x = x + 16
s += chr(x)
return base64.b64encode(s)
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
print 'correct'
else:
print 'wrong'
代码分析:
对 输入的 flag 与 32 进行异或运算,再加 16 ,再 base64 加密,最后将结果保存到 s ,与 correct 字符串做比较;
因此,correct 相当于 encode() 函数加密后的结果,所以只要将 encode() 反转,即可得到flag;
import base64
message = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
s = base64.b64decode(message)
flag = ''
for i in s:
flag += chr((i-16)^32)
print(flag)