码迷,mamicode.com
首页 > 其他好文 > 详细

Py逆向

时间:2018-12-01 22:05:57      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:密码   print   coding   ase   def   使用   反编译   encoding   pre   

这是南邮的一道逆向题

技术分享图片

解题步骤:

1.打开链接发现是百度网盘的分享链接,输入提取密码kd37后得到一个pyc文件

技术分享图片

普及一下python的知识:pyc文件就是 py程序编译后得到的字节码文件 (py->pyc),所以首先需要将pyc文件还原为python源码文件,这里使用为一个在线反编译工具,反编译后的代码:

#!/usr/bin/env python
# encoding: utf-8
import base64

def encode(message):                                   #def定义了一个encode模块的变量
s = ‘‘                                                  #为了存入最后的目标串
for i in message:                             #ord()函数主要用来返回对应字符的ascii码
x = ord(i) ^ 32                       #将输入的字符串中每个字符ascii码都与32进行异或运算
x = x + 16                        #每个都加上16
s += chr(x)                       #再将它们一个一个转为字符

return base64.b64encode(s)               #最后再将新串进行一次base64加密

correct = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘      #输入的串
flag = ‘‘                        #为了存入最后的目标串
print ‘Input flag:‘                     #屏幕提示信息 请输入flag
flag = raw_input()                    #获取输入
if encode(flag) == correct:                #如果加密后的flag与correct相同 输出correct

print ‘correct‘
else:                          #否则输出wrong
print ‘wrong‘

 

先将字符串"XlNkVmtUI1MgXWBZXCFeKY+AaXNt"解一次base64,再将每个字符ascii码都减下16,接着与32异或即可得到flag

在pycharm里写一个脚本:

import base64
c = ‘XlNkVmtUI1MgXWBZXCFeKY+AaXNt‘

m = c.decode("base64")
s = ‘‘
for i in m:

x = ord(i) - 16
x = x ^ 32
s=s+chr(x)

print s


执行后

技术分享图片

 

Py逆向

标签:密码   print   coding   ase   def   使用   反编译   encoding   pre   

原文地址:https://www.cnblogs.com/WhiteHatKevil/p/10050706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!