当前位置: 首页 > article >正文

这是什么编码 - writeup by AI

这是什么编码 - writeup by AI 题目信息项目内容题目名称这是什么编码来源平台BUGKU CTF题目类型Crypto (密码学)核心考点Base 家族编码识别、多层嵌套解码涉及编码Hex、Base32、Base64 题目描述给定的密文文件encode.txt中包含一串经过多重编码的字符串需要通过分析和解码最终提取出隐藏的 flag。原始密文前 100 字符4b5a4b455536534e4b5a48454f56334f4a5a4b57455232534b564b464d5754584b524c4655574445493544464f544b5647...密文总长度2560 个字符 考点分析1. 主要考点编码特征识别通过字符集和长度特征判断编码类型多层解码能力理解编码可以嵌套使用耐心与细心需要多次迭代解码2. 涉及的编码知识十六进制编码 (Hex)特征说明字符集0-9, A-F(16 个字符)长度特征偶数Padding无压缩比2:1 (编码后长度翻倍)Base32 编码特征说明字符集A-Z, 2-7(32 个字符)长度特征8 的倍数Padding(最多 6 个)压缩比8:5 ≈ 1.6:1Base64 编码特征说明字符集A-Z, a-z, 0-9, , /(64 个字符)长度特征4 的倍数Padding(最多 2 个)压缩比4:3 ≈ 1.33:1 解题思路整体策略观察特征分析密文的字符组成和长度初步判断根据特征推测编码类型逐层解码从外层到内层依次解码循环检测每次解码后检查是否出现 flag记录路径保存完整的解码过程编码嵌套逻辑原始数据 ↓ [Hex 编码] Hex 密文 (2560 字符) ↓ [Base32 编码] Base32 密文 (1280 字符) ↓ [Base64 编码] Base64 密文 #1 (800 字符) ↓ [Base64 编码] Base64 密文 #2 (600 字符) ↓ [Base64 编码] Base64 密文 #3 (448 字符) ↓ [Base32 编码] Base32 密文 #4 (336 字符) ↓ [Base32 编码] Base32 密文 #5 (208 字符) ↓ [Base64 编码] Base64 密文 #6 (128 字符) ↓ [Base32 编码] Base32 密文 #7 (96 字符) ↓ [Base64 编码] Base64 密文 #8 (56 字符) ↓ [Base32 编码] Base32 密文 #9 (40 字符) ↓ [解码] Flag (23 字符) 详细解题步骤Step 1: 初始密文分析输入原始密文2560 字符特征分析✅ 只包含字符0-9和A-F✅ 长度为偶数2560✅ 符合十六进制编码特征判断这是十六进制编码 (Hex)操作decodedbytes.fromhex(cipher).decode(utf-8)结果解码后长度1280 字符压缩比2:1新密文特征只包含A-Z和2-7Step 2: Base32 解码输入Step 1 的结果1280 字符特征分析✅ 只包含大写字母A-Z和数字2-7✅ 长度能被 8 整除1280 % 8 0✅ 符合 Base32 编码特征判断这是Base32 编码操作padding(8-len(s)%8)%8# 计算 paddingdecodedbase64.b32decode(s*padding).decode(utf-8)结果解码后长度800 字符压缩比1.6:1新密文特征包含大小写字母、数字可能是 Base64Step 3: 第一次 Base64 解码输入Step 2 的结果800 字符特征分析✅ 包含大小写字母和数字✅ 长度能被 4 整除800 % 4 0✅ 符合 Base64 编码特征判断这是Base64 编码操作padding(4-len(s)%4)%4decodedbase64.b64decode(s*padding).decode(utf-8)结果解码后长度600 字符压缩比1.33:1仍然是 Base64 编码特征Step 4-5: 连续 Base64 解码继续对 Step 3 的结果进行 Base64 解码Step 4输入600 字符输出448 字符仍然是 Base64 编码Step 5输入448 字符输出336 字符变化不再符合标准 Base64 特征Step 6: Base32 解码关键转折输入Step 5 的结果336 字符特征分析✅ 只包含大写字母和部分数字2-7❌ 长度不能被 4 整除336 % 4 0但字符集不符合 Base64✅ 符合 Base32 特征判断切换回Base32 编码操作padding(8-len(s)%8)%8decodedbase64.b32decode(s*padding).decode(utf-8)结果解码后长度208 字符仍然是 Base32 编码特征Step 7: 再次 Base32 解码输入Step 6 的结果208 字符操作继续使用 Base32 解码结果解码后长度128 字符变为 Base64 编码特征Step 8-11: 交替解码按照以下顺序继续解码步骤编码类型输入长度输出长度压缩比8Base64128961.33:19Base3296561.71:110Base6456401.4:111Base3240231.74:1Step 12: 发现 Flag输入Step 11 的结果23 字符检查结果ifflag{incurrent.lower():print(✓ 找到 Flag!) 完整解题代码#!/usr/bin/env python3# -*- coding: utf-8 -*-importbase64fromdatetimeimportdatetimedefanalyze_string(s,step_name):分析字符串的特征信息print(f\n{*70})print(f[{step_name}] 字符串特征分析)print(*70)# 基本信息print(f长度{len(s)}字符)print(f长度 % 4:{len(s)%4}(Base64 要求))print(f长度 % 8:{len(s)%8}(Base32 要求))# 字符集分析unique_charssorted(set(s.replace(,)))char_set.join(unique_chars)print(f\n唯一字符数{len(unique_chars)})print(f字符集{char_set[:50]}{...iflen(char_set)50else})# 字符类型has_upperany(c.isupper()forcins)has_lowerany(c.islower()forcins)has_digitany(c.isdigit()forcins)has_only_hexall(cin0123456789ABCDEFabcdefforcins.replace(,))has_only_b32all(cinABCDEFGHIJKLMNOPQRSTUVWXYZ234567forcins.replace(,))print(f\n包含大写字母{是ifhas_upperelse否})print(f包含小写字母{是ifhas_lowerelse否})print(f包含数字{是ifhas_digitelse否})print(f\n编码匹配:)print(f Hex:{✓ifhas_only_hexelse✗})print(f Base32:{✓ifhas_only_b32else✗})print(f Base64:{✓if(has_upperorhas_lowerorhas_digit)else✗})deftry_decode_hex(s):try:returnbytes.fromhex(s).decode(utf-8)except:returnNonedeftry_decode_b32(s):try:cleans.replace(,)pad(8-len(clean)%8)%8returnbase64.b32decode(clean*pad).decode(utf-8)except:returnNonedeftry_decode_b64(s):try:pad(4-len(s)%4)%4returnbase64.b64decode(s*pad).decode(utf-8)except:returnNonedefsolve():start_timedatetime.now()print(*70)print(CTF 题目这是什么编码 - 详细解题过程)print(*70)# 读取密文withopen(encode.txt,r)asf:currentf.read().strip()step0path[]whilestep50:step1# 检查 Flagifflag{incurrent.lower():print(f\n{*70})print( 成功找到 Flag! )print(f{*70})print(f步数{step})print(f路径{ - .join(path)})print(f\nFlag:{current})break# Step 1: Hexifstep1:resulttry_decode_hex(current)ifresult:path.append(Hex)currentresult analyze_string(current,Step 1 - Hex 解码后)continue# 尝试 Base32resulttry_decode_b32(current)ifresult:path.append(Base32)currentresult analyze_string(current,fStep{step}- Base32 解码后)continue# 尝试 Base64resulttry_decode_b64(current)ifresult:path.append(Base64)currentresult analyze_string(current,fStep{step}- Base64 解码后)continuebreakend_timedatetime.now()print(f\n耗时{(end_time-start_time).total_seconds():.2f}秒)if__name____main__:solve() 经验总结1. 编码识别技巧编码类型快速识别方法Hex只有 0-9 和 A-F长度偶数Base32只有 A-Z 和 2-7可能有等号Base64有大小写字母、数字可能有/和等号 工具推荐在线工具CyberChef: https://gchq.github.io/CyberChef/Base64 在线解码: https://www.base64decode.org/多编码识别: https://www.dcode.fr/cipher-identifier

