技术流丨古典密码学梳理及解密脚本(二)

admin 2022年10月8日14:22:53评论100 views字数 3443阅读11分28秒阅读模式

技术流丨古典密码学梳理及解密脚本(二)


换位加密

换位加密算法是一种较为简单的加密算法,由明文、密钥得出最后的密文,就是通过密钥对明文进行加密,换个位置。


1.列位移密码

列移位密码是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。

例子:
明文The quick brown fox jumps over the lazy dog
密钥how are u
填入5行7列表(事先约定填充的行列数,如果明文不能填充完表格可以约定使用某个字母进行填充)按how are u在字母表中的出现的先后顺序进行编号,我们就有a为1,e为2,h为3,o为4,r为5,u为6,w为7,所以先写出a列,其次e列,以此类推。

技术流丨古典密码学梳理及解密脚本(二)


那么密文就是:

qoury inpho Tkool hbxva uwmtd cfseg erjez




替换加密

替换加密法,是一种用一个字符替换另一个字符的加密方法。


1.云影加密

云影密码,他仅包含01248五个数字,其中的0用于分割,其余数字用于加和操作之后转换为m。m只包含字母(不区分大小写),将字母在字母表的排位分解为若干数字(只包含1248这四个数字)之和,然后将这些数字排列在一起便是一个字母的c。若干字母的c之间用0作分割线。

看不懂,没关系,直接看例子。


例如:

m = "QIANXIN" 加密之后就是c = "88108101084208880810842"

解密:881 81 1 842 888 81 842各组相加17 9 1 14 24 9 14对应Q I A N X I N连起来就是m,也就是明文了。

针对云隐密码我这里也准备了解密脚本。输入密文即可解密。同时也支持加密。

