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

📅 2026/7/11 11:10:06
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)加密逻辑拆解设定固定密钥key26无随机变量属于对称可逆加密遍历Flag每一个字符获取对应ASCII码偶数ASCII码数值26奇数ASCII码数值-26将所有运算后的数值用逗号分隔写入密文文件。四、逆向解密解题步骤1. 读取密文数据打开 cipher.txt密文内容为128,173,138,127,169,134,131,155,140,145,1362. 推导解密逻辑根据加密逻辑反向推导加密时偶数26、奇数-26因此解密规则为若密文数值为偶数原ASCII码 密文值 - 26若密文数值为奇数原ASCII码 密文值 263. 编写解密脚本根据逆向逻辑编写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执行解密脚本程序输出原始FlagCTF{pytHon_rev_2026}五、题目总结与学习要点本题是CTF Misc板块进阶高频考点题型区别于入门级的图片隐写、压缩包解密重点考察代码审计逆向思维。很多CTF中等难度题目均采用“自定义简单加密算法”的出题思路没有通用解密工具必须手动分析逻辑、复写解密程序。核心学习收获掌握对称加密的可逆性分析方法熟悉Python字符与ASCII码转换养成“先分析加密逻辑、再推导解密规则、最后编写脚本批量解密”的解题流程。