CTF-简单的加密解密
最近遇上了一到ctf的比赛题,所以记录下来。
1.下载附件
2.打开后发现是验证flag值的一个程序,猜想要用反编译的软件,Easy Python Decompiler获取源码
3.分析代码
# Embedded file name: 2.py
import base64
def encode(yourflag): #对输入的flag进行加密
s = '' #将输入的flag拆成单个的字符
for i in yourflag:
x = ord(i) ^ 62 #对每一个字符先用ord()函数得到ascii码,再用^与62取异或,得到x
x = x + 6 #每个得到的x加上6
s += chr(x) #拼接成新的字符串
return base64.b64encode(s)#对得到的字符串再进行以此base64加密
tureflag = 'XlhlX0sMEWNiDxQQDgwTXl5eZRFgFWMOFBATXhMMYw8PD2UMZUk=' #加密后的flag值
flag = ''
print 'input your flag:'
yourflag = raw_input()
if encode(yourflag) == tureflag:
print 'OHHHHHH~ correct!'
else:
print 'emmm.. wrong'
4.解密
想法:
将字符串串"XlhlX0sMEWNiDxQQDgwTXl5eZRFgFWMOFBATXhMMYw8PD2UMZUk="解一次base64
再将每个字符ascii码都减下6
接着与62异或即可得到flag
脚本如下
import base64
correct = 'XlhlX0sMEWNiDxQQDgwTXl5eZRFgFWMOFBATXhMMYw8PD2UMZUk='
s = base64.b64decode(correct)
flag = ''
for i in s:
i = chr((ord(i) - 6) ^ 62)
flag += i
print flag
运行结果