1.
> Problem: [密码测试( -11.1)](https://www.nssctf.cn/problem/6060)
按凯撒密码分析
* AFFPGS{pbatenghyngvbaf!!!}
* 要写成以NSSCTF{}的格式
* A变成N偏移量为13,则推导出答案
* NSSCTF{congratulations!!!}
具体攻击代码
# Caesar
def shift_transform(input_m, shift): # 移位变换函数(输入明文以及移位数)
output_c = "" # 定义初始的输出字符串为空
for i in range(len(input_m)):
char = input_m[i]
# 区分大小写后进行移位变换
if char.isupper():
# 大写字母的ASCII从65开始
output_c += chr((ord(char) + shift - 65) % 26 + 65) #ord()用于返回字符的Unicode码
else:
# 小写字母的ASCII从97开始
output_c += chr((ord(char) + shift - 97) % 26 + 97)
return output_c
Message_test = "rovvyxgybvn" # 在这里输入你想要的明文
shift_num =-10 # 在这里设置移位数
print("原始字符串为:" + Message_test)
print("移位数:" + str(shift_num))
print("移位变换后的字符串为:" + shift_transform(Message_test, shift_num))
2.
> Problem: [什么???](https://www.nssctf.cn/problem/6061)
*解题大致思路
* 由密文可以看出,有大小写字母,并且还有下划线和阿拉伯数字,所以我们基本可以看出需要使用ASCII码表
* 
* 又因为明文flag对应afZ_,所以寻找明文和密文的规律
* f-102 a-97 相差5
* l-108 f-102 相差6
* a-97 Z-90 相差7
* 把空格看作_:g-103 _-95 相差8
可以看出每个字符的偏移量为n+4
所以依次算出各密文字符对应的明文字符求得明文为
flag{Caesar_variation}
## 总结
* 对该题的考点总结
* 变异找规律
3.
> Problem: [怎么这么多](https://www.nssctf.cn/problem/6064)
## 思路
* 解题大致思路
* 看到“就这?”,用阴阳怪气编码破解出来,这个软件打开得很慢,一定要耐心一点,不然就会我一样,迷茫好几天
* 解出来是“basecrack”
* 继续用这个破解原密文就好
4.
奇怪的条形码
拉一下高度:更方便看,当然,从充电口看也不是不行
jiang对图中文字使用base64,得到flag:ctfshow{xigubei_misc_gram_here_flag}
##base64代码
##加密
import base64
print('进行base64编码')
bs64 = str(input('请输入需要加密的文本\n>>>'))
bs64_e = base64.b64encode(bs64.encode('utf-8'))
print('结果如下:')
print(bs64_e)
##解密
import base64
bs64 = input('请输入需要解密的文本\n>>>')
bs64_d = str(base64.b64decode(bs64),'utf-8')
print('结果如下')
print(bs64_d)
5.
多表替换密码之????
密文:
OCYFQAJ{Lcs_f0y_n0ytbw3o??}
key:
Hello
使用维吉尼亚密码就好
得到明文:HYNUCTF{Are_y0u_c0nfus3d??}
python代码(只支持大写字母,把密文中的小写字母换成大写字母,各种不属于A~Z的字符删去,解密后再对应大小字母和数字的位置写更改为原文)
from string import ascii_uppercase as uppercase
from itertools import cycle
#创建密码表
table=dict()
for ch in uppercase:
index=uppercase.index(ch)
table[ch]=uppercase[index:]+uppercase[:index]
#创建解密码表
deTable={'A':'A'}
start='Z'
for ch in uppercase[1:]:
index=uppercase.index(ch)
deTable[ch]=chr(ord(start)+1-index)
#解密密钥
def deKey(key):
return ''.join([deTable[i] for i in key])
#加密/解密
def encrypt(plainText,key):
result=[]
#创建cycle对象,支持密钥字母的循环使用
currentKey=cycle(key)
for ch in plainText:
if 'A'<=ch<='Z':
index=uppercase.index(ch)
#获取密钥字母
ck=next(currentKey)
result.append(table[ck][index])
else:
result.append(ch)
return ''.join(result)
#进行加密
key=input('请输入你的密钥:')#输入只能大写字母
p=input('请输入你想要的加密的内容:')#输入只能大写字母
c=encrypt(p,key)
print('加密后的内容为',c)
#进行解密
q=input('请输入你想要解密的内容:')
key1=input('请输入密钥:')
print('解密后的内容为:',encrypt(q,deKey(key1)))
运行结果
6.
Benstar最近迷上了乐队番,尤其是girls band cry,于是他联系上了小孩姐nina,让她去找momoka为玄天网安写一首歌曲,Benstar和momoka聊天聊了很久,然后momoka敏锐地发现Benstar是一个ikun,所以她马上写了一首歌叫做《玄你太美》,小孩姐马上把正在拍戏的486酱,还有在吉野家打工的tomo酱和rupa酱喊过来准备演奏一下试一试效果,结果试音中途rupa发现自己的贝斯坏了,怎么办?Benstar急中生智,找了一个64型号的贝斯送给rupa,然后无刺有刺乐队顺利完成了演奏,写下了致敬玄天网安的歌曲:《玄你太美》
以下是歌词和歌曲:
《玄你太美》
词:河原木桃香
曲:河原木桃香
演唱:井芹仁菜
演奏:贝斯:鲁帕 键盘:海老塚智 吉他:河原木桃香 有感情的,坤昂的
‖¶¶♭♭♬‖¶♯♭♯♫♭‖♯♭‖♭♭♯♩♭‖♭‖¶♬‖¶∮‖♩♫‖♫♯♭‖∮‖‖♭♭♯♯‖¶♯‖¶♫♭♭¶‖♫♭‖♫♯‖♬♪♭‖♯‖‖¶‖♩♫‖♬♭♭‖§‖♩♬‖¶♯♭‖∮‖‖♯‖♬∮‖♩∮‖♬§‖¶§‖♫♯‖♫∮♭‖∮‖‖♯♭♯♯‖♬♬‖♬♯‖¶§‖¶♬‖♬♩♭‖♪‖‖§♭♯♯‖‖♪♭♯♭♭‖∮‖‖‖‖♭§§=
玄你太美 baby
玄天你太美 baby
玄天你实在是太美 baby
玄你太美 baby
迎面走来的flag让我蠢蠢欲动
这种感觉我从未有
Cause I got a flag ou who you
题是我的我是你的题
再多一眼看一眼就会爆炸
再近一点靠近点快被融化
想要把flag占为己有 bebebe
不管走到哪里
都会想起的flag是你 flag flag
(虚拟剧情,请勿当真,如有雷同,那是小说)
从题目中找到信息的信息都有红色标注,
音符密码(网站:千千秀字)解码得到:SFlOVUNURnsxX1JlQGwxeV9saWtlX2dpcmxzX2JhbmRfY3J5IX0=
再用Base64(代码见上文第四题)解出答案
7.
> Problem: [[鹤城杯 2021]easy_crypto](https://www.nssctf.cn/problem/453)
题目:
公正公正公正诚信文明公正民主公正法治法治诚信民主自由敬业公正友善公正平等平等法治民主平等平等和谐敬业自由诚信平等和谐平等公正法治法治平等平等爱国和谐公正平等敬业公正敬业自由敬业平等自由法治和谐平等文明自由诚信自由平等富强公正敬业平等民主公正诚信和谐公正文明公正爱国自由诚信自由平等文明公正诚信富强自由法治法治平等平等自由平等富强法治诚信和谐
思路:
社会主义核心价值观密码(解码网址:首页 - Bugku CTF平台)
明文:
flag{IlUqU9O5guX6YiITsRNPiQmbhNRjGuTP}