【愚公系列】2021年12月 攻防世界-简单题-REVERSE-003(python-trade)

举报
愚公搬代码 发表于 2021/12/26 13:11:58 2021/12/26
1.4k+ 0 0
【摘要】 一、python-trade题目链接:https://adworld.xctf.org.cn/task/task_list?type=reverse&number=4&grade=0&page=1 二、使用步骤 1.反编译在命令窗口执行uncompyle6 test.pyc > test.py得到py文件import base64def encode(message): s = ''...

一、python-trade

题目链接:https://adworld.xctf.org.cn/task/task_list?type=reverse&number=4&grade=0&page=1

二、使用步骤

1.反编译

在命令窗口执行

uncompyle6 test.pyc > test.py

得到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'
# okay decompiling test.pyc

2.解密

通过查看这段Python2代码,我们知道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)

得到flag:nctf{d3c0mpil1n9_PyC}


总结

  • uncompyle6
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。