每天10道 Crypto Day4

1.[网鼎杯 2020 青龙组]boom

用cmd打开,运行boom.exe

每天10道 Crypto Day4_第1张图片每天10道 Crypto Day4_第2张图片
开始玩一个小游戏
1.第一关
每天10道 Crypto Day4_第3张图片
md5 解密后就得到了答案

每天10道 Crypto Day4_第4张图片

2.第二关
每天10道 Crypto Day4_第5张图片

这里用到一个优秀的python第三方库,Python科学计算利器——SymPy库

from sympy import*
from sympy.abc import x,y,z

ABC = solve([3*x-y+z-185,2*x+3*y-z-321,x+y+z-173],[x,y,z])
print(ABC)

'''
m = solve([x*x+x-7943722218936282],[x])

print(m)
'''

{x: 74, y: 68, z: 31}

3.第三关
每天10道 Crypto Day4_第6张图片
用上面的代码就行

flag{en5oy_746831_89127561}

2.[AFCTF2018]你听过一次一密么?

3.[BJDCTF2020]编码与调制

由题目可知,考的是曼彻斯特编码

密文:2559659965656A9A65656996696965A6695669A9695A699569666A5A6A6569666A59695A69AA696569666AA6

用网上找到曼彻斯特解码器,解密文,将解密得到后的16进制转文本,即可得到flag

每天10道 Crypto Day4_第7张图片

flag{DifManchestercode}

4.[AFCTF2018]BASE

from base64 import *
s = ""
with open('flag_encode.txt', 'r') as file:
    s = bytes(file.read(),'ascii')
    file.close()

lis1 = [s]
lis2 = []
lis3 = []
lis4 = []
while(1):
	for a in lis1:
		ok = 0
		try:
			lis2.append(b64decode(a).decode('ascii'))
			ok = 1
		except:
			pass
		try:
			lis2.append(b32decode(a).decode('ascii'))
			ok = 1
		except:
			pass
		try:
			lis2.append(b16decode(a).decode('ascii'))
			ok = 1
		except:
			pass
		if not ok:
			lis3.append(a)
	if not len(lis2):
		break
	lis1=lis2.copy()
	lis2.clear()
for a in range(0,len(lis3)):
	ok = 1
	for b in lis3[a]:
		if ord(b)>126 or ord(b)<32:
			ok = 0
			break
	if ok:
		lis4.append(lis3[a])
print(lis4)

afctf{U_5h0u1d_Us3_T00l5}

5.[NPUCTF2020]Classical Cipher每天10道 Crypto Day4_第8张图片

Atbash加密, pvb 与 key 在字符表中的顺序正好是相对称的。
每天10道 Crypto Day4_第9张图片

压缩包解压后得到的jpg图片,是猪圈密码的变体和古埃及象形文字。
每天10道 Crypto Day4_第10张图片
猪圈变体
每天10道 Crypto Day4_第11张图片
古埃及象形

每天10道 Crypto Day4_第12张图片

flag{classicalcode}

6.[WUSTCTF2020]情书

题目

Premise: Enumerate the alphabet by 012.....25
Using the RSA system 
Encryption:0156 0821 1616 0041 0140 2130 1616 0793
Public Key:2537 and 13
Private Key:2537 and 937

flag: wctf2020{Decryption}

新建flag.txt文本

每天10道 Crypto Day4_第13张图片

解密代码

from gmpy2 import*

n=2537
d=937

result = []
with open('flag.txt') as f:
        for i in f:
                result.append(pow(int(i),d,n))

print(result)                

得到结果
[8, 11, 14, 21, 4, 24, 14, 20]

找到其对应 的英文,从0开始的。

flag{iloveyou}

8.[UTCTF2020]basic-crypto

解压后得到一堆二进制字符,尝试转为16进制,再转为文本。
每天10道 Crypto Day4_第14张图片
每天10道 Crypto Day4_第15张图片
通过提示我们可以知道,下面的那一段是base64编码。

每天10道 Crypto Day4_第16张图片
base的解密结果提示下面的密文与罗马有关,用quipqiup进行词频分析。

爆破全部密文都是乱码,没有结果,我们只需要爆破与flag相关的那一段就行了。

每天10道 Crypto Day4_第17张图片
每天10道 Crypto Day4_第18张图片

得到utflag{n0w_th4ts_wh4t_i_c4ll_crypt0}

9.

10.

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