首先打开之后是一个py文件,本地跑一下,出错
源码为:
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'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print des
修改后(注意修改的地方:加上的【.encode(
'utf-8')】这玩意是什么?→
https://blog.csdn.net/qq_49551075/article/details/107556997):
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:
14.[BJDCTF 2nd]老文盲了
下载文件打开:【罼雧締眔擴灝淛匶襫黼瀬鎶軄鶛驕鳓哵】
在网上找的了在线汉字转拼音。得到这些汉字的读音为:
bì jí dì dà kuò hào zhè jiù shì fǔ lài gē zhí jiē jiāo lè bā dà kuò hào
得到:flag{淛匶襫黼瀬鎶軄鶛驕鳓哵}
看到一串繁体字的都可以考虑这样做,还有一种“与佛论禅”的加密)
15.Alice与Bob
下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。
根据题目可知要先将提供的大整数进行素数拆分,根据题目合成一个新数字然后MD5的32位小写哈希
素数拆分网站如:http://www.factordb.com/index.php
MD5解密网站如:https://www.cmd5.com/
16.rsarsa
Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.
p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
Use RSA to find the secret message
做到这里觉得应该先去学习相关的背景知识再去做题……
关于RSA的知识储备(慢慢啃吧)→https://www.anquanke.com/post/id/84632
写代码(这题p,q,e,c都给我们了。于是不需要什么enc和pem文件):
import math
p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e=65537
c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
n=p*q
fn=long((p-1)*(q-1))
i = 1
while(True):
x=(i*fn)+1
if(x%e==0):
d=x/e
break
i=i+1
print pow(c,d,n)
得到flag→
17.大帝的密码武器
题目.txt:
公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。
密文.txt:
ComeChina
凯撒密码解密后加密(加密位移:13)
18.Windows系统密码
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::
一开始有点无从下手……经过一次次的尝试,找到了藏在这里面真正的密文a7fcb22a88038f35a8f39d503e7f0062,md5解密
19.[BJDCTF 2nd]cat_flag
有点意思,第一次做到图片题
触及了知识盲区……上网查查:
图中每行有8只猫,总共有两种猫,猜测为二进制ASCII码,二进制转换成字符串即可。
一只有鸡腿,一只没有鸡腿。很容易想到二进制数0,1。
将图片用二进制表示为:
01000010
01001010
01000100
01111011
01001101
00100001
01100001
00110000
01111110
01111101
将二进制数转为16进制进制转换,再16进制转文本16转文。
得到flag为: BJD{M!a0~}
第一反应:还有这种思路,学习了!
20、[BJDCTF 2nd]燕言燕语-y1ng 1
小燕子,穿花衣,年年春天来这里,我问燕子你为啥来,燕子说:
79616E7A69205A4A517B78696C7A765F6971737375686F635F73757A6A677D20
有点像十六进制,用16进制转字符(16进制在线转换)得到yanzi ZJQ{xilzv_iqssuhoc_suzjg}
一度以为这就是flag了,结果incorrect
原来这还是密码,维吉尼亚密码,密钥是yanzi……(维吉尼亚解密),解密得flag
又get一种新密码:
维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。维吉尼亚密码加密方法示例如下:
明文:I've got it.
密钥:ok密文:W'fs qcd wd.
首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。本例中,明文长度为8个字母(非字母均被忽略),密钥会被程序补全为“okokokok”。现在根据如下维吉尼亚密码表格进行加密:
明文第一个字母是“I”,密钥第一个字母是“o”,在表格中找到“I”列与“o”行相交点,字母“W”就是密文第一个字母;同理,“v”列与“k”行交点字母是“F”;“e”列与“o”行交点字母是“S”……
- 维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留。
- 如果输入多行文本,每行是单独加密的。
小结:几周断断续续做完了前二十道题,每做一道题都会去搜解题原理,一边做一边学。算是对密码有一点点入门了吧。每遇到一种新的加密方式都让我更加觉得密码是多么的变幻、渊深莫测……当然也很有趣,哈哈哈。再接再厉!