相关文章:

这是什么编码 - writeup by AI

这是什么编码 - writeup by AI 📋 题目信息项目内容题目名称这是什么编码来源平台BUGKU CTF题目类型Crypto (密码学)核心考点Base 家族编码识别、多层嵌套解码涉及编码Hex、Base32、Base64 🎯 题目描述 给定的密文文件 encode.txt 中包含一串经过多重编码…...

OpenClaw技能市场盘点:10个Qwen3-32B最佳自动化插件推荐

OpenClaw技能市场盘点:10个Qwen3-32B最佳自动化插件推荐 1. 为什么需要关注OpenClaw技能市场? 去年冬天,当我第一次在本地部署OpenClaw时,最让我惊喜的不是框架本身,而是它背后那个充满可能性的技能市场。作为一个长…...

Qwen3.5-4B-Claude-Opus效果展示:数据结构概念讲解+图解式语言表达

Qwen3.5-4B-Claude-Opus效果展示:数据结构概念讲解图解式语言表达 1. 模型能力概览 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个专为结构化推理任务优化的轻量级AI模型。这个4B参数的版本经过特殊训练,能够将复杂的技术概念分解为清晰…...

服饰解构AI工具横向评测:Nano-Banana软萌拆拆屋性能与效果分析

服饰解构AI工具横向评测:Nano-Banana软萌拆拆屋性能与效果分析 1. 引言:当AI遇见时尚解构 你是否曾经好奇过一件精美服饰的内部构造?那些复杂的蝴蝶结、精致的蕾丝边、巧妙的结构设计,如果能够像拼图一样展开呈现,会…...

