OverTheWire之Krypton(level0-level7)
OverTheWire的Krypton通过7个关卡系统化训练密码学技能。从level0的Base64解码开始,逐级进阶至ROT13、凯撒密码、维吉尼亚密码等经典算法。核心教学点包括:频率分析法(英文字母E最高频)、密钥长度推测、已知明文攻击等。玩家需结合命令行工具、Python脚本和在线解密平台(quipqiup/dcode)完成挑战。高级关卡level6通过encrypt6可执行文件实现逆向推导
Krypton介绍
OverTheWire 的 Krypton 是一个专注于密码学入门概念的在线游戏。
Krypton 游戏旨在通过一系列闯关挑战,让玩家学习和实践密码学知识。游戏中,玩家需要解决各种与加密和解密相关的问题,涉及多种加密技术和算法,如 Base64 编码、ROT13 密码、Caesar 密码、维吉尼亚密码等。
游戏地址:https://overthewire.org/wargames/krypton/
目录
通过过程
level0→level1

很简单的一个base64,在线解码或者使用命令解码

level1→level2

轮换密码第一个想到的就是ROT13

这个和前两个(bandit和leviathan)不一样,这个是在根目录(/)下有个krypton目录,题目内容都在krypton目录下对应的关卡


level2→level3


看了krypton2内容和关卡开始的提示和例子
首先知道的是凯撒加密程序,可以通过例子的方式加密

通过例子的方式加密“AAA”,得到密文为“MMM”,得到偏移量key为12
找个在线工具凯撒解密就可以得到密码了

由于凯撒加密比较简单,加上密码是有意义的单词,所以也可以通过枚举直接拿到密码
level3→level4

README说,明文是英文,密钥重复使用,截获了found1-3也是相同密钥加密的。

两条HINT都提示从频率下手

频率统计出来“S”是最多的
也可以通过python脚本来实现
def char_frequency(text):
frequency = {}
# 遍历每个字符
for char in text:
if char in frequency:
frequency[char] += 1
else:
frequency[char] = 1
return frequency
def get_most_frequent_char(frequency_dict):
max_char = None
max_count = 0
# 遍历字典找出最大频率的字符
for char, count in frequency_dict.items():
if count > max_count:
max_count = count
max_char = char
return max_char, max_count
if __name__ == "__main__":
cipher_text = "替换要统计的文本"
# 获取频率字典
frequency = char_frequency(cipher_text)
print("字符频率:", frequency)
# 获取并输出最高频率的字符
most_freq_char, max_count = get_most_frequent_char(frequency)
print(f"出现频率最高的字符是 '{most_freq_char}',共出现 {max_count} 次")

通过检索发现,正常情况“E”使用频率更高,所有在quipqiup中设置“S=E”

通过quipqiup拿到下一关密码
level4→level5

README告诉我们使用的是维吉尼亚密码加密,密钥长度是6

HINT告诉我们频率分析依然有效,但是要间隔6位来破解
拿官方的例子简单谈一下破解方法(仅代表个人拙见):
K=GOLD P = PROCEED MEETING AS AGREED
明文: P R O C E E D M E E T I N G A S A G R E E D\ 密钥: G O L D G O L D G O L D G O L D G O L D G O\ 密文: V F Z F K S O P K S E L T U L V G U C H K R\使用G加密的:VKKTGK ------ PEENAE(对应的明文)
这个密有很明显的特征,K占到一半了,由于密文较短,大概K对应的就是E了(按频率来讲)
K(10),E(4)很明显看出偏移量是6(G)(A是0)
由于这个比较恰好,加密到比较多的E上了,正常来说要使用长的密文进行破解,频率分布才更为准确一点。
使用dcode解密,也需要使用较长的密文进行解密

拿到key是FREKEY,再用这个密钥去解密krypton5

得到密码(注意密码没有空格)
level5→level6

REDAME告诉我们这次未知密钥长度
这个就比较复杂了,直接上网站
拿found1去网站上解密出有个KEYLENGTH,感觉很对

得到密码
level6→level7
README说了一大堆,我都没怎么看懂,但是看到ls出有个encrypt6的可执行文件
明文---encrypt6---->密文
所以我可以生成一个特殊的明文,通过encrypt6加密,从而倒推密钥

/tmp/xhh文件中是一串A
拿着这个密钥去解密就能解出krypton7的密码了

个人总结
- 密码学基础概念
- 常见加密算法:玩家会接触到多种经典加密算法,如 Base64 编码、ROT13、Caesar 密码、Vigenère 密码等。
- 加密算法的特点和破解方法:通过不同关卡,了解到各种加密算法的优缺点以及相应的破解思路。
- 频率分析方法
- 原理:在 Krypton 中,频率分析是破解密码的重要手段之一。玩家学到了英语中字母出现的频率是有一定规律的,最常见的字母通常是 “e”,然后依次是 “t”“a” 等。通过统计密文中各个字母的频率,并与英语字母的标准频率进行对比,可以推测出密文中字母与明文中字母的对应关系,从而破解密码。
- 编程实践技能
- 脚本编写:为了完成各个关卡的破解任务,玩家需要编写 Python 脚本或使用命令行工具来实现加密、解密以及频率分析等操作。
- 问题解决能力:在编写脚本的过程中,玩家需要根据不同关卡的具体要求和提示,分析问题并设计合理的解决方案。这有助于提高玩家的逻辑思维能力和解决实际问题的能力。
大佬可以通过只看README或不看README来解决问题,新手推荐看HINT,边学边解决。
更多推荐



所有评论(0)