news 2026/7/3 4:11:04

[CTF] rootme靶场-Polybius

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[CTF] rootme靶场-Polybius

题目相关资料里有一个 PDF:

PDF 的核心主题是Le carré de Polybe,也就是Polybius square / 波利比奥斯方阵

PDF浅析:它把 Polybius 方阵归类为一种很基础的单表替换密码->就是每个明文字母都有一个固定替换结果,并且在全文中保持不变。

文章不需要看的很懂,只需要知道这道题考的啥?命题中的(他指望你敏锐的头脑来解读这条信息!)就是需要把这段密文解密出来就行了,具体考的啥加密,PDF也写的很明白了(Polybius)

Polybius了解

什么是波利比奥斯方阵?

波利比奥斯方阵(Polybius Square)是一种经典的加密方法,最早由古希腊学者波利比奥斯提出。它的基本原理是通过一个方阵,将字母与数字(通常是2位数字)对应起来,从而实现加密和解密。加密时,明文中的每个字母都被替换为方阵中对应字母的行和列的坐标。解密时,接收到的数字坐标会根据预设的方阵找到对应的字母。

波利比奥斯方阵如何加密?

  1. 确定字母表、行数和列数: 在加密之前,首先需要确定字母表(支持多种语言)、行数和列数;同时,还可以选择使用的分隔符(例如,逗号、空格等)。

  2. 生成方阵: 根据字母表、行数和列数,自动生成对应的波利比奥斯方阵,方阵中每个字符都会被分配一个行列坐标。

  3. 加密过程:将明文中的每个字母按照行列坐标替换,结果是用数字对(行列坐标)来表示明文。

  4. 输出密文: 最终的密文是由数字对组成的字符串。

示例

对于标准的26个英文字母“ABCDEFGHIJKLMNOPQRSTUVWXYZ”,通常使用5行5列的方阵:

明文“HELLO”的加密过程:

  • H -> (2, 3)

  • E -> (1, 5)

  • L -> (3, 1)

  • L -> (3, 1)

  • O -> (3, 4)

所以,“HELLO”加密后的密文是“23 15 31 31 34”。

波利比奥斯方阵如何解密?

  1. 确定字母表、行数和列数: 解密时,首先需要知道字母表、行数和列数,以便构建正确的方阵。

  2. 解析数字对: 密文是由数字对(行列坐标)组成的,每个数字对对应一个字母。根据密文中的数字对,在方阵中查找相应的字母。

  3. 输出明文:把查找到的字母组合起来输出最终的明文。

示例

如果收到密文“23 15 31 31 34”,根据上述方阵查找:

  • 23 -> H

  • 15 -> E

  • 31 -> L

  • 31 -> L

  • 34 -> O

解密后的明文是:HELLO

加密和解密流程:

PDF 对这个方法的思路可以概括成两步。

加密时:

  1. 先准备一个5x5字母表。

  2. 找到每个明文字母所在的位置。

  3. 用“行号 + 列号”替换这个字母。

解密时反过来:

  1. 把密文按两个字符一组拆开。

  2. 每组坐标定位到方阵里的一个格子。

  3. 读出格子里的字母。

所以只要看到一串东西像这样:

11 22 35 44 15

或者像本题这样:

b3 a3 d1 c2 b1

第一反应就应该是:它可能不是普通文本,而是坐标。

a b c d e 1 2 3 4 5

这非常像一个改写版的5x5坐标系统:

1 2 3 4 5 +----------------------- a | a1 | a2 | a3 | a4 | a5 b | b1 | b2 | b3 | b4 | b5 c | c1 | c2 | c3 | c4 | c5 d | d1 | d2 | d3 | d4 | d5 e | e1 | e2 | e3 | e4 | e5

也就是说,题目把传统的:

11 12 13 14 15 21 22 23 24 25 ...

改成了:

a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 ...

所以b3a3d1不应该看成 6 个独立字符,而应该拆成:

b3 / a3 / d1

这一步就是本题最重要的前置判断。

本题的坐标和明文字母之间不是标准顺序,而是被重新打乱过。而且笔者还拿去对应网站试过,是无法直接套出来的

根据最终的密文分析出:

b3 -> c a3 -> e d1 -> s

如果按普通标准表,b3应该是等于12 3。这说明题目不是单纯的标准 Polybius,而是:

Polybius 坐标外壳 + 打乱后的单表替换

