1.Quoted-printable
由题目我们可以知道是Quoted-printtable的解码方式
由此可以得到flag:flag{那你也很棒哦}
2.Rabbit
由题目可以知道这是rabbit解码http://www.jsons.cn/rabbitencrypt/
我们可以得到flag:flag{Cute_Rabbit}
3.篱笆墙的影子
由题意我们可以猜测这是一个栅栏加密因此我们尝试使用栅栏密码进行解密
栅栏数需要们我自己尝试
因此flag为flag{wethinkwehavetheflag}
4.RSA
由题意可知是一个简单的RSA
因为是要求d那么我们需要先求出n值再根据n值和phi值最后去求出d值
import math
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
raise Exception('Modular inverse does not exist')
else:
return x % m
# 已知的参数
p = 473398607161
q = 4511491
e = 17
# 计算模数 n
n = p * q
# 计算欧拉函数 φ(n)
phi = (p - 1) * (q - 1)
# 计算私钥 d
d = modinv(e, phi)
print("Private key d is:", d)
我们通过上面的代码可以得到d值而题目中告诉我们只需要求d那么flag就是求出来的d
flag{125631357777427553}
5.丢失的MD5
打开下载文件发现是一个python脚本我们先运行一下
它提示我们最后一行代码print有问题我们将其修改过来之后在进行运算看看是否还有错误
证明还是有问题通过报错我们可知update()
函数需要传入一个字节串(byte-string),而不是普通的字符串。为了解决这个问题,我们需要将字符串编码为字节串而我们的Unicode为utf-8的展示形式所以我们给报错的位置加上这个
我们可以得到成功运行的代码修改的脚本如下
import hashlib
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update('TASC'.encode('utf-8')+chr(i).encode('utf-8')+'O3RJMV'.encode('utf-8')+chr(j).encode('utf-8')+'WDJKX'.encode('utf-8')+chr(k).encode('utf-8')+'ZM'.encode('utf-8'))
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print(des)
因此flag为:flag{e9032994dabac08080091151380478a2}
6.Alice与Bob
由题目可以知道我们需要先将98554799767分解为两个素数我们通过代码可以得到这两个素数
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
def find_prime_factors(n):
for i in range(2, n):
if is_prime(i) and n % i == 0:
return i, n // i
num = 98554799767
prime1, prime2 = find_prime_factors(num)
print("The two prime factors of", num, "are:", prime1, "and", prime2)
得到的素数如下
再根据题意我们可以知道需要哈希32小因此我们可以得到答案
7.大帝的密码武器
我们通过题目可以猜测这是一到凯撒类型的题目
我们将题目中的拿出来进行凯撒在移动量来到13时就是一个有意义的单词那么我们可以确定这个加密的移动量为13
因此我们找到密文移动13的值即为答案
flag为:flag{PbzrPuvan}
8.rsarsa
有题目我们可以知道这道题目我们是要求m
我用ai写了一个求m的代码如下
import gmpy2
# 已知参数
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
# 计算模数 n
n = p * q
# 计算欧拉函数 φ(n)
phi_n = (p - 1) * (q - 1)
# 计算私钥 d
d = gmpy2.powmod(e, -1, phi_n)
# 解密密文得到明文
m = gmpy2.powmod(c, d, n)
print("The decrypted message m is:", m)
由此我们可以知道flag:flag{5577446633554466577768879988}
9.Windows系统密码
我们可以看到他有一行时ctf我们继续观察这一行他每一段都是32位我们猜测这是一个md5加密所以我们放到md5解密的地方发现后一个刚好可以解出来答案
所以flag为:flag{good-luck}
10.信息化时代的步伐
我们代开题目发现是一串数字
606046152623600817831216121621196386
这是我看的wp的大佬大家可以去看看