美文网首页CTF练习解析
实验吧逆向工程-有一个程序加密得到如下密文

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

作者: 追求科技的足球 | 来源:发表于2019-05-11 21:09 被阅读1次

这个题目好文艺啊~
最近处于各种杂事中,希望一切都有好结果~
题目链接: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反编译,加油!

相关文章

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

    这个题目好文艺啊~最近处于各种杂事中,希望一切都有好结果~题目链接:http://ctf5.shiyanbar.c...

  • 加密

    对称加密: 原理:使用秘钥和加密算法对数据进行转换,得到的无意义数据即为密文;使用密钥和解密算法对密文进行逆向转换...

  • SpringBoot使用Jasypt加密

    pom.xml加入jasypt依赖 建立一个Test class,编写加密方法 运行加密,得到密文 将密文和加密盐...

  • 对称加密

    一. 对称加密算法介绍 对称加密方式: 明文通过密钥加密得到密文。 密文通过密钥解密得到明文。 常见的对称加密算法...

  • 密码学:对称加密

    一、算法介绍 对称加密:明文通过密钥加密得到密文,密文通过密钥解密得到明文。 1.1常见算法 DES:数据加密标准...

  • iOS逆向实战--012:对称加密

    对称加密方式:明文通过密钥加密得到密文,密文通过密钥解密得到明文。 定义 需要对加密和解密使用相同密钥的加密算法。...

  • 代换密码的密码分析—详细分析过程

    代换密码的密码分析 使用单表代换密码,对于给出的密文进行分析并得到结果,了解加密解密过程 密文信息如下:AHNFC...

  • 记录一次ISCC逆向

    记录一次ISCC逆向 题目:我方截获了敌方的一款加密程序和一段密文(密文为:F2F5D39F18D762B7),尝...

  • 虚拟机保护逆向入门

    前言 软件防逆向工程与逆向工程相伴发展,早期的有花指令,反调试技术,代码混淆与加密,加压缩壳或者加密壳等等保护手段...

  • 实验吧逆向工程-逆向观察

    日更任务到第29天,我以为更新够了100字,然而没有,于是 失败了,从头来过。今天的题目的介绍: a simple...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/vbdfaqtx.html