?
解压缩后可以看到有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。