当前位置: 首页 > article >正文

CTF之密码学(摩斯密码)

一、历史背景

摩尔斯电码发明于1837年,是一种早期的数字化通信形式。它最初由艾尔菲德·维尔和摩尔斯等人构思,通过点、划和中间的停顿,把各个字元以及标点符号彼此独立地发送出去。这种标识不同符号的方案后来被放入摩尔斯的专利中,形成了现在所熟知的美式摩尔斯电码。世界上第一条电报就是通过摩尔斯电码传送的。

二、代码组成

摩尔斯电码的代码包括五种:

  1. 点信号:短促的点信号“・”,读作“滴”(Di)。
  2. 划信号:保持一定时间的长信号“—”,读作“嗒”(Da)。
  3. 点和划之间的停顿:表示点信号和划信号之间的分隔。
  4. 每个字符之间短的停顿:用于分隔不同的字符。
  5. 每个词之间中等的停顿以及句子之间长的停顿:用于分隔单词和句子。

三、编码规则

摩尔斯电码通过点和划的不同组合来表示不同的字母和数字。每个字母和数字都有一个唯一的摩尔斯电码组合。例如:

  1. SOS:国际通用的求救信号,在摩尔斯电码中表示为“... --- ...”。
  2. Hello:在摩尔斯电码中表示为“·····-·-·-·”。
  3. I love you:在摩尔斯电码中是“··-·—···--·-·--”。

四、应用场景

摩尔斯电码在通信领域有着广泛的应用,尤其是在需要可靠且简单的通信方式时。以下是一些常见的应用场景:

  1. 电报通信:摩尔斯电码最初就是为电报通信而设计的,它允许通过简单的点和划信号来传输信息。
  2. 紧急求救:由于摩尔斯电码的简单性和可靠性,它经常被用于紧急求救信号。例如,SOS就是摩尔斯电码中表示求救的通用信号。
  3. 隐蔽通信:在某些情况下,摩尔斯电码可以用于隐蔽通信,因为它不需要复杂的设备或技术,只需要简单的点和划信号即可。

五、解密方法

解密摩尔斯电码通常需要以下步骤:

  1. 获取编码表:首先,需要了解摩尔斯电码的编码规则,这通常可以通过互联网或使用摩尔斯电码编码表来完成。
  2. 分析信号:通过分析接收到的点和划信号的组合形式,可以逐个分离出字母或数字。
  3. 识别单词和句子:在摩尔斯电码中,单词之间通常用空格符号来分隔。因此,在解密的过程中要注意识别空格符号,并找出每个单词的摩尔斯电码组合。
  4. python解密程序

txt = input().strip()

if '0' in txt:
    table = ''.maketrans('01','.-')
    txt = txt.translate(table).split()
else:
    txt = txt.split()

morse_code_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',
    '..--..': '?', '-..-.': '/', '-.--.': '(', '-.--.-': ')', '-....-': '-',
    '.-.-.-': '.', '--..--': ',', '.----.': '\'', '---...': ':', '-.-.-.': ';',
    '-...-': '=', '.-.-.': '+', '-.-.--': '!','..--.-':'_'}
#reversed_morse_code_dict = {value: key for key, value in morse_code_dict.items()}

for i in txt:
    print(morse_code_dict.get(i),end="")

例题easy_crypto - Bugku CTF平台


http://www.kler.cn/a/412045.html

相关文章:

  • Elasticsearch:Retrievers 介绍
  • GreatSQL 运行时内存太高,超过90%怎么办
  • 第六届国际科技创新学术交流大会暨新能源科学与电力工程国际(NESEE 2024)
  • SAP 零售方案 CAR 系统的介绍与研究
  • vxe-modal VxeUI 窗口组件弹窗多窗口模式
  • .net 8使用hangfire实现库存同步任务
  • Docker: 教程07 - ( 如何对 Docker 进行降级和升级)
  • Java LinkedList 讲解
  • 数据结构(汇总)
  • 生成对抗网络(简要介绍)
  • Python从0到100(七十四):计算机视觉-距离变换算法的实战应用(文末送书)
  • 8款Pytest插件助力Python自动化测试
  • 【网络信息资源】HTML的使用
  • (五)Ubuntu22.04+Stable-Diffusion-webui AI绘画 模型转换插件安装及其使用
  • 【VUE3】VUE组合式(响应式)API常见语法
  • 光耦——光伏储能的隐形动力,引领绿色能源迈向新纪元
  • 论文阅读:A Software Platform for Manipulating theCamera Imaging Pipeline
  • unity | 动画模块之卡片堆叠切换
  • 34 基于单片机的指纹打卡系统
  • 林业产品推荐系统:Spring Boot技术内幕
  • java实现归并排序和快速排序
  • Linux操作系统2-进程控制3(进程替换,exec相关函数和系统调用)
  • 【Linux】/proc/sys/vm/drop_caches
  • 使用 Nginx 在 Ubuntu 22.04 上安装 LibreNMS 开源网络监控系统
  • i春秋-文件包含绕过(PHP伪协议的使用)
  • Altium Designer学习笔记 22-23 PCB快捷键设置_PCB模块化布局