CTF密码学Crypto1

CTF密码学Crypto

    • 1.Morse code(摩尔斯密码)
    • 2. 栅栏密码
    • 3. 恺撒密码
    • 4.Ook!编码
    • 5.Brainfuck编码
    • 6.Base64编码

CTF解密工具:
1.http://ctf.ssleye.com
2.https://tool.bugku.com

1.Morse code(摩尔斯密码)

特点:
用两种“符号”来表示字符:点(.)和划(-)
CTF密码学Crypto1_第1张图片CTF密码学Crypto1_第2张图片
通过写python脚本来解决:

ASCLL = input("Enter the string:")
L = ASCLL.split()
ascll ={'01': 'A','1000': 'B','1010': 'C','100':'D','0':'E','0010':'F','110': 'G','0000': 'H','00': 'I','0111':'J','101': 'K','0100': 'L','11': 'M','10': 'N','111': 'O','0110': 'P','1101': 'Q','010': 'R','000': 'S','1': 'T','001': 'U','0001': 'V','011': 'W','1001': 'X','1011': 'Y','1100': 'Z','01111': '1','00111': '2','00011': '3','00001': '4','00000': '5','10000': '6','11000': '7','11100': '8','11110': '9','11111': '0','001100': '?','10010': '/','101101': '()','100001': '-','010101': '.','110011':',','011010':'@','111000':':','101010':':','10001':'=','011110':"'",'101011':'!','001101':'_','010010':'"','10110':'(','1111011':'{','1111101':'}'
}
for item in L:
    print(ascll[item],end='')

摩尔斯电码与ASCLL关系:
CTF密码学Crypto1_第3张图片CTF密码学Crypto1_第4张图片在这里插入图片描述

2. 栅栏密码

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)

加密原理:百度百科有详细介绍。
CTF密码学Crypto1_第5张图片

3. 恺撒密码

恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移3的时候(解密时的密钥就是3):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC。
CTF密码学Crypto1_第6张图片

4.Ook!编码

CTF密码学Crypto1_第7张图片直接用工具解密就行。
Ook!的变形题目:
CTF密码学Crypto1_第8张图片
学会观察题目特点,快速突破。

5.Brainfuck编码

只有八种指令
CTF密码学Crypto1_第9张图片指令输出的字符是根据ASCII表.
CTF密码学Crypto1_第10张图片
得到类似这样的字符串:++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++…+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.
用解密工具解密即可。

6.Base64编码

特点:Base64字符表由a-z,A-Z,0-9,/,+构成,编码后末尾可能有=号CTF密码学Crypto1_第11张图片
这个题就是恺撒密码与base64编码的混合加密,由字符串末尾的AA可以考虑是否为base64中的 ==。由Ascll知‘A’与‘=’相差4个位,写一个python脚本将所有字符都偏移4位:

a = 'e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA'
i = 0
flag = ''
while i < len(a):
    num = ord(a[i])-4
    flag += chr(num)
    i +=1
print(flag)

得到如下结果:

a2V5ezY4NzQzMDAwNjUwMTczMjMwZTRhNThlZTE1M2M2OGU4fQ==

用base64解密工具进行解密:
CTF密码学Crypto1_第12张图片
得到Flag为:key{68743000650173230e4a58ee153c68e8}

你可能感兴趣的:(BUUCTF,Crypto)