前置文件只能帮我们识别“它是坐标型密文”,但不能直接给出最终明文。真正解题还需要做频率分析。题目的核心思路只有三步:

  1. 先识别密文的最小单位不是单个字符,而是像 b3 这样的坐标对。

  2. 再利用法语高频词,把这些坐标对还原成明文字母。

  3. 最后把整篇密文回代,解密那段密文得到明文便可得到flag!

【----帮助网安学习,以下所有学习资料免费领!加vx:YJ-2021-1,备注 “博客园” 获取!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

结构分析:

  1. 先看密文长什么样

题目文件里的内容大概是这样:

b3a3d1 c2b1e3d4d3d1 a4e5c5b1e3c2a3d1 ...

先注意两个现象:

  1. 里面只出现a-e1-5

  2. 每个“词”长度几乎都是偶数。

这说明它不是普通字母表,而是把“一个字母”编码成了“两个字符”的坐标。

比如:

b3a3d1 -> [b3][a3][d1]

也就是说,真正的解密单位是b3a3d1这种二元坐标。

1 2 3 4 5 +----------------------- a | a1 | a2 | a3 | a4 | a5 b | b1 | b2 | b3 | b4 | b5 c | c1 | c2 | c3 | c4 | c5 d | d1 | d2 | d3 | d4 | d5 e | e1 | e2 | e3 | e4 | e5

在这种写法里,b3就表示“第 b 行,第 3 列”。 题目给你的密文,实际上就是把明文字母替换成了这种坐标。

注意:本题里并不是所有格子都被用到,e4没有出现,所以咱们不需要去分析未被使用过的密文

在整篇密文里,每个符号始终对应同一个明文字母。 例如如果e3代表a,那么全文里所有e3都应该还是a

  • 法语里e出现特别多。

  • 常见短词有deetlaleque

  • 单字母词在法语里也很有用,比如a

所以只要统计密文里“谁最常见、谁是短词、谁的重复模式像法语”,就能开始反推。

先抓最明显的词:

这里一定要分清两个统计对象:

  1. 坐标频率:统计a3d1e5等等这种单个高频坐标出现了多少次。

  2. 词频:统计d3a3c4e3a3a1等等这种高频完整密文词出现了多少次。

通过代码计算汇总,坐标频率最高的几个是:

import re from collections import Counter from pathlib import Path # 读取密文文件 text = Path("ch12.txt").read_text(encoding="utf-8") # 提取所有坐标对,比如 a3、d1、e5 pairs = re.findall(r"[a-e][1-5]", text) # 统计频率 counter = Counter(pairs) # 输出前 5 个 print("| 坐标 | 出现次数 ") print("| --- | ---: |") for pair, count in counter.most_common(5): print(f"| `{pair}` | {count} |")

通过代码计算汇总,词频最高的几个是:

import re from collections import Counter from pathlib import Path text = Path("ch12.txt").read_text(encoding="utf-8") # 提取完整密文词 words = re.findall(r"(?:[a-e][1-5])+", text) # 统计词频 counter = Counter(words) # 输出前 10 个最高频密文词 print("=== 密文词频 Top 10 ===") for i, (word, freq) in enumerate(counter.most_common(10), 1): print(f"{i:2}. {word:20} {freq}")

穷举评分证明

笔者这次采用的方法,不是直接凭感觉猜字母,而是“先统计、再筛选、再打分、最后回代验证”。就是先用代码统计密文里哪些坐标、哪些短词最常出现,再把这些高频坐标与法语里常见的高频字母、高频功能词做候选匹配,看哪一种映射能同时解释更多高频词,最后再把得分最高的候选回代到原文中,检查是否能形成通顺的法语句子。

上ai联网搜索法语频率排行榜:

排名 字符 出现频率 1 e 14.47% 2 s 7.98% 3 a 7.60% 4 n 7.32% 5 i 7.21% 6 t 7.11% 7 r 6.86% 8 l 5.86% 9 u 5.55% 10 o 5.39% 11 d 4.08% 12 c 3.39% 13 p 2.98% 14 m 2.78% 15 é 2.43% 16 v 1.29% 17 g 1.18% 18 f 1.12% 19 b 0.96% 20 h 0.93% 21 q 0.85% 22 à 0.43% 23 x 0.43% 24 è 0.42% 25 y 0.34% 26 j 0.30% 27 k 0.16% 28 ê 0.13% 29 z 0.10% 30 w 0.08% 31 â 0.05% 32 ç 0.05% 33 ô 0.05% 34 î 0.04% 35 œ 0.02% 36 ù 0.02% 37 û 0.02% 38 ï 0.01%

