xctf攻防世界 CRYPTO高手进阶区 shanghai

0x01. 进入环境,下载附件

题目给的压缩包,包含一个txt文件,如图:
在这里插入图片描述

0x02. 问题分析

0x02_1. 维吉利亚密码

什么是维吉利亚密码?维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。1

例如,我们有如下信息:

明文:I’ve got it.
密钥:ok

则可以得到密文:
密文:W’fs qcd wd.

操作如下,先看一张密码表格:
在这里插入图片描述
首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。本例中,明文长度为8个字母(非字母均被忽略),密钥会被程序补全为“okokokok”,那么明文第一个字母是“I”,密钥第一个字母是“o”,在表格中找到“I”列与“o”行相交点,字母“W”就是密文第一个字母;同理,“v”列与“k”行交点字母是“F”;“e”列与“o”行交点字母是“S”……

注意:

  • 维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留。
  • 如果输入多行文本,每行是单独加密的。

0x03. 问题分析

0x03_1. 还原密钥

此处参考大佬的wp,收到很多启发。https://blog.csdn.net/weixin_45530599/article/details/108112665
在这里插入图片描述
如图:可以看到有这种时间数据,而且字符数字要满足相应的长度,在英文中很容易联想到between…and…的用法,且字符长度刚好符合。那么,密文frxnimp对应明文between,对照密码表格,按列找到列头字母‘b’,然后对应的列找到加密字符‘f’,那么可以找到行头密文字符‘e’,以此类推,可以得到加密密文字符‘enereicqvi’

0x03_2. 确定密钥长度

在这里插入图片描述
在原文中,我们可以看到两个opk出现,根据加密原理,秘钥长度会不断重复进行加密的特点,那么中间的间隔即为密钥的长度,为11位。上述密钥推出的10位,不足11位,因此,需要继续寻找。

文本中出现过opk和16xu这类的,我们推测其中可能是时间序数词,xu可能对应th,那么opk则是对应the(英语语法推测)。因此,得到相应的密钥:opk – vig xu – en,因此补充上述密钥为:‘enereicqvig’

0x03_3. 确定密钥顺序

文中第一个词为bju,在文中继续搜索,如图:
在这里插入图片描述
有两个字符和三个字符搭配的形式出现,推测是to the 的感觉,推测bju对应明文the。尝试推出密钥‘icq ’。那么轮转一下密钥,可以知道加密的key为:‘icqvigenere’

0x04_4. 找到特殊标志

这么大一篇文章,肯定不可能一个个看,那么尝试搜索‘{’,因为符号不加密,发现有特殊的字符:
jtcw, ‘{’ vvj ‘zvkvrmtudabiecveaaxpp’ grq ‘}’。

因为jtcw为四个字符,猜测可能是flag,那么推测出密钥为:eicq,于是很容易确定括号中的加密字符vvj ‘zvkvrmtudabiecveaaxpp’ grq的加密key为‘vigenereicq’,放入到在线解析地址中http://www.hiencode.com/vigenere.html,如图:
在这里插入图片描述
那么得到的密文解密为:flag{andvigenereisveryeasyhuhand}

最让人麻了的是还要把and去掉。。。服了!因此,最终答案为:flag{vigenereisveryeasyhuh}


  1. https://www.qqxiuzi.cn/bianma/weijiniyamima.php ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l8947943

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值