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)
上一篇: 学习笔记-位置参数轮替(shift)
下一篇: 一天一点(2)防止 rm 误删除