解压缩后可以看到有21.7M,打开看看这么打的内容是什么
密密麻麻的一堆,不过仔细看,可以发现符合BASE16的特点,只有0-9的数字和ABCDEF6个英文字符,找一网址解码?这也太多了呀,我们警惕一下,先复制一些片段解码
解密完之后怎么看这个像是base64的了,再解密一下base64
解密过后,可以发现还是一堆密文,如何搞?
由此我们可以猜测,本题后续步骤将会是循环使用不同的Base编码方案进行解码,我们可以编写脚本来完成这个重复工作。
import re,base64 s=open('D:/flag_encode.txt','rb').read() base16_dic=r'^[A-F0-9=]*&' base32_dic=r'^[A-Z2-7=]*&' base16_dic=r'^[A-Za-z0-9/+=]*&' n=0 while True: n+=1 t=s.decode() if'{'in t: print(t) break elif re.match(base16_dic,t): s=base64.b16decode(s) elif re.match(base32_dic,t): s=base64.b32decode(s) elif re.match(base64_dic,t): s=base64.b64decode(s)
这里我们按照正则进行匹配,如果符合Base相应编码则进行解码,如果出现特殊字符'{'则输出内容,运行脚本便可以解出Flag。