我们真正已经知道的事实只有两个:

  1. a3是全文出现次数最多的坐标,频次是6443

  2. 单表替换会保留“谁最常出现”这个整体趋势。那么可以根据ai联网搜索的排行榜:假设a3 为e,不过呢这里仍然不是最终证明;它只是“最优先验证的候选映射”。真正让这个判断成立的,不是这一步本身,而是它带来的后续连锁验证。

上ai联网搜索与e结合的高频词排行榜:

  • 假如a3 = e,则最高频双坐标词通过高频对比:d3a3 -->de

  • 假如a3 = e,则a3a1变成 e?通过高频对比:--> et

  • 把这些结果继续回代到开头句子里,还能推出一整串正常法语

代码统计先证明 a3 是最高频坐标,法语字母频率说明最高频坐标最值得优先验证成 e,后续词频和整句回代再把这个假设验证为成立,最终能得到以下表:

这张表才是真正开始破题的地方。

  • d3a3是全篇最高频的双坐标词,频次377。如果把前面的统计结论a3 = e带进去,它就变成?e。法语正文里最常见、最值得优先验证的两字母词之一就是de,所以首先检查d3a3 = de是否成立;一旦成立,就能得到d3 = d

  • e3是一个单坐标词,频次234。法语里常见单字母词主要是ay,而在这种散文正文里a的频率通常远高于y,所以e3 = a是更优先验证的候选。

  • c4e3出现182次。如果前一步e3 = a成立,那么它的形状就是?a。法语高频短词里,最常见且最值得先检验的就是la,因此再验证c4 = l

  • a3a1出现174次。如果a3 = e已经被前两步支持,那么它就变成e?。法语里最常见的两字母高频词之一就是et,因此可继续验证a1 = t

这时我们已经有了一批比较稳的基础映射:

a3 = e d3 = d e3 = a c4 = l a1 = t

把这些候选映射连续回代到原文里,看它们能不能稳定地产生高频法语词,并最终拼出通顺句子。

用开头四个词把表补起来:

把前几个长词直接回代,明文会很快显形。把它按“已知字母 + 未知字母”的形式进行迭代。

拿文章开头前四个词进行验证

把已经得到的映射填进去:

b3a3d1 -> ?e? c2b1e3d4d3d1 -> ??a?d? a4e5c5b1e3c2a3d1 -> ????a?e? b3a4b4e1e3b1a3d1 -> ????are?

先看第一个词b3a3d1 -> ?e?。文章开头是一个三字母词,第二个字母是e。法语里常见的开头词可以是lesdescesses。但是只靠这一个词还不能定,先放着。

把前四个词连在一起看,目前只有这些形状:

?e? ??a?d? ????a?e? ????are?

继续看第二个词。

c2b1e3d4d3d1 -> ??a?d?。如果最后两个坐标d3d1里面d3 = d,那么这个词尾是d?。法语形容词里非常常见的六字母词grands正好是:

g r a n d s c2 b1 e3 d4 d3 d1

这样能一次补出:

c2 = g b1 = r d4 = n d1 = s

有了d1 = s,第一个词立刻变成:

b3a3d1 -> ?es

?es grands ouvrages这个语境里,最顺的是ces grands ouvrages。后续也有ai联网证明,于是:

b3 = c

再看第三个词:

a4e5c5b1e3c2a3d1 -> ???rages

它的尾巴已经确定是rages,而且前面句子是:

ces grands ???rages

到这一步就不需要盲测了,ai联网搜索一下:

a4e5c5b1e3c2a3d1 -> ouvrages

于是补出:

a4 = o e5 = u c5 = v

第四个词再回代:

b3a4b4e1e3b1a3d1 -> co??ares

继续ai联网搜索:

b4 = m e1 = p

现在开头四个词就能完整读出来:

ces grands ouvrages compares

如果再往后多看四个词,验证会更强:

e3e5 -> au b3a4b1e1d1 -> corps b2e5b4e3d2d4 -> humain d1a3b4c3c4a3d4a1 -> semblent

连起来就是:

ces grands ouvrages compares au corps humain semblent

继续补出更多字母:

把已有映射回代到高频词里:

