BugkuCTF:这不是摩斯密码,easy_crypto,简单加密

本文介绍了参与BugkuCTF时遇到的一个挑战,题目名为'这不是摩斯密码',但实际上可能涉及到了brainfuck语言和简单的加密方式。通过对01序列的分析,作者联想到了摩斯电码,并尝试了base64加密和凯撒加密的组合,通过脚本验证最终解密出密文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这不是摩斯密码

+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.<
++++[ ->+++ +<]>+ +++.< +++[- >---< ]>--- .---- .<+++ ++++[ ->--- ----<
]>--- ----- ----- .<+++ ++++[ ->+++ ++++< ]>+++ ++.<+ +++++ +[->- -----
-<]>. <++++ ++++[ ->+++ +++++ <]>++ .<+++ [->-- -<]>- ----. <++++ +++[-
>---- ---<] >---- ----. +++++ +..++ +++.+ .<+++ [->-- -<]>- --.<+ +++++
+[->+ +++++ +<]>+ ++.++ +.+++ +++++ +.--- -.+++ ++.<+ ++[-> +++<] >++++
++.<

这些符号联想到brainfuck,去找bugkuCTF的小工具(关于页面里):

                             

 

easy_crypto

长短不一的01序列,联想到摩斯电码,百度一下相关的规则写个脚本:

str = input()
key = str.split(" ")
dic_morse = {'01': 'A',
        '1000': 'B',
        '1010': 'C',
        '100': 'D',
        '0': 'E',
        '0010': 'F',
        '110': 'G',
        '0000': 'H',
        '00': 'I',
        '0111': 'J',
        '101': 'K',
        '0100': 'L',
        '11': 'M',
        '10': 'N',
        '111': 'O',
        '0110': 'P',
        '1101': 'Q',
        '010': 'R',
        '000': 'S',
        '1': 'T',
        '001': 'U',
        '0001': 'V',
        '011': 'W',
        '1001': 'X',
        '1011': 'Y',
        '1100': 'Z',
        '01111': '1',
        '00111': '2',
        '00011': '3',
        '00001': '4',
        '00000': '5',
        '10000': '6',
        '11000': '7',
        '11100': '8',
        '11110': '9',
        '11111': '0',
        '001100': '?',
        '10010': '/',
        '101101': '()',
        '100001': '-',
        '010101': '.',
        '110011': ',',
        '011010': '@',
        '111000': ':',
        '101010': ':',
        '10001': '=',
        '011110': "'",
        '101011': '!',
        '001101': '_',
        '010010': '"',
        '10110':'(',
        '1111011': '{',
        '1111101': '}'
        };
for elem in key:
    print(dic_morse[elem].lower(), end='')  # 需要注意的是,结果跟输入的字符序列不一样,中间不需要空格隔开,还要将相应的大写字母转化为小写字母

结果如下:

 

简单加密

密文:

e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA

由 AA 两个相同的字符想到了base64后面的那两个 ==

猜想是先base64加密后进行凯撒加密,如果猜想正确,那么这就是凯撒的4位后移('A'的ascii是65,'='的ascii是61),写个脚本试试:

import base64

string1 = "e6Z9i~]8R~U~QHE{RnY{QXg~QnQ{^XVlRXlp^XI5Q6Q6SKY8jUAA"
string2 = ""
for i, elem in enumerate(string1):
    string2 += chr(ord(elem) - 4)
string2 = base64.b64decode(string2)
print(string2)

结果:

                                

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值