攻防世界 reverse python-trade

这题涉及到pyc文件的反编译,也是reverse题的常见题型。
我们先直接打开pyc文件
在这里插入图片描述
显然…不能直接从pyc文件中得到我们需要的信息。
需要把pyc文件反编译成py文件,才能读懂逻辑进一步逆向。
反编译有以下几种方式:

  • 网上找pyc在线反编译
    pyc在线反编译
    效果如下
    攻防世界 reverse python-trade_第1张图片
    我着重写了一下第二种
  • 使用uncompyle2进行反编译

uncompyle2在windows系统上的安装和使用

cmd输入:

python C:\Python27\Scripts\uncompyle2 trade.pyc>trade.py

trade.py

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'

看懂逻辑即可写出解密脚本:

import base64
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
s=base64.b64decode(correct)
flag=''
for i in s:
    i-=16
    i^=32
    flag +=chr(i)

print(flag)

nctf{d3c0mpil1n9_PyC}

你可能感兴趣的:(#,reverse,反编译,python)