• python-trade


    python-trade

    难度系数: ⭐⭐⭐
    题目来源: NJUPT CTF 2017
    题目描述:菜鸡和菜猫进行了一场Py交易
    题目场景: 暂无

    文件是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)
    
    correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
    flag = ''
    print 'Input flag:'
    flag = raw_input()
    if encode(flag) == correct:
        print 'correct'
    else:
        print 'wrong'

    然后分析,大致扫一眼,就是输入的一个值(flag)等于correct就会输出correct,基本就清楚了,correct就是flag的值,应该这样说,flag经过加密最后成了correct。

    着手解密就好了

     ord(i)返回的是i的ASCLL码,然后异或32,再移位16,再返回对应的ASCLL码的值

    逻辑清楚了,就可以写啦

    import base64
    
    correct = "XlNkVmtUI1MgXWBZXCFeKY+AaXNt"
    temp = base64.b64decode(correct).decode("ISO-8859-1") //找了一个帖子,说这里只能用这个编码,我试了一下,还真是
    flag=''
    
    for i in temp:
        s = chr((ord(i)-16)^32)
        flag += s
    print(flag)

    结果出来了是

    nctf{d3c0mpil1n9_PyC}

    加油!未来可期!!!

  • 相关阅读:
    团队冲刺2.7
    单词接龙
    团队冲刺2.6
    梦断代码阅读笔记02
    团队冲刺2.5
    吾日三省吾身(6)
    吾日三省吾身(5)
    周计划01(20200921-20200927)
    吾日三省吾身(4)
    吾日三省吾身(3)
  • 原文地址:https://www.cnblogs.com/rebirther/p/13050713.html
Copyright © 2020-2023  润新知