实验链接

通过学习本实验理解摩尔斯电码和栅栏密码的编码解码过程;掌握编写摩尔斯电码的编码解码程序和编写多功能栅栏密码的编码解码程序。

链接:http://www.hetianlab.com/expc.do?ce=64d3e661-ebbb-41fd-a220-a17d608f994e

实验简介

实验所属系列: 密码学

实验对象: 本科/专科信息安全专业

相关课程及专业: Windows编程,C语言,汇编语言

实验类别: 实践实验类

预备知识

  • 摩尔斯电码

    • 摩尔斯电码的概念:

      摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,发明者有争议,是美国人塞缪尔·莫尔斯或者艾尔菲德·维尔。 摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个词之间中等的停顿以及句子之间长的停顿。

    • 摩尔斯电码的应用:

      摩斯密码编码简单清晰,二义性小,编码主要是由两个字符表示:"."、"-",一长一短,这在很多情况下应用很多,比如发送求救信号。电影《风声》中就是采用在衣服上缝出摩尔密码,将消息传播出去。动漫《名侦探柯南》中《推理对决,新一vs冲矢昴》(tv511)就是用了这种方法。

      在利用摩尔密码灯光求救的时候,定义:灯光长亮为"-",灯光短亮为".",那么就可以通过手电筒的开关来发送各种信息,例如求救信息。

      如果灯光是按照“短亮 暗 短亮 暗 短亮 暗 长亮 暗 长亮 暗 长亮 暗 短亮 暗 短亮 暗 短亮”这个规律来显示的话那么它就意味是求救信号SOS。

      因为SOS的摩尔编码为:··· --- ··· ,按照上面的规定即可进行灯光编码。这个编码其实非常简单,三短、三长、三短。

      除了灯光之外,利用声音(两种区别的声音)也可以发出求救信号。这种求救方式是我们都应该进行了解的,也许在必要的时候就可以派上用场。

      2015年1月,遭到恐怖组织“伊斯兰国”(IS)绑架的日本人质后藤健二被斩首,消息震惊国际,当年2月1日在网络上流传着一段由日本网友的解读影片,内容指出后藤在IS所发布的影片中,相较于右边的人质汤川遥菜相比,后藤眨眼的次数显得较为频繁,有日本网友将后藤健二画面放大,日本网友解密认为,后藤是透过眨眼来打出摩斯密码,而其所要透露的信息是“不要救我”,引起不少网友议论。

      摩尔斯电码被广泛的应用于很多动漫以及影视剧中,包括在早期的战争中也有很多的运用.

  • 栅栏密码

    • 栅栏密码的概念:

      所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)也就是说栅栏密码是移位密码的一种。

    • 栅栏密码的应用:

      其实栅栏密码在现实生活中的应用很少,基于它爆破破解的难度低就不太可能用来保存什么重要的数据,出现的场合主要是一些ctf竞赛题,作为古典密码中算是运用最广的一种,在密码学的题目中一般都会对最终的结果进行栅栏加密。

实验目的

  • 理解摩尔斯电码和栅栏密码的编码解码过程

  • 掌握编写摩尔斯电码的编码解码程序

  • 掌握编写多功能栅栏密码的编码解码程序

实验环境

服务器:Kali Linux 64位 ,IP地址:随机分配

辅助工具:任意一门语言的编译环境

请在实验机内下载文件及源码:http://tools.hetianlab.com/tools/Morse.zip

实验步骤

步骤一

作为一战期间德意志帝国的一名密码学专家,某日通过无线电截获了协约国的两份秘密信件,貌似包含了协约国集团的作战计划和后续的战略部署,但是两份信件好像都经过某种不知名的编码方式进行加密了,作为专家的你能否通过自己的力量解密这两封信件,扭转战争的局势呢?

我们的实验任务分为3个部分:

  • 理解摩尔斯编码和栅栏密码的加密解码原理

  • 使用任意一门语言,实现对指定文件中的摩尔斯编码进行解码,以及对指定文件进行摩尔斯编码。

  • 使用任意一门语言,编写一个多功能栅栏加解密程序,实现以下但不限于以下的功能:

    • 对指定文件中的字符串进行栅栏穷举,显示出分为几栏时结果是什么?

    • 能够指定分几栏去进行解密(注意差错处理)

    • 能够指定分几栏去进行加密(注意差错处理)

