专栏首页漏斗社区工具|Vigenere的暴力破解

工具|Vigenere的暴力破解

创作背景

之前参加了几次CTF比赛常常在Misc中遇到维吉尼亚密码破译的题目,大多是解出来了,但是痛点是都是手动分析进行解题,耽误了很多时间,最近想要解脱双手,潇洒解题~,于是广罗了各大比赛中维吉尼亚的解法,好多都是直接给出答案并未过多说明,解题思路和解题方法,于是诞生了本文,Thinking和大家聊聊的维吉尼亚密码破译,以及已收集到的一些解密脚本。

凯撒密码回顾

在说维吉尼亚密码前,首先复习下凯撒密码,大家都知道凯撒密码是比较简单的加密方式,仅仅将文中的每个字符位移相同的位移量(26个字母,所以位移数是-25—+25),但是这种方式容易被轻易的破译,密文较多的情况下可以通过字频统计,直接找出密文字母对应的明文,然后算出偏移量,对所有字符统一进行解密。

如下文,通过使用密码机器中的字频:

再根据常规的频统计表中可以知道,e,t,a,o,i,n这些字母在平时的语句中出现的评论较高,其中最高的是e,因此我们可以推测,密文->明文=g->e,并且位移数为2。

于是便解出了凯撒密码的明文信息。

维吉尼亚密码的介绍

维吉尼亚是凯撒密码的扩展,增加了秘钥的概念。以下是百度百科的例子:

未加密文字:THE BUTCHER THE BAKER AND THE CANDLESTICK MAKER。(屠夫、面包师和蜡烛匠)。

关键密钥:BIG BIGBIGB IGB IGBIG BIG BIG BIGBIGBIGBI GBIGB

加密文字:UPK CCZDPKS BNF JGLMX BVJ UPK DITETKTBODS SBSKS

因此在破译维吉尼亚密码时候重要的是要知道秘钥的长度,因为只要确定了秘钥长度,对维吉尼亚密码进行分解,分解后得到的便是多组凯撒密码。

以下例子来自limisky博客:

如密文为:ABCDEFGHIJKLMN

如果我们知道密钥长度为3,就可将其分解为三组:

组1:A D G J N

组2:B E H K

组3:C F I M

分解后每组就是一个凯撒密码,即组内的位移量是一致的,对每一组即可用频度分析法来解密。所以破解维吉尼亚密码的关键就是确定密钥的长度。

咱们一起PY吧

本来想说说手动分析和解密维吉尼亚密码的,后来想想,这样会让整个文章的篇幅变得冗长,失去了我的本意,所以直接略过手动分析,我们上PY,快速的将密码解出来。

首先贡献一个可以在线解维吉尼亚的网站:

https://www.guballa.de/vigenere-solver

又是对一件小事的思考,这个网站是将输入的密文按照规定的密码进行解密,解密的速度还很快,于是陷入了思考,或许维吉尼亚不应只按照常规的流程进行推算,应该也要有暴力枚举的功能,通过秘钥字典进行解密然后得到明文,再将明文中的单词与常见的英语单词进行匹配,当匹配率较高时,便确定解密的密码是正确的,输出明文信息。

当然只是一个小思考,然后在网上搜索这类暴力破解的文章,得到如下的py.以下PY用于比较解密后明文与常见单词进行匹配,words.txt中存放的是常见的英语单词。

以下PY实现读取keys.txt(存放秘钥的字典)中的秘钥,然后使用该秘钥进行解密。Ciphertext中放的是维吉尼亚的密文。

以下是运行后解密成功的结果:

创作心声

有些时候觉得解题或者做事很不方便,太繁琐了,就要多思考然后才能突破原有的思维局限,往往会有很多收获,把维吉尼亚的解码脚本以及之前手动解密的过程打包好了,大家可以关注漏洞社区,回复:I need more Thinking,就可以得到下载地址啦~!

本文分享自微信公众号 - 漏斗社区(newdooneSec),作者:Thinking

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CTF流量分析之wireshark使用

    在CTF比赛中,对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供一个包含流量数据的pcap文件,参赛选手通过该文件筛选和过滤其中无关的流量信息,...

    漏斗社区
  • 工具|NESSUS的高级扫描方法

    开篇之时,斗哥就想问你一句,上周的NESSUS基础扫描任务的创建方法6不6 ?不知各位小伙伴们装进心窝了没?!这周斗哥经过深思熟虑,最终慎重决定将NESSUS的...

    漏斗社区
  • CTF必备技能之编码大全

    编码根据百度百科的解释:指的是信息从一个形式或格式传换为另一种形式的过程,也称为计算机编程语言的代码简称编码。从我们的祖先仓颉造字再到0-9的阿拉伯数字的广泛使...

    漏斗社区
  • 苹果系统使用之输入法的呈现与设置问题

        新装的系统,总是纠结的出现各种问题。今天解决的就是装了Mac OS X 10.6(苹果系统)之后,输入法找不到,用快捷不能设置的问题。 刚开始...

    Java中文社群-磊哥
  • 微信聊天图片大小生成算法~

    本文作者:IMWeb DeepKolos 原文出处:IMWeb社区 未经同意,禁止转载 今天仿微信聊天时候的图片大小, 描了十几个点 , 用了半个早上...

    IMWeb前端团队
  • Golang语言社区--消息触发服务器启动基础模块分享

    // 写入部署文本文件数据 func (this *OnlineUser) GM_SetGameFirmsAccountnfo_Of_TXT_Fun(StrSe...

    李海彬
  • 微信聊天图片大小生成算法~

    今天仿微信聊天时候的图片大小 , 描了十几个点 , 用了半个早上的苦力时间 , 把结果分享一下下~

    IMWeb前端团队
  • 软件分享 | AutoCAD 2015安装教程

    2、64位打开安装包,双击安装程序,点击更改,选择解压目标文件夹,可在D盘或其它盘里面新建一个CAD2015文件夹,然后点击确定

    课代表
  • 软件分享 | AutoCAD 2016安装教程

    2、打开安装包,双击安装程序,点击更改,选择解压目标文件夹,可在D盘或其它盘里面新建一个CAD2016文件夹,然后点击确定

    课代表
  • 软件分享 | AutoCAD 2013安装教程

    2、打开安装包,双击安装程序,点击Browse,选择解压目标文件夹,可在D盘或其它盘里面新建一个CAD2013文件夹,然后点击Install。

    课代表

扫码关注云+社区

领取腾讯云代金券