#!/usr/bin/python# -*- coding=utf8 -*-"""# @Author : pig# @CreatedTime:2019-11-2423:54:02# @Description :这种加密方式仅使用01248这5种数字来进行,其中0用来唯一表示间隔,其他数字用加法和表示替换密文。再使用数字1~26表示字母A~Z。如:18 = 1+8 = 9 = I,1248 = 1+2+4+8 = 15 = O
特点:密文中仅存在01248,加密对象仅有字母"""#python2
def de_code(c): dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)] flag = [] c2 = [i for i in c.split("0")] for i in c2: c3 = 0 for j in i: c3 += int(j) flag.append(dic[c3 - 1]) return flag
def encode(plaintext): dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)] m = [i for i in plaintext] tmp = [];flag = [] for i in range(len(m)): for j in range(len(dic)): if m[i] == dic[j]: tmp.append(j + 1) for i in tmp: res = "" if i >= 8: res += int(i/8)*"8" if i%8 >=4: res += int(i%8/4)*"4" if i%4 >=2: res += int(i%4/2)*"2" if i%2 >= 1: res += int(i%2/1)*"1" flag.append(res + "0") print ("".join(flag)[:-1])
#c = input("输入要解密的数字串:")c='884080810882108108821042084010421'print (de_code(c))
#加密 将AAAA换成需要加密的字符串即可#print (encode('AAAAAAAA'))


技术流丨古典密码学梳理及解密脚本(二)




2.当铺密码

当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。


例如:

王:该字外面有 6 个出头的位置,所以该汉字对应的数字就是 6;

口:该字外面没有出头的位置,那就是0;

人:该字外面有 3 个出头的位置,所以该汉字对应的数字就是 3;


下面是一段由当铺密码组成的字符:

密文:王夫 井工 夫口 由中人 井中 夫夫 由中大

对应:67 84 70 123 82 77 125

翻译成 ASCII 码:CTF{RM}


这里笔者也给大家分享一些我在网上搜集到的脚本。


dh = '田口由中人工大土士王夫井羊壮'ds = '00123455567899'
cip = '王夫 井工 夫口 由中人 井中 夫夫 由中大's = ''for i in cip: if i in dh: s += ds[dh.index(i)] else: s += ' 'print(s)


技术流丨古典密码学梳理及解密脚本(二)


解密得到的数字看上去像是ascii码。那么我们就再使用ascii码转字符串的脚本。

得到我们最后的答案CTF{RM}


# /usr/bin/env python#coding:utf-8
def dtoa(): str = "67 84 70 123 82 77 125" b = "" for i in str.split(" "): b += chr(int(i)) print(b)
if __name__ == '__main__': dtoa()


技术流丨古典密码学梳理及解密脚本(二)



3.日历密码

这里向大家介绍下日历密码是如何加密的。先给大家说几点日历密码的原则:

(1)1—26代表a—z的26个英文字母;

(2)M,T1,W,T2,F,S1,S2分别代表周一到周日七天(英文首字母代替,1,2为了有别,也人为增加密度);

(3)密钥即密码表以2020年7月份的日历为密码表,我们来加密这个单词:dictionary


技术流丨古典密码学梳理及解密脚本(二)


技术流丨古典密码学梳理及解密脚本(二)



接下来我们开始写密文。

第一步,用数字代替明文中的字母,即DlCTlONARY 4 9 3 20 9 15 14 1 18

第二步,写密文。

方法:例如单词首字母D用4代替,则在日历(2020年7月份日历)中找到4号,发现是本月第一个星期六,所以用S11表示;又如第七个字母N用数字14代表,找到14号,发现是本月第二个星期二,用T12代表。

如此类推,得到了我们的密文:

S11 T22 F1 M3 T22 W3 T12 W1 S13

解密的话,我们反推回去就行了。


4.摩斯密码

终于轮到了大名鼎鼎的摩斯密码!它最早是由美国的摩尔斯在1844年发明的,故也被叫做摩尔斯电码。由两种基本信号和不同的间隔时间组成:短促的点信号" .",读(Di);保持一定时间的长信号"—",读(Da)。


摩尔斯电码主要由以下5种它的代码组成:

点(.)

划(-)

每个字符间短的停顿(通常用空格表示停顿)

每个词之间中等的停顿(通常用 / 划分)

以及句子之间长的停顿


技术流丨古典密码学梳理及解密脚本(二)

技术流丨古典密码学梳理及解密脚本(二)

技术流丨古典密码学梳理及解密脚本(二)


 -.-  .  -.--  ..  ...  --  ---  .-.  ...  .  ....-  --...


这里解密的话我们使用工具,摩斯电码编码解码,不用脚本了。(绝对不是脚本不好找)


技术流丨古典密码学梳理及解密脚本(二)


选择翻译界面,输入密文。大家注意去修改成相对应的点,划和间隔符。


技术流丨古典密码学梳理及解密脚本(二)


点击电码转明文即可得到明文。

技术流丨古典密码学梳理及解密脚本(二)



5.敲击码

敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。


敲击码表:

#!shell  1  2  3  4  51 A  B C/K D  E2 F  G  H  I  J 3 L  M  N  O  P4 Q  R  S  T  U5 V  W  X  Y  Z


技术流丨古典密码学梳理及解密脚本(二)


技术流丨古典密码学梳理及解密脚本(二)


6.埃特巴什码(Atbash Cipher)

Atbash密码是一种替换密码,具有特定的密钥,其中字母表中的字母是颠倒的。


例如,所有的“A”被替换为“Z”,所有的“B”被替换为“Y”,以此类推它最初用于希伯来字母表,但可以用于任何字母表。就像我们在重力作用下看到的那样。

这种密码是由熊斐特博士发现的熊斐特博士为库姆兰《死海古卷》的最初研究者之一,他在《圣经》历史研究方面最有名气的著作是《逾越节的阴谋》。

他运用这种密码来研究别人利用其他方法不能破解的那些经文,这种密码被运用在公元1世纪的艾赛尼/萨多吉/拿撒勒教派的经文中,用以隐藏姓名。


对应关系如下:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

ZYXWVUTSRQPONMLKJIHGFEDCBA

技术流丨古典密码学梳理及解密脚本(二)


例题:

UOZTRHYYYZZZBBVVPP

这里我们使用CaptfEncoder进行解密



技术流丨古典密码学梳理及解密脚本(二)


下载链接:

https://github.com/guyoung/CaptfEncoder/releases


参考链接:

https://blog.csdn.net/weixin_43211186/article/details/123705943


如果你还想学习更深度、更专业的技术知识,推荐一波给我们创研中心的CTF竞赛培训班,在线学习+实操,提升更快哦~

技术流丨古典密码学梳理及解密脚本(二)


技术流丨古典密码学梳理及解密脚本(二)

原文始发于微信公众号(小草培养创研中心):技术流丨古典密码学梳理及解密脚本(二)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月8日14:22:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技术流丨古典密码学梳理及解密脚本(二)http://cn-sec.com/archives/1300265.html

发表评论

匿名网友 填写信息