CTF集训(3)
古典密码学
咳咳,这个笔记大概是10号左右完成的(
相关概念
- 明文M、密文C
- 加密算法:明文+加密密钥
- 解密算法:密文+解密密钥
- 密钥空间K
攻击一般发生在密文的传递过程中
主要思想
分组密码:分成明文块$M_i$ ,用同一密钥$K_e$ 加密
序列密码:逐位进行加密解密
古典密码学的安全性基于算法的安全性。
单表替换
明密文一一对应
空间较小:暴力破解
密文长度足够长:词频分析
Carsar’s Cipher:
- 移动固定数目
- $c = (m + 3) \mod 26$
- 破解方法:遍历26个偏移量
移位密码:
- 同时处理数字和特殊字符
- 用ASCII码进行移位
简单替换密码
不是简单的移位,完全混乱的进行加密
利用词频分析破解
[here]: http://quipquip.com/
仿射密码
- $E(x) = (ax + b ) \pmod m$
- 解密函数:$D(x) = a^{-1} (x-b)$
多表代换
加密后基本上不代表原本的密码。
- 维吉尼亚密码
- $M = C = K = Z_{26}^l$ ,是一个向量序列
- $c = {(m_1+k_1) \mod 26, (m_2+k_2) \mod 26, \cdots, (m_s + k_s) \mod 26}$
- 需要分组进行转换
- 破解采用Kasiski测试法或者重合指数法。
- 利用分治,将密文分成很多组,形成不同的移位密码。
- 如果长度猜对,那么$I_c = \sum p_i^2 = 0.065$ ,否则是$0.038$
- 已知密钥 https://planetcalc.com/2468 或pycipher库
- 未知密钥 https://www.mygeocachingprofile.com/codebreaker.vigenerecipher.aspx
- 希尔密码
- 按照顺序为对应向量(A=0,B=1,…)
- 将明文转化为n维向量
- 密钥是一个矩阵
- $C^T = (A^T \cdot P ) \mod 26$
- 根据$y = K x$ ,可以求$K^{-1}$ ,寻找可求的$K^{-1}$
- http://www.practicalcryptography.com/ciphers/hill-cipher/
- 棋盘密码
- $(a, b) => 5a+b$ ,对应26字母
其他密码
- 键盘密码
- 棋盘密码,加入了大小写和数字
- 坐标密码,用电脑键盘建系
- QWE密码,按照键盘排序替换
- 栅栏密码
- 分成$N$个一组
- 例如:THERE IS A CIPHER
- TH ER EI SA CI PH ER
- 得到 TEESCPE // HRIAIHR
- 再栅栏一次 TH ER EI SA CI PH ER
- 猪圈密码
- 谔谔
- 舞动的小人密码
- 培根密码
- a AAAAA b AAAAB c AAABA d AAABB …
- 斜体替换成A,正常字体替换成B,然后进行解密
CTFcrack做测试、渗透要有书面授权
习题
转啊转
这个题是真的转啊转,草
先按照密钥排序
1 | 2 <KPBELNFCZDTRXMJQOYHGVSFUWI < |
再按照密文挪一下,比如看到H就把H放到第一个这样
1 | 2 <HGVSFUWIKPBELN F CZDTRXMJQOY < |
密码就出现了
混合编码
先看一下,文本
1 | ...1OyYjMTE5Ow== |
有等号,是个base64
解密一波,得到一堆unicode
再解密一波,得到一个很长的字符串
不太行,太长了,试了试密码好像也不是
所以再用发现base64解码,得到
1 | /119/101/108/99/111/109/101... |
应该是ASCII了,解出来就行
classic cipher
一大串大写英文,试一下凯撒不太行
试试维吉尼亚
网站爆破,yes,怎么出来500个key
分析一下结构,盲猜一波,估计是
1 | vigenereciphercanbecrackedbyfrequcncyanalysisattackvigenereciphercanbecrackedbyfrequcncyanalysisattack |
咳咳,然后分析一下解密文本,好像是关于凯撒吃鱼的故事
我们查找一下文本,发现有两处相符,一处是告你flag两边加大括号、中间要空格,一处告你flag是啥
但不知道是不是我这的问题,这个flag的frequency拼错了,需要手动修正一下..
老千层饼了
一共四个文件
先看这个图片,是舞动的小人密码
…
不谢,解读出来是UGK_DQIP_DUAGTD_QUT_DUAOPMK_WZK_SZU
,嗯,绝对没用去看标准答案是啥
没什么思路,看一下2.txt,应该是malboge密码,解码:
http://www.lscheffer.com/malbolge_interp.html
1 | +++++ ++[-> +++++ ++<]> .---. <++++ ++++[ ->+++ +++++ <]>++ ++++. ++++. |
估计是brainfuck没跑了
别套了,再套人没了
去网站上再解一波码https://www.splitbrain.org/services/ook
给出了提示:
1 | 1.txt is the cipher text of Vigenere cipher. The key is 'ciph$$$$$$$'. |
我们拿这个给1.txt解码,得到一个没什么规律的字符串。不知道能干啥,试试解压缩包,发现开了,出来一个字母对照表。
用这个对照表解小人密码就得到了flag。