RMBG-2.0应用案例:如何快速处理社交媒体配图

RMBG-2.0应用案例:如何快速处理社交媒体配图 1. 社交媒体配图的痛点与解决方案 在当今内容爆炸的时代,社交媒体配图的质量直接影响着内容的传播效果。无论是个人博主还是企业账号,每天都需要制作大量配图来吸引用户注意力。然而&#xff0c…...

3秒守护隐私:Boss-Key重新定义窗口智能管理

3秒守护隐私:Boss-Key重新定义窗口智能管理 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公环境中,窗…...

Wan2.2-I2V-A14B开源大模型教程:模型权重结构解析与LoRA微调入门

Wan2.2-I2V-A14B开源大模型教程:模型权重结构解析与LoRA微调入门 1. 模型概述与环境准备 Wan2.2-I2V-A14B是一款先进的文生视频开源大模型,能够根据文本描述生成高质量视频内容。本教程将深入解析模型权重结构,并指导您完成LoRA微调入门实践…...

GTE中文-large多任务能力展示:同一输入文本同步输出NER标签+情感得分+分类结果

GTE中文-large多任务能力展示:同一输入文本同步输出NER标签情感得分分类结果 提示:本文展示的GTE中文-large模型多任务能力基于ModelScope的iic/nlp_gte_sentence-embedding_chinese-large镜像实现,所有示例均为真实运行结果。 1. 多任务模型…...

解决IDEA/DataGrip连接SQL Server时的TLS协议兼容性问题

1. 为什么IDEA/DataGrip连不上SQL Server? 最近帮同事排查一个数据库连接问题,发现不少人在用IDEA或DataGrip连接SQL Server时都会遇到这个报错:"The server selected protocol version TLS10 is not accepted by client"。这个错误…...

Wan2.1 VAE网络安全应用:生成对抗性样本以测试图像识别系统鲁棒性

Wan2.1 VAE网络安全应用:生成对抗性样本以测试图像识别系统鲁棒性 1. 引言 想象一下,你公司新部署了一套人脸识别门禁系统,号称准确率高达99.9%。但某天,一个员工只是戴了一副造型奇特的眼镜,系统就把他识别成了另一…...

Qwen3-VL-30B功能全体验:图文对话、图表分析、多图推理一网打尽

Qwen3-VL-30B功能全体验:图文对话、图表分析、多图推理一网打尽 1. 开篇:认识这个视觉语言"全能选手" 当你第一次听说Qwen3-VL-30B这个名字时,可能会被它的技术参数吓到——300亿参数的视觉语言模型,听起来像是实验室…...

ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择

ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择 最近,一些Oracle数据库管理员在技术论坛上提到,在执行涉及LOB字段的更新操作时,偶尔会遇到ORA-22816错误。例如,一位开发者在2024年5月尝试在一个大型…...

Qwen3-TTS-VoiceDesign参数详解:Temperature与Top P加点调优指南

Qwen3-TTS-VoiceDesign参数详解:Temperature与Top P加点调优指南 你是不是也遇到过这样的问题:用AI生成语音时,明明输入了“开心的语气”,出来的声音却平淡得像在念说明书?或者想要“悲伤一点”,结果听起来…...

从游戏到医疗:用Touch™和OpenHaptics 3.5解锁Windows力反馈应用新场景(附Unity与C++双环境配置要点)

从游戏到医疗:Touch™力反馈技术的跨界应用与开发实践 想象一下,外科医生在虚拟手术训练中感受到真实的组织阻力,汽车维修学员通过触觉反馈"触摸"到发动机零件的磨损痕迹,游戏玩家在射击游戏中体验到不同武器的后坐力差…...

快速上手FNF PsychEngine:3大核心功能完全指南

快速上手FNF PsychEngine:3大核心功能完全指南 【免费下载链接】FNF-PsychEngine Engine originally used on Mind Games mod 项目地址: https://gitcode.com/gh_mirrors/fn/FNF-PsychEngine FNF PsychEngine是一款专为《周五夜放克》(Friday Nig…...

告别环境配置!M2FP镜像开箱即用,快速体验人体语义分割

告别环境配置!M2FP镜像开箱即用,快速体验人体语义分割 1. 为什么选择M2FP镜像 1.1 人体语义分割的实用价值 人体语义分割是计算机视觉领域的重要技术,它能将图像中的人体细分为不同部位(如头部、上衣、裤子等)。这项…...

WeeChat终极指南:从零开始掌握轻量级聊天客户端

