带你走入CTF之路-加密Crypto(一) – 作者:凯信特安全团队

引言:

       所有从事网络安全相关职业的人员都或多或少了解CTF,CTF(Capture The Flag)中文译作夺旗赛,作为考验自身综合技术能力和发散式逻辑思维与团队协作能力的网络安全赛事,一直以神坛一般的存在。CTF的本质是运用一切资源获取到题目答案也就是Flag。本系列文章将围绕CTF中涉及的加密与密码学相关初级竞赛题目进行解题思路、技巧、知识的讲解,带领初入CTF的兴趣者们感受密码学的魅力。

 

1. 题目:滴答~滴

题目内容:-… -.- -.-. – ..-. — .. … -.-.

图片.png本题要点:摩尔斯电码(摩斯密码)的加密与解密

       对于没有摩尔斯电码基础的人来说,看到题目内容中点与横杠的加密信息会毫无头绪,题目给出的信息是需要解密得到最终的Flag,那么解密思路至关重要。

 解题思路:

1、 理解题目名称所给出的提示;

2、 明确题目内容涉及加密知识;

3、 确定题目内容加密类型与方式;

4、 思考解密方法与过程;

5、 尝试通过解密得到明文。

 

解题过程及分析:

      初见题目名称“滴答~滴”可能并没有什么思路,但仔细回想既然是一种加密方式,哪种加密方式是与滴答~滴这种声音相关,可能有些人会从电影、书本中了解到在二战时期极常见到传输军事情报的加密方式-摩尔斯电码(摩斯密码)。

       知识补充:摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。摩尔斯电码由两种基本信号组成:短促的点信号“.”,读“滴”;保持一定时间的长信号“—”,读“嗒”。间隔时间:滴=1t,嗒=3t,滴嗒间=1t,字符间=3t,单词间=7t。

       再从题目内容给出的密文分析,密文中只有两种符号且无序,应该是部分符号通过不同的组合来代表解密后的字符。解密过程具有对应性特征,摩斯密码正是通过符号组合对应字母来进行加密。由此可判定出题目内容为摩斯密码加密后的密文。

      确定了加密类型为摩斯密码,部分符号通过不同的组合来代表解密后的字符。因为题目中未给出加密方式相关信息,所以默认为使用国际通用的加密表进行加密。

     思考既然是通过密码表进行对应加密,那么获取到密码表后就可以进行反向对应解密。下图为国际通用摩斯密码表:

图片.png解密原理讲解:

尝试根据标准摩尔斯电码对照表将密文字段逐一对照解密出单个英文字母,然后将英文字母拼接起来。

密文:-…-.- -.-. – ..-. — .. … -.-.

因密码中间存在空格分隔所以根据密码表逐个对应

-… -.–.-. – ..-. — .. … -.-.

B   K   C   T  F   M I   S   C

得到明文:BKCTFMISC

 尝试将得到明文按照答案格式填入KEY{BKCTFMISC},解题成功,因此字符串BKCTFMISC为本题Flag。

       当然以上为讲解原理而进行手工解密,如果摩斯密码长度较长则不适用,可以进行在线摩斯密码解密,解密地址见文章结尾参考资料。

如果在断网的情况下还可以编写Python脚本进行解密,代码如下:

#!/usr/bin/python

#-*- coding: UTF-8 -*-

from__future__ import print_function

a =raw_input(“input the string:”)

s =a.split(” “)

dict= {‘.-‘: ‘A’,

        ‘-…’: ‘B’,

        ‘-.-.’: ‘C’,

        ‘-..’:’D’,

        ‘.’:’E’,

        ‘..-.’:’F’,

        ‘–.’: ‘G’,

        ‘….’: ‘H’,

        ‘..’: ‘I’,

        ‘.—‘:’J’,

        ‘-.-‘: ‘K’,

        ‘.-..’: ‘L’,

        ‘–‘: ‘M’,

        ‘-.’: ‘N’,

        ‘—‘: ‘O’,

        ‘.–.’: ‘P’,

        ‘–.-‘: ‘Q’,

        ‘.-.’: ‘R’,

        ‘…’: ‘S’,

        ‘-‘: ‘T’,

        ‘..-‘: ‘U’,

        ‘…-‘: ‘V’,

        ‘.–‘: ‘W’,

        ‘-..-‘: ‘X’,

        ‘-.–‘: ‘Y’,

        ‘–..’: ‘Z’,

        ‘.—-‘: ‘1’,

        ‘..—‘: ‘2’,

        ‘…–‘: ‘3’,

        ‘….-‘: ‘4’,

        ‘…..’: ‘5’,

        ‘-….’: ‘6’,

        ‘–…’: ‘7’,

        ‘—..’: ‘8’,

        ‘—-.’: ‘9’,

        ‘—–‘: ‘0’,

        ‘..–..’: ‘?’,

        ‘-..-.’: ‘/’,

        ‘-.–.-‘: ‘()’,

        ‘-….-‘: ‘-‘,

        ‘.-.-.-‘: ‘.’

        };

foritem in s:

    print (dict[item],end=”)

#print(s)

注:此脚本在Python2环境下运行,代码原文链接见文章结尾参考资料。

 

总结:

       通过此题我们学习到CTF Crypto中摩尔斯电码(摩斯密码)的加密与解密,以及遇到加密类题目分析思路及解题思路与方法。在密码学中的加密解密具有一定的逻辑思维与技巧,需要熟练掌握各种加解密技术、方法、思路,学会通过分析运用自己的理解,找到合理的解题方法。

 

参考资料:

在线解题

https://www.jb51.net/tools/morse.htm

http://ctf.ssleye.com/morse.html

http://www.bejson.com/enc/morse/

https://tool.lu/morse/

代码原文

https://blog.csdn.net/qq_23100787/article/details/79035153

来源:freebuf.com 2020-03-13 22:10:19 by: 凯信特安全团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论