攻防世界python-trade

攻防世界python-trade

1、题目

攻防世界python-trade

2、下载文件后发现是一个pyc文件,对pyc文件进行反编译

注:pyc文件是python编译产生的中间文件。python是一个先编译再解释型语言。python解释器由一个编译器和一个虚拟机构成,python.exe先将源码编译成字节码(即将.py 文件换转成.pyc 文件),.pyc不是二进制码,而是一种字节码文件,它是与平台无关的中间代码,不管是在Windows 还是Linux 平台都可以执行,运行时再由虚拟机逐行把字节码翻译成目标代码。

方法一:在网上找了一个反编译网站

反编译pyc文件

方法二:利用python命令反编译

pip介绍

1、按装uncompyle库
pip install uncompyle
2、用命令反编译trade.pyc文件并将结果写入trade1.py文件中
C:\Users\Administrator\Desktop\trade>uncompyle6 trade.pyc > trade1.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

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'

3、分析代码内容,我们知道flag进行encode函数中的操作,得到‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt’。因此,我们只要反过来执行,就能够得到flag,写出代码

import base64

def decode(message):
    s = ''
    imessage = base64.b64decode(message)

    for i in imessage:
        x = ord(i) - 16
        x = x ^ 32
        s += chr(x)

    return s

correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'

flag = decode(correct)
print(flag)

4、运行代码,得到flag

nctf{d3c0mpil1n9_PyC}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值