假如如果前面的a3 = ee3 = ac4 = l有一个错了,这里就不会连续冒出lelesdeetestunquequi这么多正常法语词,所以前面的高频穷举目前没有问题。

例 1:votre

c5a4a1b1a3 -> votre

这个词其实大部分字母已经由ouvragesgrands带出来了:

c5 = v a4 = o a1 = t b1 = r a3 = e

v-o-t-r-e全部能对上,证明前面的v/o/t/r/e没有冲突。

例 2:freres

e2b1a3b1a3d1 -> ?reres

这个词的结构很特别:第 2 位和第 4 位都是r,第 3 位和第 5 位都是e,最后是s。在文章主题里又经常谈到“兄弟”,所以?reres->freres

于是补出:

e2 = f

例 3:maintenant

b4e3d2d4a1a3d4e3d4a1 -> ma?ntenant

这里的判断更直观。b4 = me3 = ad4 = na1 = ta3 = e已经有了,只剩中间的d2。ai联网证明ma?ntenant->maintenant,所以:

d2 = i

这个结论还会被d2c4 -> ilc1e5d2 -> qui反复验证。

例 4:toujours

a1a4e5a2a4e5b1d1 -> tou?ours

t o u ? o u r s这个形状非常明显,法语高频词就是toujours,所以:

a2 = j

到这里,常见字母基本齐了。剩下的bhxyz这类低频字母,是不可能一眼看出来的,法语生的话就当我没说过这句话,通常是在全文回代到九成可读以后,从个别词里补出来。笔者是没有任何法语基础的,某些词都是靠ai翻译得出的。

完整映射表:

最终得到的对应关系如下:

a1 -> t a2 -> j a3 -> e a4 -> o a5 -> z b1 -> r b2 -> h b3 -> c b4 -> m b5 -> x c1 -> q c2 -> g c3 -> b c4 -> l c5 -> v d1 -> s d2 -> i d3 -> d d4 -> n d5 -> y e1 -> p e2 -> f e3 -> a e5 -> u

最终解密之后的明文:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 4:09:18

Auto Playwright:用自然语言驱动AI自动化测试的实践指南

1. 项目概述:当AI遇见自动化测试如果你是一名测试工程师或者前端开发者,最近肯定被各种AI编程工具刷屏了。从Cursor到通义灵码,AI似乎正在重塑我们写代码的方式。但你是否想过,AI不仅能帮你写代码,还能直接“驾驶”你的…

作者头像 李华
网站建设 2026/7/3 4:07:56

告别龟速下载:用Python解析工具解锁百度网盘10倍下载速度

告别龟速下载:用Python解析工具解锁百度网盘10倍下载速度 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的限速而烦恼吗?每次下载大文件…

作者头像 李华
网站建设 2026/7/3 4:05:38

黄梅底盘松散异响怎么修?底盘整备和普通修车有什么区别?

很多老车车主都有这样的体验:过减速带时底盘“咯吱”响,方向发飘,感觉车身不如以前紧实了。去修理厂检查,往往又找不到单一故障点。这种情况,很可能需要的不只是“修一下”,而是一次系统的底盘整备。底盘松…

作者头像 李华
网站建设 2026/7/3 4:05:18

Octo 平台:打破 Agent 协作困境,重塑企业 AI 协作新范式

技术发展与 Agent 困境在历史长河中,技术发展很少呈线性,关键变化常发生在「连接」打通之时。20 世纪 60 年代,计算机虽具备强大计算能力,但多为各自封闭运行的系统,架构和接口问题使其难以相连。直到 ARPANET&#xf…

作者头像 李华
网站建设 2026/7/3 4:05:11

AI时代市场分工重新定价:生成成本降低,验证与责任环节价值凸显

AI时代的技术变革误读每一次重要的技术变革,最初都易被误读为机器能力的胜利。蒸汽机被理解为力量的胜利,电力被理解为能源的胜利,计算机被理解为计算速度的胜利;到人工智能时代,流行说法是机器会写、会画、会编程、会…

作者头像 李华
网站建设 2026/7/3 4:04:19

图数据库与向量数据库不是替代关系,而是互补 悦数科技

在大模型席卷企业 IT 建设的这两年,"向量数据库"成了技术圈最热的词汇之一。与此同时,不少团队开始面临一个选型困惑:我们已经在用向量数据库了,还需要图数据库吗?这个问题背后,折射出业界对两种…

作者头像 李华