攻防世界-enc
⭕ 知识点:
1、二进制转ASCII码
2、base64解码
3、摩斯密码解码
4、python相关函数调用
一、题目
显然设计二进制和编码转换的知识
二、解题
1、用脚本把文本转化为数字
with open("data","r") as f:
data= f.read()
data = data.replace("ZERO","0")
data = data.replace("ONE","1")
data = data.replace(" ","")
data = data.strip()
print(data)
print(len(data))
发现长度为1408为8的倍数,仔细观察每8位,发现它们的最高位都为0,因此猜测可能是ASCII编码
2、转化为ASCII编码 https://coding.tools/cn/binary-to-text
3、发现结果为base64编码,再去另一个网站进行解码https://www.toolhelper.cn/EncodeDecode/Base
4、发现结果为摩斯密码形式,再到另一个网站解密https://www.lddgo.net/encrypt/morse
得flag:ALEXCTF{TH15_1S_5UP3R_5ECR3T_TXT}
三、学习收获
在使用在线解码、解密网站后,尝试自己编写脚本实现算法
1、复习了python的切片(用于每隔八位提取二进制数据)
2、复习了int()和chr()函数
3、复习了print的第二参数
脚本:
with open("data","r") as f:
data= f.read()
data = data.replace("ZERO","0")
data = data.replace("ONE","1")
data = data.replace(" ","")
data = data.strip()
for i in range(0,len(data)//8):
print(chr(int(data[i*8:i*8+8],2)),end="")
#把切片得到的二进制数据每8位先转化为十进制数表示,再用chr()函数把对应的十进制数转化为ASCII字符.