南邮CTF逆向题第三道Py交易解题思路

 

首先看题

南邮CTF逆向题第三道Py交易解题思路_第1张图片

南邮CTF逆向题第三道Py交易解题思路_第2张图片下载后显示为Py.pyc 尝试notepad++打开显示乱码南邮CTF逆向题第三道Py交易解题思路_第3张图片

 

 

 

所以直接百度

南邮CTF逆向题第三道Py交易解题思路_第4张图片

选择https://tool.lu/pyc/ 进行解密

 

南邮CTF逆向题第三道Py交易解题思路_第5张图片

 

#!/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

 

解密代码如下:

import base64
 
correct ='XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
 
s = base64.b64decode(correct)
 
flag =''
 
for i in s:
 
i = chr((ord(i)-16)^32)
 
flag += i
 
print flag

 

运行结果:

南邮CTF逆向题第三道Py交易解题思路_第6张图片

你可能感兴趣的:(------南邮CTF,我的CTF进阶之路)