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)

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