这是南邮CTF平台上的一道题
base64是什么就不多说了,我们直接进入重点
我们先来看看这三种编码方式的编码映射表
base64
可见它能把我们的明文加密成{‘A’~’Z’,’a’~’z’,’0’~’9’,’+’,’/’},和一个代表补足的字节数的’=’
再来看看base32的
产生’A~Z’和’2~7’
配合ASCII对照表服用
’/’<数字<’=’<大写字母<小写字母
所以能出来ASCII码比’a’大的就只能是经历了base64了
我们再来看看base16
它只能产生‘0-9’和’A~F’
所以,如果一段文字不是base64,但是它又有ASCII码>’G’的字符,那就只能是经历了base32了
思路很清晰,下面直接放脚本
from base64 import *
with open ('mix64.txt','rb') as f:
rs = f.read()
def encode(str):
if max(str) > 'a':
return b64decode(str)
if max(str) > 'G':
return b32decode(str)
else :
return b16decode(str)
for i in range(10):
rs = encode(rs)
print rs
然后根据这道题我还魔改出了一道题,喜欢的话可以玩玩
产生的数据文件已经上传到github了
base64超进化——base59:Tokyo Western 2018: scs7