WeeChat终极指南:从零开始掌握轻量级聊天客户端 【免费下载链接】weechat The extensible chat client. 项目地址: https://gitcode.com/gh_mirrors/we/weechat WeeChat(Wee Enhanced Environment for Chat)是一个免费、快速且轻量级的…...

dry快速入门:10个核心功能带你玩转Docker管理

dry快速入门:10个核心功能带你玩转Docker管理 【免费下载链接】dry moncho/dry: dry(Docker Run Commands)是一款命令行工具,旨在简化对Docker容器的操作管理,提供了一种简洁的方式创建、启动、停止和删除Docker容器。…...

Qwen3-ASR-0.6B GPU显存优化实践:FP16加载后显存占用仅2.1GB(RTX 4090实测)

Qwen3-ASR-0.6B GPU显存优化实践:FP16加载后显存占用仅2.1GB(RTX 4090实测) 1. 项目概述 Qwen3-ASR-0.6B是阿里云通义千问团队推出的轻量级语音识别模型,专门为本地化部署设计。这个6亿参数的模型在保持出色识别精度的同时&…...

PHP Monitor自定义配置教程:设置预设、环境变量和应用集成

PHP Monitor自定义配置教程:设置预设、环境变量和应用集成 【免费下载链接】phpmon Lightweight, native Mac menu bar app that helps you manage multiple PHP installations, locate config files and more. Also interacts with Laravel Valet. 项目地址: htt…...

【毕业设计】SpringBoot+Vue+MySQL 兴顺物流管理系统平台源码+数据库+论文+部署文档

摘要 随着电子商务和全球贸易的快速发展,物流行业在现代经济体系中的重要性日益凸显。高效、智能的物流管理系统能够显著提升企业的运营效率,降低管理成本,并优化客户体验。然而,传统的物流管理方式仍存在信息孤岛、数据冗余、流程…...

TranslateGemma避坑指南:解决CUDA报错和GPU识别问题

TranslateGemma避坑指南:解决CUDA报错和GPU识别问题 1. 常见问题概述:为什么你的GPU跑不起来 部署TranslateGemma时,90%的安装失败都与GPU相关。以下是工程师们最常遇到的三大问题: CUDA版本不匹配:系统CUDA与镜像要…...

手机高频麦克风音频采样技术

随着移动终端音频应用的多元化发展,从超声通信、高频声纹识别到医疗级音频监测,对手机麦克风的高频采样能力提出了更高要求。手机高频麦克风音频采样技术,是实现高频音频信号捕捉、传输与后续处理的核心支撑,其性能直接决定了高频…...

OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理

OpenClaw多任务测试:百川2-13B-4bits模型在并行处理中的显存管理 1. 测试背景与动机 上周在调试一个自动化工作流时,遇到了一个典型问题:当OpenClaw同时处理文件格式转换、网页信息抓取和邮件发送任务时,后台的百川2-13B模型频繁…...

Flutter控制麦克风的方法

Flutter本身不直接提供麦克风控制的原生API,需借助第三方插件实现,核心围绕「权限申请」「麦克风开启/关闭」「音频采样/录音」「资源释放」四大场景。以下是最常用、兼容性最强的实现方案,覆盖多平台适配,附完整代码示例。 一、核…...

Unity Tilemap瓦片动态缩放:保持网格尺寸不变的核心技巧

1. 为什么需要动态缩放Tilemap瓦片? 在开发2D游戏时,Tilemap是最常用的地图构建工具之一。比如制作一个棋盘游戏,每个格子大小固定为64x64像素,但随着关卡难度提升,我们希望棋子能动态缩小显示,而格子本身尺…...

Windows右键菜单管理终极指南:3分钟打造高效桌面操作环境

Windows右键菜单管理终极指南:3分钟打造高效桌面操作环境 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾因Windows右键菜单过于臃肿而烦恼&…...

Harmonyos应用实例226:复数的三角形式与运算

8. 复数的三角形式与运算 功能简介:将复数表示为三角形式,计算模和幅角,支持复数的乘法、除法运算的几何意义。通过复平面可视化展示复数的三角形式和运算过程,帮助学生理解复数的三角表示和运算规则。 ArkTS代码: @Entry @Component struct ComplexTrigonometric {@St…...

绵羊行为检测数据集2276张VOC+YOLO格式

绵羊行为检测数据集2276张VOCYOLO格式数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2276 标注数量(xml文件个数):2276 标注数量…...

如何快速解锁网易云NCM加密音乐:ncmdump完整实战指南

如何快速解锁网易云NCM加密音乐:ncmdump完整实战指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经下载了网易云音乐却发现那些.ncm格式的音乐文件只能在特定软件中播放?ncmdump就是你的数字音乐…...