1.题目信息
题目给出的字符串:e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA
要求:解密获得flag
2.解题思路
观察最后的AA,联想到base64编码最后常出现的==,A的ASCII码值为65,=的ASCII的码值为61,分析可能是base64编码做了偏移,尝试将密文所有字符的ASCII码值-4,然后再做base64解码。
base64编码之后做偏移加密,凯撒密码的base64形式(自己起的名字)。
3.脚本解题
遍历密文字符串的每个字符,获取它的ascii码值,-4之后转化为新的ASCII字符,拼接转化的字符之后获得还原的base64字符串,然后再做base64解密。这里的4就相当于凯撒密码的密钥。
import base64
c='e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA'
base64str=''
for i in range(len(c)):
base64str+=chr(ord(c[i])-4)
print(base64.b64decode(base64str))
4.flag
key{68743000650173230e4a58ee153c68e8}
5.base系列的编解码
5.1编码
import base64
s=“stay hungry,stay foolish”
el=base64.b64encode(s)
print el
c3RheSBodw5ncnksc3RheSBmb29saXNo
e2=base64.b32encode(s)
print e2
ON2GC6JANB2W4Z3SPEWHG5DBPEQGM33PNRUXG2A=
e3=base64.b16encode(s)
print e3
737461792068756E6772792C7374617920666F6F6C697368
5.2解码
d1=base64.b64decode(e1)
print dl
stay hungry,stay foolish
d2=base64.b32decode(e2)
print d2
stay hungry,stay foolish
d3=base64.b16decode(e3)
print d3
stay hungry,stay foolish