BUU-crypto

[AFCTF2018]Morse

发现是十六进制的字符串

1
2
3
4
string = "61666374667b317327745f73305f333435797d"
for i in range(0,len(string),2):
_n = int(string[i]+string[i+1],16)
print(chr(_n),end = "")

flag{1s’t_s0_345y}

Unencode

http://www.hiencode.com/uu.html

世上无难事(词频)

oldfasion(词频)

提权的第一步(md5)

flag{361756}

萌萌的八戒(猪圈)

flag{whenthepigwanttoeat}

凯撒?替换?呵呵(词频)

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

[NPUCTF2020]Classical Cipher

1
2
3
4
5
解密后的flag请用flag{}包裹

压缩包密码:gsv_pvb_rh_zgyzhs

对应明文: ***_key_** _******

http://www.practicalcryptography.com/ciphers/classical-era/atbash-cipher/

解完压缩包之后:

变异猪圈+动物

flag{classicalcode}

md5 (md5)

解决完回头看这一题,发现有人可以通过撞库的方法,搜索匹配的md5

https://shirong.ink/index.php/archives/682/

1
2
3
4
5
6
7
8
9
10
11
import requests
import re
s=input('破解的md5:')
url = 'https://md5.gromweb.com/?md5='+s
try:
r = requests.get(url,timeout=20)
r.raise_for_status()
r.encoding = r.apparent_encoding
except:
print('网络异常或页面未找到,请重试')
print(re.findall(r'<em class="long-content string">(.+?)</em></p>',r.text))

看一眼就解密(base64)

1
2
3
4
import base64
Crypto = "ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30="
url = base64.b64decode(Crypto).decode("utf-8")
print(url)

看我回旋踢 (凯撒加密)

synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}

暴力循环就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string = list("synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}")
for i in range(26):
s = ""
for j in string:
m = ord(j)
## if m >= 65 and m <= 90:
## s += chr((m-65+i)%26+65)
if m >= 97 and m <= 122:
s += chr((m-97+i)%26+97)
## elif m >= 48 and m <= 57:
## s += chr((m-48+i)%10+48)
else:
s += j
print(s)

摩丝 (摩斯密码)

1
.. .-.. --- ...- . -.-- --- ..-

摩斯都是大写

摩斯解码脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from __future__ import print_function
a = input("input the string:")
s = a.split(" ")
dict = {'.-': 'A',
'-...': 'B',
'-.-.': 'C',
'-..':'D',
'.':'E',
'..-.':'F',
'--.': 'G',
'....': 'H',
'..': 'I',
'.---':'J',
'-.-': 'K',
'.-..': 'L',
'--': 'M',
'-.': 'N',
'---': 'O',
'.--.': 'P',
'--.-': 'Q',
'.-.': 'R',
'...': 'S',
'-': 'T',
'..-': 'U',
'...-': 'V',
'.--': 'W',
'-..-': 'X',
'-.--': 'Y',
'--..': 'Z',
'.----': '1',
'..---': '2',
'...--': '3',
'....-': '4',
'.....': '5',
'-....': '6',
'--...': '7',
'---..': '8',
'----.': '9',
'-----': '0',
'..--..': '?',
'-..-.': '/',
'-.--.-': '()',
'-....-': '-',
'.-.-.-': '.'
};
for item in s:
print (dict[item],end='')
#print (s)

password

1
2
3
4
姓名:张三 
生日:19900315

key格式为key{xxxxxxxxxx}

好家伙,看长度有十位,生日八位,名字两位

flag{zs19900315},出来了?!

变异凯撒:

1
2
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }

知道格式是flag之后,我们可以对比一下对应的ascii码

1
2
3
4
5
6
7
8
9
string = "afZ_r9VYfScOeO_UL^RWUc"

flag = ""

for j in range(len(string)):
m = ord(string[j])
flag += chr(m+5+j)

print(flag)

Quoted-printable

1
=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
1
2
3
4
5
# coding=gbk
import quopri
str = '=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6'
flag = quopri.decodestring(str).decode('utf8')
print(flag)

当然也有脚本可以实现

rabbit

信息化时代的步伐

在网站找了半天有关36位的数字加密方法,可能没有注意关键词是中文加密吧……

这个加密方法是电报加密

http://code.mcdvisa.com/

丢失的MD5

在md5加密之前,需要将字符串编码一下

传统知识+古典密码

1
2
3
辛卯,癸巳,丙戌,辛未, 庚辰,癸酉,己卯,癸巳 ……  +甲子
28 30 23 8 17 10 16 30 …… +60
X Z S D M F L Z

猜到是凯撒加密,但是解密后发现没有有用的信息

原来这题是栅栏加密+凯撒加密

原理:

image-20220303152951715

http://www.metools.info/code/fence154.html

https://planetcalc.com/1434/