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