任务描述:阅读以下的资料,了解摩尔斯密码和栅栏密码的编码原理以及解码原理,并回答相应的问题。

  • 摩尔斯密码编码原理

    摩尔斯密码是替换密码的一种,通过特定的密码置换表对相应的字符进行转换就是摩尔斯密码的编码原理,由于转换方式太过于简单以及编码之后特征太明显,到了今天我们已经很难从影视作品或是简单的ctf竞赛题目之外来找到摩尔斯密码的应用了,但不可否认他在密码学的发展过程中所起到的作用,通过学习摩尔斯密码我们也可以初步体会到替换密码的魅力。

    以下就是摩尔斯密码的替换表。

    26个字母的摩斯密码表:

    数字的摩斯密码表:

    标点符号的摩斯密码表:

  • 栅栏密码编码原理

    与摩尔斯密码相对,栅栏密码应该算是古典密码学中最经典的移位密码了,两者可以说代表了密码学中最重要的两个概念(扩散和混淆)。

    我们以2栏栅栏密码为例来讲解它的加密和解密过程。

    比如明文:THERE IS A CIPHER

    两个一组,得到:(TH) (ER) (E ) (IS) ( A) © (IP) (HE) (R )

    先取出第一个字母:TEEI IHR

    再取出第二个字母:HR SACPE

    连在一起就是:TEEI IHRHR SACPE

    还原为所需密码。

    而解密的时候,我们先把密文从中间分开,变为两行:

    TEEI IHR

    HR SACPE

    再按上下上下的顺序组合起来:

    THERE IS A CIPHER

    那么将2栏密码扩展到多栏呢?

    相信你也已经注意到,在之前的明文中,我在CIPHER这个单词之后加了一个空格,那么目的相信你也已经猜测出来,就是为了让明文字符串的长度是2的倍数,那么栅栏密码的分栏的第一个前提就是分的栏数是明文长度的倍数,这样才会分出来的每个栏长度都一样。

    对于多栏,我们还是用上面的例子来讲解。

    上面的明文字符串(THERE IS A CIPHER )的长度是18,所以我们可以把他分为2,3,4,6,9栏,这里我们以6栏为例。

    以每个元素相隔6个字符分割出栅栏。

    第一栏:TII

    第二栏:HSP

    第三栏:E H

    第四栏:RAE

    第五栏:E R

    第六栏: C

    连接在一起就是:TIIHSPE HRAEE R C

小实验:在压缩包里,Morse cipher文本保存着使用摩尔斯密码加密后的密文,而Fence cipher文本中保存着栅栏密码加密后的密文。其中Morse cipher文本文件是没有密码的,而当你对Morse cipher文本进行破译之后就可以得到Fence cipher压缩包的密码了。

步骤二

任务描述:破解Morse cipher文本中的Morse 密文。

实验:使用任意一门语言,实现对指定文件中的摩尔斯编码进行解码,以及对指定文件进行摩尔斯编码。

实验指导:基于上面我们对于摩尔斯编码的原理的理解,我们可以知道摩尔斯编码当明文加密的长度比较大的时候,密文看起来会很复杂,但是说到底就是一种简单的替换,因此我们可以建立一种对应的关系,类似于Python中的字典这样的形式,对密文进行逐字符的替换。

查看示例文本

cat text.txt

对示例文本进行摩尔斯编码

python ./morse.py -e text.txt -o ./test.txt

查看编码后的文本

cat test.txt

对编码后的文本进行解码

python ./morse.py -d test.txt -o ./decode_test.txt

查看解码结果

cat decode_test.txt

对Morse_text.txt文件解码:

最终观察111.txt文件可找到密文:

文件夹破解成功:

步骤三

任务描述:通过对摩尔斯密文的破译,我们能得到最终机密文件的压缩密码,基于最终文本的名称以及他它的密文(长度大于主流的加密长度以及组成的字符为26个英文字母),我们可以断定这段密文是基于栅栏密码进行加密的,但是我们没有办法去判断它是分成几栏进行加密的密文,所以需要我们对可能的结果进行穷举尝试,但基于一点,最终获取的明文一定是按照栅栏加密的要求进行加密的。

实验:使用任意一门语言,编写满足以下功能的程序:

  • 对指定文件中的字符串进行栅栏穷举,显示出分为几栏时结果是什么?

  • 能够指定分几栏去进行解密(注意差错处理)

  • 能够指定分几栏去进行加密(注意差错处理)

查看示例文本

cat example.txt

对示例文本进行栏数为4的栅栏编码

python ./zhalan.py -e example.txt 4 -o encode_test.txt

查看编码结果

cat encode_test.txt

直接在屏幕上打印编码结果

python ./zhalan.py -e ./example.txt 4 -p

对编码结果进行可能的爆破解码

python ./zhalan.py -d encode_test.txt -a -o decode_test.txt

查看解码结果

cat decode_test.txt

直接对结果进行打印

python ./zhalan.py -d encode_test.txt -a -p

指定解码栏数为4

python ./zhalan.py -d encode_test.txt 4 -o ./4.txt

查看解码结果

cat 4.txt

直接对解码结果进行打印

python ./zhalan.py -d encode_test.txt 4 -p

实验完成!

尝试对Fence_text.txt解密:

观察到分为6栏的答案较为合理,指定解码栅栏为6:

实验完成。

答题

