题目详情:
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=="
_____________________________________________________________________________
str的形式后面有==,推测是base64。
base64解密可得到:
SXXHYK{dtzmfajpstbhfjxfw}
再观察代码中else两段语句,本质上就是将字母后移5位,大小字母需分别处理。
解码将字母前移5位即可。
code:
str="SXXHYK{dtzmfajpstbhfjxfw}"
flag=''
for i in str:
if not i.isalpha():
flag+=i
else:
a='A' if i.isupper() else 'a'
flag+=chr((ord(i)-ord(a)-5)%26+ord(a))
print(flag)
拿到flag: