「配枪朱丽叶。」

RootのCTF学习笔记。

Ordinary keyboard

李磊是一名程序员,在他的笔记本里有一些这样的记录:
QQ:iloveyou521
blog:blog132
wechat:wechat190

看着应该像是密码,于是尝试去登录,发现密码错误
后来一打听,原来他将这些密码经过自己写的一个简单的加密算法变成真实的密码,而自己笔记本中存放的只是一些虚假的密码,只是方便记忆而已

其真实密码如下:
QQ:+p)g$_)'521
blog:hp)u132
wechat:A$ezr&190

hint:Caesar

flag is spru.r5sf3h7660h7394e169699hffe0s0h$4,

Please restore the real flag

经测试:
i的左上角是*
l的左上角是o
v的左上角是f
>>> chr(ord('*')+1)
'+'
>>> chr(ord('o')+1)
'p'
>>> chr(ord('f')+1)
'g'

所以密文为 明文左上角的字符的ascii+1

自己摸了半天脚本,终于写出来了。。

a = "spru.r5sf3h7660h7394e169699hffe0s0h$4"
b = {'r': 'a', 'h': 'b', 'e': 'c', 'f': 'd', '$': 'e', 's': 'f', 'u': 'g', 'z': 'h', '+': 'i', 'v': 'j', 'j': 'k', 'p': 'l', 'k': 'm', 'i': 'n', ')': 'p', '"': 'q', '%': 'r', 'x': 's', '&': 't', "'": 'u', 'g': 'v', 'A': 'w', 't': 'x', '_': 'y', 'b': 'z', '`': '{', ',': '}', 'm': '.'}
for i in a:
    if(i.isdigit()):
        print(i,end="")
    else:
        try:
            print(b[i],end="")
        except:
            pass

flaga5fd3b7660b7394c169699bddc0f0be4