攻防世界_easychallenge_pyc文件反编译

下载附件是一个pyc文件,pyc是一种二进制文件,是由py文件经过编译后生成的文件,是一种byte code。py文件编译成pyc文件后,运行加载的

 

速度会有所提高;另一方面,把py文件编译为pyc文件,可以实现部分源码隐藏,保证了python做商业化软件时的安全性。

 

安装了半天uncompyle6,都还是各种报错,估计是python版本的问题,最后干脆找了个可以替代的,具体见:

 

https://cloud.tencent.com/developer/article/2163749

 

其实也有不少在线工具可以用的,但还是离线的方便些。只要把pyc文件和pycdc文件放到同一目录下然后执行,源码就会显示在终端中。

 

 

脚本如下:

 

import base64

def encode1(ans):
    s = ''
    for i in ans:
        x = ord(i) ^ 36
        x = x + 25
        s += chr(x)

    return s


def encode2(ans):
    s = ''
    for i in ans:
        x = ord(i) + 36
        x = x ^ 36
        s += chr(x)

    return s


def encode3(ans):
    return base64.b32encode(ans)

flag = ' '
print 'Please Input your flag:'
flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
    print 'correct'
else:
    print 'wrong'

由代码可知,这一加密过程是将final先encode1然后encode2最后encode3。于是我们倒过来就行了。脚本如下:

 

import base64

def decode1(ans):
    s = ''
    for i in ans:
        x = ord(i) - 25
        x = x ^ 36
        s += chr(x)
    return s

def decode2(ans):
    s = ''
    for i in ans:
        x = i ^ 36
        x = x - 36
        s += chr(x)
    return s

def decode3(ans):
    return base64.b32decode(ans)

final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
print(decode1(decode2(decode3(final))))

 

posted @ 2023-04-27 21:07  Athena-ydy  阅读(35)  评论(0编辑  收藏  举报