zoukankan      html  css  js  c++  java
  • 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}

    加油!未来可期!!!

  • 相关阅读:
    selenium-03-01截图函数
    selenium-03-02操作元素-等待
    [转]Linux下 tar.xz格式文件的解压方法
    selenium-05-问题2
    selenium-05-常见问题
    selenium-01-简介
    underscore
    前端底层-继承
    前端底层-面向对象3
    前端底层-面向对象2
  • 原文地址:https://www.cnblogs.com/rebirther/p/13050713.html
Copyright © 2011-2022 走看看