1.
题目:
var="************************************"
flag='NSSCTF{' + base64.b16encode(base64.b32encode(base64.b64encode(var.encode()))) + '}'
print(flag)
小明不小心泄露了源码,输出结果为:4A5A4C564B36434E4B5241544B5432454E4E32465552324E47424758534D44594C4657564336534D4B5241584F574C4B4B463245365643424F35485649534C584A5A56454B4D4B5049354E47593D3D3D,你能还原出var的正确结果吗?
分析:
题目的{}中有三重解密,分别显示为base16,base32,base64
依次使用代码破解:
base16
import base64
a=input()
res = base64.b16decode(a.encode('utf-8')).decode('utf-8')
print(res)
得到:JZLVK6CNKRATKT2ENN2FUR2NGBGXSMDYLFWVC6SMKRAXOWLKKF2E6VCBO5HVISLXJZVEKMKPI5NGY===
base32
import base64
a=input()
res = base64.b32decode(a.encode('utf-8')).decode('utf-8')
print(res)
得到:NWUxMTA5ODktZGM0My0xYmQzLTAwYjQtOTAwOTIwNjE1OGZl
base64
import base64
bs64 = input('请输入需要解密的文本\n>>>')
bs64_d = str(base64.b64decode(bs64),'utf-8')
print('结果如下')
print(bs64_d)
得到:5e110989-dc43-1bd3-00b4-9009206158fe
最后使用NSSCTF{}包裹即可。
2.
题目:
import base64
def caesar(plaintext):
str_list = list(plaintext)
i = 0
while i < len(plaintext):
if not str_list[i].isalpha():
str_list[i] = str_list[i]
else:
a = "A" if str_list[i].isupper() else "a"
str_list[i] = chr((ord(str_list[i]) - ord(a) + 5) % 26 + ord(a) or 5)
i = i + 1
return ''.join(str_list)
flag = "*************************"
str = caesar(flag)
print(str)
#str="U1hYSFlLe2R0em1mYWpwc3RiaGZqeGZ3fQ=="
分析:
这里定义了一个字符串变量flag
,但它被赋值为一串星号,应该是原本要放置真正需要加密的内容。然后凯撒移位5,究竟是移位+5还是-5呢。
思考原文究竟是什么:
1)str=‘一串类似于base64的密文’
2)将其使用base64解密得到:SXXHYK{dtzmfajpstbhfjxfw},即为原文。
使用凯撒移位-5,去掉{}
# 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)
else:
# 小写字母的ASCII从97开始
output_c += chr((ord(char) + shift - 97) % 26 + 97)
return output_c
Message_test = "SXXHYKdtzmfajpstbhfjxfw" # 在这里输入你想要的明文
shift_num =-5 # 在这里设置移位数
print("原始字符串为:" + Message_test)
print("移位数:" + str(shift_num))
print("移位变换后的字符串为:" + shift_transform(Message_test, shift_num))
得到:NSSCTFyouhaveknowcaesar
最后加上{},得到:NSSCTF{youhaveknowcaesar}