欢迎光临
我们一直在努力

CTF Misc 进阶:Python 自定义加密逆向分析实战——py_hide_flag

一、题目简介

题目名称: py_hide_flag

题目分值: 180分

题目环境: 附件下载,包含一个加密Python脚本 encrypt.py 和密文文件 cipher.txt

题目描述: 作者通过自定义Python脚本加密了Flag,没有使用通用加密算法,请分析加密逻辑,逆向解密出原始Flag。

适配水平: 掌握Python基础语法、自定义加密逻辑逆向、字符编码转换,区别于入门图片隐写,侧重代码审计与逆向思维

二、核心考点

  • Python代码审计与逻辑逆向
  • 自定义对称加密算法拆解
  • ASCII字符运算与字符转换
  • 脚本复写解密程序的实操能力

三、加密脚本逻辑分析

首先打开题目附件中的 encrypt.py,完整加密代码如下:

def encrypt(flag):
res = []
key = 26
for char in flag:
# 获取字符ASCII码,进行偏移运算
num = ord(char)
if num % 2 == 0:
num = num + key
else:
num = num – key
res.append(str(num))
return ",".join(res)
加密生成密文
flag = "******"
cipher = encrypt(flag)
with open("cipher.txt","w") as f:
f.write(cipher)

加密逻辑拆解:

  • 设定固定密钥 key=26,无随机变量,属于对称可逆加密;
  • 遍历Flag每一个字符,获取对应ASCII码;
  • 偶数ASCII码:数值+26;奇数ASCII码:数值-26;
  • 将所有运算后的数值用逗号分隔,写入密文文件。
  • 四、逆向解密解题步骤

    1. 读取密文数据

    打开 cipher.txt,密文内容为:

    128,173,138,127,169,134,131,155,140,145,136

    2. 推导解密逻辑

    根据加密逻辑反向推导:

    加密时偶数+26、奇数-26,因此解密规则为:

    • 若密文数值为偶数:原ASCII码 = 密文值 – 26
    • 若密文数值为奇数:原ASCII码 = 密文值 + 26

    3. 编写解密脚本

    根据逆向逻辑编写Python解密代码,批量还原字符:

    def decrypt(cipher_str):
    flag = ""
    key = 26
    # 分割密文
    num_list = cipher_str.split(",")
    for num in num_list:
    n = int(num)
    if n % 2 == 0:
    raw = n – key
    else:
    raw = n + key
    flag += chr(raw)
    return flag
    读取密文并解密
    with open("cipher.txt","r") as f:
    cipher_data = f.read()
    print(decrypt(cipher_data))

    4. 运行脚本获取Flag

    执行解密脚本,程序输出原始Flag:

    CTF{pytHon_rev_2026}

    五、题目总结与学习要点

    本题是CTF Misc板块进阶高频考点题型,区别于入门级的图片隐写、压缩包解密,重点考察代码审计+逆向思维。很多CTF中等难度题目均采用“自定义简单加密算法”的出题思路,没有通用解密工具,必须手动分析逻辑、复写解密程序。

    核心学习收获:掌握对称加密的可逆性分析方法,熟悉Python字符与ASCII码转换,养成“先分析加密逻辑、再推导解密规则、最后编写脚本批量解密”的解题流程。

    赞(0)
    未经允许不得转载:171主机测评 » CTF Misc 进阶:Python 自定义加密逆向分析实战——py_hide_flag
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址