攻防世界-enc

wyuu101發表於2024-12-05

⭕ 知識點:

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字元.