攻防世界_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 @   Athena-ydy  阅读(63)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示