⭕ 知識點:
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字元.