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

CRYPTOHACK challenge Encoding Challenge个人writeup

目录

一、解题思路分析

二、关键步骤实现

1.建立连接与通信

2.多编码类型解码器

三、自动化挑战流程

1.循环处理数据

2.实时解码与反馈

四、运行与结果

1.依赖安装

2.执行脚本

3.输出示例


一、解题思路分析

该挑战要求连续解码100次由服务器随机生成的加密数据,加密方式可能为base64、hex、rot13、bigint或utf-8五种之一。核心在于动态识别加密类型并执行对应的解码操作。

二、关键步骤实现

1.建立连接与通信

使用pwntools库建立与服务器的socket连接,通过JSON格式收发数据。

json_recv()json_send()函数处理数据的序列化与反序列化。

from pwn import * import json r = remote("socket.cryptohack.org", 13377) def json_recv(): line = r.recvline() return json.loads(line.decode()) def json_send(hsh): request = json.dumps(hsh).encode() r.sendline(request)

2.多编码类型解码器

根据type字段动态选择解码方式:

base64: 使用base64.b64decode

hex: 通过bytes.fromhex转换

rot13: 调用codecs.decode的ROT13解码

bigint: 处理十六进制字符串并转换为字节

utf-8: 将ASCII码列表拼接为字符串

def decode_payload(enc_type, encoded): if enc_type == "base64": return base64.b64decode(encoded).decode() elif enc_type == "hex": return bytes.fromhex(encoded).decode() elif enc_type == "rot13": return codecs.decode(encoded, "rot_13") elif enc_type == "bigint": num = int(encoded, 16) return long_to_bytes(num).decode() elif enc_type == "utf-8": return ''.join(chr(c) for c in encoded)

三、自动化挑战流程

1.循环处理数据

持续接收服务器数据,检测是否包含flagerror字段以终止循环。

2.实时解码与反馈

提取typeencoded字段,调用decode_payload()解码后返回结果。

while True: received = json_recv() if "flag" in received: print("\n[+] Flag:", received["flag"]) break if "error" in received: print("\n[-] Error:", received["error"]) break enc_type = received["type"] enc_val = received["encoded"] decoded = decode_payload(enc_type, enc_val) json_send({"decoded": decoded})

四、运行与结果

1.依赖安装

执行以下命令安装所需库:

pip install pwntools pycryptodome

2.执行脚本

保存代码为solve.py并运行:

python3 solve.py

3.输出示例

成功后将显示类似结果:

[+] Flag: crypto{3nc0d3_d3c0d3_3nc0d3}
http://www.jsqmd.com/news/1078539/

相关文章:

  • paperxie 图书专著 AI 写作:三步模块化生成长篇学术专著文稿
  • WE Learn网课助手:终极学习效率提升指南
  • Python 描述符与元类:从魔法方法到工程化元编程的进阶之路
  • 线性回归实战:从汽车油耗数据理解可解释建模
  • Java应用性能压测工具深度对比:JMeter与Gatling选型实战指南
  • subprocess和billiard.Pool的多进程实现差异分析
  • 京东自动化脚本管理工具:智能任务调度与多账号同步解决方案
  • AI 工程化落地:从模型接入到可观测性体系的完整基建
  • Android7 U盘插拔链路源码全解析(五)Framework层(下) MountService
  • 天硕存储(TOPSSD)观察:工业级固态硬盘全形态覆盖与极端环境适配
  • AI 代码生成与验证:当 LLM 写算法题,靠谱程度到底有多少?
  • Claude架构级更新:胶水层消亡与AI工程范式转移
  • 2026适合企业行政在会议场景解决会议内容整理繁琐的实用工具
  • pointer-cad LLM 负责根据文本指令和 GNN 提取的几何特征预测下一步操作。
  • 3步搞定知网文献批量下载:学术研究的效率革命
  • Python 描述符与元类:从 Django ORM 到自定义属性系统的进阶之路
  • AI智能体从18.75%到100%:GDPevo自进化基准实测,5条隐性规则如何决定业务正确性
  • AI 代币:实用型代币的经济模型设计——从效用锚定到通胀控制的链上经济学实践
  • 5步掌握MuseTalk:开源实时唇同步AI的完整实战指南
  • ROS C++回调机制与Spinning原理深度解析
  • AI 效率工具产品化:从技术验证到 PMF 的关键路径与决策框架
  • 《AgentX Python 专栏》03-架构篇:Agent 和「调个 API」的本质区别,在架构上长什么样?
  • 缠论量化实战:chan.py框架完整指南
  • 很反感动不动就劝人“要放下”“要看开”的鸡汤:绝大多数的豁达,都不是练出来的心态,而是攒出来的底气
  • 动物声纹分析实战:从生物声学到边缘AI部署
  • 用cleanlab清洗标签提升XGBoost准确率:数据为中心的实战闭环
  • Claude Code 实战:Agent Skills
  • 消息队列高可用架构:从顺序写到消费幂等的生产级保障
  • 大厂前端高并发架构:从虚拟列表到状态分层的性能优化实战
  • CSS 动画性能优化:从 60fps 到渲染管线的精准控制