目录
达芬奇密码
rot
[WUSTCTF2020]佛说:只能四天
这是什么
[MRCTF2020]古典密码知多少
[NCTF2019]Keyboard
传感器
[MRCTF2020]天干地支+甲子
[BJDCTF2020]signin
[MRCTF2020]vigenere
[MRCTF2020]keyboard
达芬奇密码
百度一下什么是达芬奇密码,发现与斐波那契数列有关,选取部分项,发现给出的数组列中的数是对应斐波那契数列位进行移位得到的,
比如第零位没有移动,而第一位的233,是原数列第十二位移动得到的(原数列有个起始的0),由此可以猜测,给出的神秘数字串是由32位flag对应进行移位得到的,参考大佬的脚本(要么自己手动慢慢移、、、)
#主要思路是遍历fakefibbo,然后找出对应哪一位,如fb中第二个数对应rb中第五个
#然后cipher对应fakebibbo,因此cipher中第二个数对应flag第五个数
#因此有reslut[4]=cipher[1],依次类推
realfibbo = '1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309'
fakefibbo = '1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711'
cipher = '36968853882116725547342176952286'
realfibbo = realfibbo.split(' ')
fakefibbo = fakefibbo.split(' ')
result = ['a']*32
for i in range(len(cipher)):
#这里要考虑到第二个1(fb[24])寻找的时候,会找到1123中第一个数,也就是index=0,而我们希望他找到第二个数,也就是index=1if(i == 24):index = 1else:index = realfibbo.index(fakefibbo[i])result[index] = cipher[i]
for i in result:print(i,end='')
得到flag
rot
根据题目,猜想应该是rot加密,但不知到是哪种类型,用代码得到:
a = [83,89,78,84,45,86,96,45,115,121,110,116,136,132,132,132,108,128,117,118,134,110,123,111,110,127,108,112,124,122,108,118,128,108,131,114,127,134,108,116,124,124,113,108,76,76,76,76,138,23,90,81,66,71,64,69,114,65,112,64,66,63,69,61,70,114,62,66,61,62,69,67,70,63,61,110,110,112,64,68,62,70,61,112,111,112]
s = ''
for i in a: #逐个先转int,再转字符后又组成字符串s += chr(i)
for i in range(1,26):for j in range(len(s)):print(chr(ord(s[j])-i),end='')print()
除了rot13,其它的都乱码了,说明是rot13类型
得到的falg中有问号,有md5的结果,用在线网站怎么也试不出来,故只能暴力破解了
import hashlib
s='flag{www_shiyanbar_com_is_very_good_'
m='38e4c352809e150186920aac37190cbc'def revmd5():for i in range(33,127):for j in range(33,127):for k in range(33,127):for n in range(33,127):a=s+chr(i)+chr(j)+chr(k)+chr(n)+'}'ha=hashlib.md5(a.encode()).hexdigest()if(ha == m):print(a)return
revmd5()
代码参考:http://t.csdn.cn/aCjcI
[WUSTCTF2020]佛说:只能四天
题目:
根据《新约全书》,先解密佛伦,在线网站:http://hi.pcmoe.net/buddha.html
得到核心价值编码,在线解密网站:http://www.hiencode.com/cvencode.html
得到RLJDQTOVPTQ6O6duws5CD6IB5B52CC57okCaUUC3SO4OSOWG3LynarAVGRZSJRAEYEZ_ooe_doyouknowfence
末尾的“doyouknowfence”提示是栅栏加密,用脚本解:
末尾的“doyouknowCaesar”提示是凯撒加密(移动3位),同脚本解,找到第三个:
最后是base32,https://www.qqxiuzi.cn/bianma/base.php
这是什么
jsfuck 密码,用6种符号来编写代码。(、)、+、[、]、!。 打开控制台,将密文复制,然后回车即可得到flag
[MRCTF2020]古典密码知多少
蓝色的是猪圈密码,橙色的是圣堂武士密码, 黑色的是标准银河字母,分别对应的解密表:
猪圈:
圣堂武士:
标准银河字母:
对照表可以得到:FGCPFLIRTUASYON(题目提示是大写字母),且题目里提到了栅栏,故用栅栏解密:
[NCTF2019]Keyboard
题目提示键盘,所所以要从键盘上入手
观察发现,给的字母全在一排,且与上面的数字一一对应,如p-0,o-9等等,
在九宫格上,如第一个字符ooo,o对应9,且有3个o,表示,第九格的第三个字母,以此类推,得到flag:youaresosmartthatthisisjustapieceofcake
也可以用脚本解,参考别人的代码:
cipher="ooo yyy ii w uuu ee uuuu yyy uuuu y w uuu i i rr w i i rr rrr uuuu rrr uuuu t ii uuuu i w u rrr ee www ee yyy eee www w tt ee"
base=" qwertyuiop"
a=[" "," ","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
for part in cipher.split(" "):s=base.index(part[0])count=len(part)print(a[s][count-1],end="")
传感器
题目提示曼联,查了是曼彻斯特编码,搞不懂原理,借鉴大佬们的脚本:
cipher='5555555595555A65556AA696AA6666666955'
def iee(cipher):tmp=''for i in range(len(cipher)):a=bin(eval('0x'+cipher[i]))[2:].zfill(4)tmp=tmp+a[1]+a[3]print(tmp)plain=[hex(int(tmp[i:i+8][::-1],2))[2:] for i in range(0,len(tmp),8)]print(''.join(plain).upper())iee(cipher)
[MRCTF2020]天干地支+甲子
这道题与“传统知识+古典密码”相同,先对照
写下对应数,然后在每个数的基础上加上60(题目没有提示?),接着对照ASCII表写出flag:
[BJDCTF2020]signin
在线网站16进制转字符串就得到flag
[MRCTF2020]vigenere
题目vigenere,说明是维吉尼亚密码,在线爆破:https://www.guballa.de/vigenere-solver
提交的时候加上下划线就行。
[MRCTF2020]keyboard
与上面的[NCTF2019]Keyboard 相同的解法。mobilephone