实验吧逆向工程-有一个程序加密得到如下密文

这个题目好文艺啊~
最近处于各种杂事中,希望一切都有好结果~
题目链接:http://ctf5.shiyanbar.com/DUTCTF/reverse300.pyc
看上去是个python,有点意思,开始解题吧~
1、第一次反编译python文件,不知道用啥,先拖进Exeinfo PE中看下吧,emmmm好像不支持哈,尴尬了。


2、经过搜索,pyc文件要使用uncompyle2。
github下载地址:https://github.com/wibiti/uncompyle2
下载后使用管理员身份打开cmd(windows下),然后输入:

python setup.py install

同样管理员身份打开cmd,进入到uncompyle2的安装路径下使用(可以设置环境变量直接使用),先复制reverse300进去。

python uncompyle2 -o result.py reverse300.pyc

3、打开result.py看源码:



4、进行分析:
(1)main函数部分:

if __name__ == '__main__':
    if len(sys.argv) < 3:
        exit(1)
    ex = 20
    for i in range(1, len(sys.argv), 2):
        a = sys.argv[i]
        b = sys.argv[i + 1]
        if a == '-t':
            ex = int(b)
        elif a == '-e':
            encoded = authcode(b, 'ENCODE', expiry=ex)
            print encoded
        elif a == '-d':
            decoded = authcode(b, 'DECODE', expiry=ex)
            print decoded

其中:sys.argv 是获取运行python文件的时候命令行参数,且以list形式存储参数,就是在cmd执行的时候的参数,对于sys.argv 。
若执行:

python result.py

则返回:[' result.py'],len为1
若后面还有参数,则加到列表中。
(2)看函数逻辑肯定是进行解密啦,也就是输入:

python result.py -d 0be6770IigHXZpz9hQYR1fpl15R0z9MUalmYEPhJeEN/sRklL6wQw5yQ7SAyT6tKGJNY0AxnyzS/L7zWQII=

(3)但是如果这样的话会没有结果输出,看一下decode是怎么写的:

    if operation == 'DECODE':
        if not result[0:10].isdigit() or int(result[0:10]) == 0 or int(result[0:10]) - int(time()) > 0:
            if result[10:26] == md5(result[26:].encode('utf-8') + keyb).hexdigest()[0:16]:
                return result[26:]
            else:
                return ''
        else:
            return ''

result是经过一系列操作得来的,但是这个判断条件和time进行判断也太玄学了吧。
直接删掉,变成:

    if operation == 'DECODE':
        if result[10:26] == md5(result[26:].encode('utf-8') + keyb).hexdigest()[0:16]:
            return result[26:]

然后执行就可以了:


小结:今天学到了python反编译,加油!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 模块和包 一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是...
    go以恒阅读 2,295评论 0 4
  • Python史上最全开发总结(转自静熙老师哈哈哈) 两本不错的书: 《Python参考手册》:对Python各个标...
    春风在抱阅读 773评论 1 4
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,819评论 0 10
  • 家长陪伴孩子练琴(或者做功课)本来是个很好的亲子时间。如果做得好,孩子和家长都在这门学科上成长。但是,家长,一般都...
    RCM钢琴考官阅读 349评论 0 0
  • 从前,有一个屌丝男,他们家祖传4代都是画画的,而他在画画方面更是很牛,是一个天才。具体牛到什么程度呢,江湖朋友赠送...
    大口怪阅读 419评论 0 0