[SWPUCTF 2021 新生赛]ez_caesar

题目详情:

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:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值