BUUUCTF:[羊城杯 2020]signin

题目来源:https://buuoj.cn/challenges#[%E7%BE%8A%E5%9F%8E%E6%9D%AF%202020]signin

题目给了一段明文

BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH

从别的师傅那找到了该加密的pdf(好像叫toy加密)

关键在这张替换表

先将明文每四位替换,题目提示二表倒立,即将该表倒序再替换,形象的来说就是

ACEG->M->Y    ADEG->R->Q    BCEG->K->I    BDEG->S->E

脚本

list1 = {'M':'ACEG','R':'ADEG','K':'BCEG','S':'BDEG','A':'ACEH','B':'ADEH','L':'BCEH','U':'BDEH','D':'ACEI','C':'ADEI','N':'BCEI','V':'BDEI','H':'ACFG','F':'ADFG','O':'BCFG','W':'BDFG','T':'ACFH','G':'ADFH','P':'BCFH','X':'BDFH','E':'ACFI','I':'ADFI','Q':'BCFI','Y':'BDFI'}
list2 = original_list = ['M','R','K','S','A','B','L','U','D','C','N','V','H','F','O','W','T','G','P','X','E','I','Q','Y']
list2_re =list2[::-1]

ori_str = 'BCEHACEIBDEIBDEHBDEHADEIACEGACFIBDFHACEGBCEHBCFIBDEGBDEGADFGBDEHBDEGBDFHBCEGACFIBCFGADEIADEIADFH'

flag_1 = ''
for i in range(0,len(ori_str),4):
    _val = ori_str[i:i+4]
    for key, val in list1.items():
        if val == _val:
            flag_1 += key
print(flag_1)
flag = ''
for i in flag_1:
    for j,k in enumerate(list2):
        if i == k:
            print(i+"--"+k)
            flag += list2_re[j]
            print(flag)
print(flag) 

得到GWHTTOYSAYGREENTEAISCOOL

GWHT是羊城杯的头

flag{TOYSAYGREENTEAISCOOL}

参考:https://www.bilibili.com/read/cv13794214
posted @ 2022-06-29 20:16  B0mbax  阅读(323)  评论(0编辑  收藏  举报