攻防世界-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的切片(用于每隔八位提取二进制数据)

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字符.
posted @ 2024-12-05 17:30  wyuu101  阅读(6)  评论(0编辑  收藏  举报