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

这不是摩斯密码

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

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

                             BugkuCTF:这不是摩斯密码,easy_crypto,简单加密_第1张图片

 

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)

结果:

                                

 

 

 

 

你可能感兴趣的:(decrypt)