ctfshow-萌新賽Crypto

 

萌新賽密碼學_簽到題
Ao(mgHXE)AN2PSBOu3qI0o
開頭的Ao(mg就是flag base85編碼後的結果
直接在線https://www.qtool.net/baseencode得到flag

萌新賽密碼學_抱我

分析源碼可以發現就是
大循環299次每次隨機從[0,36]之間選個數字
再從cssting取出對應位置的字符添加到密文中
接着進入小循環10次
隨機從[0, len(key) - 1]選個數字
再從key取出對應位置的字符添加到密文中
一次大循環得到11位的密文,其中第一個都是密鑰,是要提取仍掉的
直接上代碼

def decode(cipher):
    deCipher = ''
    for i in range(1,len(cipher),11):
        deCipher+=cipher[i:i+10]
    return deCipher

print(decode(cipher))

就可以得到亂序的flag,詞頻統計一下(在線http://www.aihanyu.org/cncorpus/CpsTongji.aspx)

拋開flag{}就只剩36d了
flag直接就出來了

萌新賽密碼_媽呀,完了
2進制轉爲字符串
#二進制轉字符串

int_ ="01000100010100110111100100110011010010100111100101001011011101100101000001000011010100000110110101001000001101000101011101000011011110100010101101010100011010000101011101101001001100100100011001100111010010110110111100111001011001010101001101010000010101010011010001100101001101010110011100101011011010100101101001010101001100110100011001110010010101110100111001110110010011000100110100110101001101010110101101000101011001100011000101101000010001010110110101001110011100100111010100101011010011100100010100110011"
str_= ",".join([str(int(int_[i:i+8],2)) for i in range(0,len(int_),8)])
print(str_)

得到
DSy3JyKvPCPmH4WCz+ThWi2FgKo9eSPU4e5g+jZU3FrWNvLM55kEf1hEmNru+NE3
分析一下是64位
emm這時候就需要去羣裏拿小本本記錄大佬們的發言
最後36D羣主說了密鑰爲20121221
也解釋可媽呀,完了的意思,
圖是用來讓我們向瑪雅這邊想出這密鑰的
有密文和密鑰,而且有+號那麼就是非對稱那邊猜了
最後AES在線解密出得
解密網站:http://tool.chacuo.net/cryptaes(不知道偏移量所以加密模式選擇ECB,還有字符集需要選擇爲utf8)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章