前言:

  前面我们刚刚学过了解Morsecode,现在我们将继续学习

不仅仅是Morse:

  题目:--/.-/-.--/..--.-/-..././..--.-/..../.-/...-/./..--.-/.-/-./---/-/...././.-./..--.-/-.././-.-./---/-.././..../..../..../..../.-/.-/.-/.-/.-/-.../.-/.-/-.../-.../-.../.-/.-/-.../-.../.-/.-/.-/.-/.-/.-/.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/.-/.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../-.../.-/.-/.-/-.../-.../.-/.-/-.../.-/.-/.-/.-/-.../.-/-.../.-/.-/-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/-.../-.../.-/.-/-.../-.../-.../.-/-.../.-/.-/.-/-.../.-/-.../.-/-.../-.../.-/.-/.-/-.../-.../.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../-.../.-/.-/-.../-.../.-/.-/-.../.-/.-/-.../.-/.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/.-/-.../.-/-.../.-/.-/-.../-.../.-/-.../.-/.-/.-/.-/-.../-.../.-/-.../.-/.-/-.../-.../.-   

分析:由. - 组成 /分割,很明显是Morsecode,先写个python程序解码一下,与之前写的程序稍有不同,之前是空格分隔,这次是/分割,基本原理相同,下面上代码:

 1 import re
 2 
 3 with open(r'F:\桌面\tmp\44aaac34ab1449fe8df001fcb0ec4e24.txt','r') as f:
 4     data = f.read()
 5     print(data)
 6 
 7 code_dict = {'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....',
 8              'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.',
 9              'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
10              'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
11              '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', '.': '.-.-.-', ':': '---...',
12              ',': '--..--', ';': '-.-.-.', '?': '..--..', '=': '-...-', "'": '.----.', '/': '-..-.', '!': '-.-.--',
13              '——': '-....-', '-': '..--.-', '"': '.-..-.', '(': '-.--.', ')': '-.--.-'}    
14 
15 
16 def Morsecode(data):
17     m=''
18     pattern = re.compile(r'[.-]{1,}')
19     result = pattern.findall(data)
20     print(result)
21     
22     for i in result:
23         for j in code_dict:
24             if i == code_dict[j]:
25                 m += j
26     return m
27 
28 print(Morsecode(data).lower())
29 str = Morsecode(data).lower()
30 str = str[30:]
31 
32 CODE_TABLE = { #培根字典
33     'aaaaa':'a','aaaab':'b','aaaba':'c','aaabb':'d','aabaa':'e','aabab':'f','aabba':'g',
34     'aabbb':'h','abaaa':'i','abaab':'j','ababa':'k','ababb':'l','abbaa':'m','abbab':'n',
35     'abbba':'o','abbbb':'p','baaaa':'q','baaab':'r','baaba':'s','baabb':'t','babaa':'u',
36     'babab':'v','babba':'w','babbb':'x','bbaaa':'y','bbaab':'z'
37 }
38 
39 def Bacondecode(data):
40     m = ''
41     pattern = re.compile('[ab]{5}')
42     result = pattern.findall(data)
43     
44     for i in result:
45         for j in CODE_TABLE:
46             if i == j:
47                 m += CODE_TABLE[j]
48     return m
49 print(Bacondecode(str))
50     

代码我虽然一起给出了,但是其中还是有个分析的过程,我们先利用编写的Morsecode函数,将最原始的摩斯密码解成字符串,结果如下:

1 may-be-have-another-decodehhhhaaaaabaabbbaabbaaaaaaaabaababaaaaaaabbabaaabbaaabbaabaaaababaabaaabbabaaabaaabaababbaabbbabaaabababbaaabbabaaabaabaabaaaabbabbaabbaabaabaaabaabaabaababaabbabaaaabbabaabba

通过简单分析,不难发现它提示我们还有其他编码,然后我们看到后面都是a和b,不由怀疑可能是2进制要转换成16进制,然后求ASCII码,或者是培根密码,我们先分析一下有没有是培根密码,重所周知,培根密码都是五个一组,所以我们只需要将后面的ab提取然后判断字符个数,结果为170,故可以为培根密码,先按照培根密码解密,结果如下:

1 attackanddefenceworldisinteresting

可见应该是先用培根密码加密,然后再用摩斯编码编码,故我们应该按照相反的反向解密

参考链接:

https://blog.csdn.net/weixin_44426869/article/details/102616840

 

https://www.cnblogs.com/yuanchu/p/13492393.html

 posted on 2020-08-12 19:24  缘初  阅读(563)  评论(0编辑  收藏  举报