从零开始的勇士之路 - Writeup by AI

从零开始的勇士之路 - Writeup by AI

一、题目信息

  • 题目来源:Bugku Crypto
  • 题目名称:从零开始的勇士之路
  • 题目类别:密码学 / 仿射密码

二、考点分析

考点 权重 说明
仿射密码原理 40% 理解线性同余加密机制
已知明文攻击 30% 利用已知部分明文推导密钥
模逆元计算 20% 理解解密所需的数学条件
参数枚举验证 10% 小空间暴力搜索

知识点

  1. 仿射密码(Affine Cipher):一种单表代换密码,使用线性函数进行加密
  2. 加密公式 :C=(P×a+b)mod  26C = (P \times a + b) \mod 26C=(P×a+b)mod26
  3. 解密公式 :P=((C−b)×a−1)mod  26P = ((C - b) \times a^{-1}) \mod 26P=((C−b)×a−1)mod26
  4. 约束条件 :aaa 必须与 26 互质(即 gcd⁡(a,26)=1\gcd(a, 26) = 1gcd(a,26)=1),否则不存在逆元

三、解题思路

1. 题目分析

  • 密文 :SNFFLKU{D_4p_ka3_aRe0_0u_Ka3_LezykV_tvEmo}
  • 已知明文 :NUAACTF(CTF 比赛常见 flag 前缀)
  • 加密方式 :仿射密码(从 dec() 函数可以判断)

2. 攻击策略

由于已知部分明文和对应密文,可以采用已知明文攻击:

  1. 建立方程组:Ci=(Pi×a+b)mod  26C_i = (P_i \times a + b) \mod 26Ci=(Pi×a+b)mod26
  2. 枚举所有可能的 (a,b)(a, b)(a,b) 组合
  3. 验证哪组参数能满足所有已知的明密文对
  4. 使用找到的参数解密完整密文

3. 技术路线

复制代码
已知明文 → 建立方程 → 枚举参数 → 验证匹配 → 解密全文

四、详细步骤

步骤 1:分析加密算法

从提供的 dec() 函数可以看出这是仿射密码的解密实现:

python 复制代码
def dec(m, a, b):
    if m not in string.ascii_lowercase + string.ascii_uppercase:
        return m
    table = string.ascii_lowercase if m in string.ascii_lowercase else string.ascii_uppercase
    return table[((table.index(m) - b) * inverse(a, 26)) % 26]

步骤 2:建立方程组

对于前 7 个字符:

  • P='NUAACTF'P = \text{'NUAACTF'}P='NUAACTF' → 数值:13, 20, 0, 0, 2, 19, 5
  • C='SNFFLKU'C = \text{'SNFFLKU'}C='SNFFLKU' → 数值:18, 13, 5, 5, 11, 10, 20

需要找到 (a,b)(a, b)(a,b) 使得:(Pi×a+b)mod  26=Ci(P_i \times a + b) \mod 26 = C_i(Pi×a+b)mod26=Ci

步骤 3:枚举参数

python 复制代码
for a in range(1, 26):
    for b in range(26):
        # 检查 a 是否有逆元
        try:
            inverse(a, 26)
        except:
            continue
        
        # 验证参数
        match = True
        for i in range(7):
            P = ord(flag_prefix[i]) - ord('A')
            C = ord(cipher[i]) - ord('A')
            if (P * a + b) % 26 != C:
                match = False
                break
        
        if match:
            print(f"找到参数:a={a}, b={b}")

步骤 4:解密结果

运行脚本得到:

  • 参数 :a=3,b=5a = 3, b = 5a=3,b=5
  • Flag :NUAACTF{XXX}

五、完整代码

solve.py

python 复制代码
import string
from Crypto.Util.number import *

def dec(m, a, b):
    """仿射密码解密函数"""
    if m not in string.ascii_lowercase + string.ascii_uppercase:
        return m
    table = string.ascii_lowercase if m in string.ascii_lowercase else string.ascii_uppercase
    return table[((table.index(m) - b) * inverse(a, 26)) % 26]

# 已知信息
cipher = 'SNFFLKU{D_4p_ka3_aRe0_0u_Ka3_LezykV_tvEmo}'
flag_prefix = 'NUAACTF'

print("仿射密码(Affine Cipher)已知明文攻击")
print("=" * 60)

# 枚举参数 a 和 b
for a in range(1, 26):
    for b in range(26):
        try:
            inverse(a, 26)
        except:
            continue
        
        match = True
        for i in range(len(flag_prefix)):
            P = ord(flag_prefix[i]) - ord('A')
            C = ord(cipher[i]) - ord('A')
            if (P * a + b) % 26 != C:
                match = False
                break
        
        if match:
            print(f"[+] 找到参数:a={a}, b={b}")
            
            # 解密整个密文
            flag = ''
            for char in cipher:
                flag += dec(char, a, b)
            
            print(f"[+] Flag: {flag}")
            break

六、运行结果

复制代码
============================================================
仿射密码(Affine Cipher)已知明文攻击
============================================================
[*] 正在枚举参数 a 和 b...
[+] 找到参数:a=3, b=5
[*] 使用参数 a=3, b=5 进行解密...
[+] 解密结果:NUAACTF{XXX}
============================================================
Flag: NUAACTF{XXX}
============================================================
相关推荐
QXWZ_IA4 小时前
测绘单位采购RTK:设备价格、账号年费、售后,用时间轴分权重
网络·人工智能·安全
IT大白鼠5 小时前
GitLab 未认证 RCE 应急实战CVE-2026-97229(CVSS 10.0)
网络·安全·gitlab
进击的荆棘5 小时前
Linux系统——线程同步与互斥之线程池和安全
linux·运维·服务器·安全·单例模式·线程
KCENN6 小时前
安全地毯压敏传感防护在工业流水线与机器人作业区的耐腐蚀材质及紧急停机机制
安全
北城笑笑6 小时前
Vue 109 ,从零搭建 Vue3 + Electron 工程:生态、安全桥接与打包选型( Vue + Electron )
前端·javascript·vue.js·安全·electron·vue
山东科恩光电19 小时前
安全触边在协作机器人工作站防碰撞防护中的安装方案与性能优化
安全
山东科恩光电1 天前
安全地毯压力感应防护在工厂自动化区域的实时监测与停机联动应用
安全
Flynt2 天前
日涨4000星的OSINT工具,我拿Linus的用户名和一个随机字符串实测了一遍
python·安全
国科安芯2 天前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
国科安芯2 天前
算力上天之后的电与静:星上边缘计算载荷带外管理网络的低功耗调度与辐射容错
网络·人工智能·嵌入式硬件·安全·边缘计算·低轨卫星·商业航天