Hack The Box 入门密码学:ASCII 编码解题 Writeup 前言在 HTBHack The Box的 General 栏目中Encoding板块下的 ASCII 是密码学最基础的入门题型主要考察对ASCII 编码的理解利用十进制 ASCII 码值还原原始字符串本篇文章完整梳理题目原理、解题思路、实操代码与知识点拓展。一、题目分析题目原文ASCII is a 7-bit encoding standard which allows the representation of text using the integers 0–127. Using the below integer array, convert the numbers to their corresponding ASCII characters to obtain a flag. 数组[99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 119, 116, 52, 98, 108, 51, 125]提示Python 中chr()可以将 ASCII 数值转为字符ord()实现反向转换。基础概念梳理ASCII美国信息交换标准代码采用 7 位二进制编码取值范围十进制0 ~ 127每一个数字唯一对应一个可打印 / 不可打印字符字母、数字、英文标点都被收录在内。两个 Python 核心内置函数chr(n)接收十进制整数返回对应的 ASCII 字符本题核心函数。ord(c)接收单个字符返回其对应的十进制 ASCII 码为逆向操作。二、解题过程方法 1Python 代码批量转换推荐将给出的数字数组遍历逐个使用chr()进行转换最后拼接所有字符得到 Flag完整代码如下# 定义ASCII十进制数组 ascii_arr [99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 119, 116, 52, 98, 108, 51, 125] # 遍历数组转换字符并拼接字符串 flag .join([chr(num) for num in ascii_arr]) # 输出最终flag print(flag)运行代码后输出结果crypto{ASCII_pr1wt4bl3}方法 2在线 ASCII 解码器新手快速解法如果暂时不会编写 Python 代码可以直接使用在线 ASCII 十进制转字符工具将全部数字粘贴进输入框一键解码即可拿到 Flag适合零基础快速通关。手动查表不推荐可以对照 ASCII 编码表逐个查询每一个十进制数字对应的字符缺点是数组元素较多效率低很容易出现人为失误仅用来理解原理即可。三、结果解析最终得到的 flagcrypto{ASCII_pr1wt4bl3}拆解字符串可以直观验证编码逻辑crypto{对应数组前 7 位数值ASCII_pr1wt4bl3}为花括号内部的密码字符串数字1、4、3用来替换字母是 CTF 题目里很常见的变形手法。四、知识点拓展反向题型给出字符串获取 ASCII 码使用ord()实现示例代码s crypto res [ord(i) for i in s] print(res) # 输出 [99, 114, 121, 112, 116, 111]和本题数组开头完全对应区分 ASCII 与 Hex十六进制页面下方紧接着 Hex 题型十六进制是将 ASCII 十进制转为 16 进制表示例如字符c十进制为 99转为十六进制就是63后续可以用bytes.fromhex()在 Python 中解码十六进制字符串。拓展小知识标准 ASCII 为 7bit拓展 ASCII 使用 8bit取值范围0~255可以收录西欧字符而中文无法使用 ASCII 编码需要 GBK、UTF-8 等编码格式。五、做题总结这道 HTB ASCII 编码题是 CTF 密码学的敲门砖核心只需要记住chr()和ord()两个函数理解数字和字符的映射关系。后续很多编码类题目十六进制、Base 系列编码都是在 ASCII 的基础上衍生而来吃透本题能够为后续编码类题型打下扎实基础。