• Home
  • About
    • Rhy7hm photo

      Rhy7hm

      天天被计算机教做人

    • Learn More
    • Email
  • Posts
    • All Posts
    • All Tags
  • Projects

【base64,32,16】mixed_base64_Write_UP

23 Apr 2018

Reading time ~1 minute

这是南邮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



base64 Share Tweet +1