实战攻防
维吉尼亚可视化破解
2018-10-23 13:25

本文版权归合天智汇所有,转载请注明出处!

★已知密匙加解密

python一句话加密

微信图片_20181023095716.png

python一句话解密

微信图片_20181023095721.png

★不知道密匙的情况下破解

原理解释

首先破解维吉尼亚我们要知道密匙的长度,然后逐个猜解字符或者说是符号;猜测密匙的长度的话,密文够长的话,可以用重合指数法,弗里德曼老人家提出的,首先假设密匙长度,分组以后每一组都是凯撒,计算对应的每一组的重合指数,求出平均值再和普通英语的重合指数作对比,即可估算密匙长度。

这个在密文足够长的情况下还是比较好的;也可以用Kasiski测试法,搜索长度至少为3的重复序列,密文很长的时候,甚至可以找到多组相同的长度为3的重复序列,这样的话他们的距离的公约数其中之一很有可能就是密匙长度。

如果密文还保留有明文的空格的话,那也可以通过语法,人工分析,三个单独的字母可能是the或者其他的出现频率高的,从而一点点的泄露出密匙的部分。然后根据密匙长度分组,计算每组中每个字母出现的概率,因为每一组都是凯撒,所以按字母顺序排序后的频率分布图看起来只是正常英文频率分布图左右移动的效果,跟正常英文的频率分布作对比,从而算出移位数,从而算出密匙的每一个字母。代码是看到了之前一个可视化破解的网站,想自己也用python写一个,结果就写出来了。

具体代码实现

以某某杯第四场的维吉尼亚密码做例子,首先以下这是密文,太长了就放在百度网盘里了,链接:

https://pan.baidu.com/s/1bEPSiix6uNizwJW79kDd0Q ,提取码:fqam

首先猜测密匙长度

微信图片_20181023100127.png

#计算距离的2到20内的因数

微信图片_20181023100205.png

#计算重复序列的各种组合的距离

微信图片_20181023100232.png

运行结果如下

微信图片_20181023100329.png

我们可以看到移位的公约数中11最多,也就最有可能是密匙长度,其次是2等等等等

然后我们根据密匙长度分组进行频率统计

微信图片_20181023100419.png

微信图片_20181023100441.png

首先绘制出正常文本的频率分布如下图

微信图片_20181023100520.png

然后打开画好的正常频率分布图作参照,运行脚本,按回车向左移动,命令行里会显示移位对应的密匙字符,plt里实时更新对应的频率分布,直到两个图的频率分布对应好,命令行里最后显示的就是密匙的一个字母;如图所示前两个字母已经出来了

第一个字母

微信图片_20181023100618.jpg

第二个字母

微信图片_20181023100703.jpg

前两个字母分别为i和c,已经显示在了命令行里。可视化的好处我就不用多说了吧,如果你用拟重合指数法的话,看见的只是数据,可视化可以看到不同字母对应频率按顺序排列的变化趋势,一眼就可以看出两个频率分布可以相似对应,同样的后面几个字母也就弄出来了,最后得到密匙是icqvigenere

微信图片_20181023100830.png

用以上代码解密后得明文,最后切片一下就找到flag啦

微信图片_20181023100920.png



▲文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。

上一篇:实战入侵朋友的大学
下一篇:记一次挖洞思路
版权所有 合天智汇信息技术有限公司 2013-2021 湘ICP备14001562号-6
Copyright © 2013-2020 Heetian Corporation, All rights reserved
4006-123-731