摩尔斯电码和栅栏密码 ——合天网安实验室学习笔记相关推荐

  1. BurpSuite实战——合天网安实验室学习笔记

    burpsuite是一款功能强大的用于攻击web应用程序的集成平台,通常在服务器和客户端之间充当一个双向代理,用于截获通信过程中的数据包,对于截获到的包可以人为的进行修改和重放. 此BurpSuite ...

  2. 使用burp进行暴力破解 ——合天网安实验室学习笔记

    实验链接 通过该实验掌握burp的配置方法和相关模块的使用方法,对一个虚拟网站使用burp进行暴力破解来使网站建设者从攻击者的角度去分析和避免问题,以此加强网站安全. 链接:http://www.he ...

  3. CSRF攻击实验 ——合天网安实验室学习笔记

    实验链接 本实验以PHP和Mysql为环境,展示了CSRF攻击的原理和攻击过程.通过实验结果结合对攻击代码的分析,可更直观清晰地认识到Web安全里这种常见的攻击方式. 链接:http://www.he ...

  4. 绕过黑名单检查实现文件上传1 ——合天网安实验室学习笔记

    实验链接 文件上传指将客户端数据以文件形式封装,通过网络协议发送到服务器端.在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存.了解文件上传漏洞产生的原因,掌握漏洞的利用方法. 链接:http: ...

  5. 【愚公系列】2022年04月 编码解码-摩尔斯电码和栅栏密码

    文章目录 一.摩尔斯电码和栅栏密码的介绍 1.摩尔斯电码 1.1 摩尔斯电码的概念 1.2 摩尔斯电码的应用: 2.栅栏密码 2.1 栅栏密码的概念 2.2 栅栏密码的应用 2.3 栅栏密码的脚本 3 ...

  6. 合天网安实验室CTF-Steg150-一段欢快的曲调

    合天网安实验室CTF-Steg150-一段欢快的曲调 题目描述   滴滴 相关附件   stego100.wav 题目链接 参考解题步骤 1.下载的附件是一段wav格式的音频,打开听了一下,确实是欢快 ...

  7. 合天网安就业班_CTF挑战赛-合天网安实验室

    [TOCCTF挑战赛-合天网安实验室逆向解析] CTF挑战赛-合天网安实验室​sourl.cn 1.逆向100 修改后缀为.apk 安卓模拟器打开,发现要求输入Password 用Android逆向助 ...

  8. 合天网安实验室CTF-基础50-0x01

    合天网安实验室CTF-基础50-0x01 最近无聊时准备刷点题,由简到难慢慢来吧 题目描述   真的不能再简单了! 相关附件   misc50.zip 题目链接 参考解题步骤 1.下载下来的压缩包解压 ...

  9. 合天网安实验室CTF-Web100-Give Me Flag

    合天网安实验室CTF-Web100-Give Me Flag 题目描述   哎,不小心把代码弄乱惹 相关附件   web100.zip 题目链接 参考解题步骤 1.下载附件打开后是一段JavaScri ...

最新文章

  1. Linux很实用的命令查找软件安装目录
  2. 避免HttpClient的”javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常
  3. ubuntu中查找文件后高亮_ubuntu 中查找文件的命令
  4. leetcode算法题--最接近的三数之和
  5. 【分布式】分布式事务解决方案概述
  6. 天赋差的程序员,难道就只能半途而废吗?
  7. pppoe路由桥混合模式启用_无线路由器怎么设置
  8. 使用envi将遥感数据从uint16转为uint8
  9. linux 用户与工作组
  10. 游戏开发如此简单?我直接创建了一个游戏场景【python 游戏实战 02】
  11. Pano2VR生成的HTML文件打开为黑屏
  12. 微信公众号自动回复如何添加超链接
  13. CDN常见问题-Trouble Shooting(二)
  14. Android开发实践:设计安卓应用以计算BMI指数
  15. 苏州园林年卡 办理与使用 附 苏州园林门票价格
  16. 三阶魔方背后的神奇数学
  17. nginx 过滤ip
  18. 51单片机(1)单片机概述
  19. 2023年求职日记:华为成都OD岗
  20. android7.1自带壁纸,RK3399 Android7.1 修改壁纸

热门文章

  1. 全国计算机vb考试编程,计算机等级考试VB编程8个优良习惯
  2. 室温环境计算机控制,中央空调自控系统的几点见解
  3. 马向胡漠人稀处,剑指浙江西子旁 ——记2050大会
  4. C# textbox 屏蔽汉字and英文,只接受数字
  5. 如何判断IP地址是否为同一网段
  6. 从init3 (或其他命令行模式返回到图形界面)
  7. 全球与中国餐饮机器人市场深度研究分析报告
  8. mininet自建topo后查看信息的一些操作
  9. 从零开始学习JavaScript:轻松掌握编程语言的核心技能⑥
  10. 基于php的企业员工在线留言板