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

[SWPUCTF 2021 新生赛]简简单单的解密

附件下载完是python代码

看到256想到rc4

关于rc4的逆向技巧

首先根据原理我们可以看到会初始化一个256字节的数组

其次会将一个key也填充到数组中

函数的话大概率都是两个参数,一个是key 一个是keylen

import base64,urllib.parse
key = "HereIsFlagggg"
flag = "xxxxxxxxxxxxxxxxxxx"

s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
res = []
i = j = 0
for s in flag:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    res.append(chr(ord(s) ^ k))
cipher = "".join(res)
crypt = (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))
enc = str(base64.b64decode(crypt),'utf-8')
enc = urllib.parse.quote(enc)
print(enc)
# enc = %C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA

Exp

import base64,urllib.parse
enc = "%C2%A6n%C2%87Y%1Ag%3F%C2%A01.%C2%9C%C3%B7%C3%8A%02%C3%80%C2%92W%C3%8C%C3%BA"
key = "HereIsFlagggg"
flag = ""

enc = urllib.parse.unquote(enc)
s_box = list(range(256))
j = 0
for i in range(256):
    j = (j + s_box[i] + ord(key[i % len(key)])) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
i = j = 0
for s in enc:
    i = (i + 1) % 256
    j = (j + s_box[i]) % 256
    s_box[i], s_box[j] = s_box[j], s_box[i]
    t = (s_box[i] + s_box[j]) % 256
    k = s_box[t]
    flag += (chr(ord(s) ^ k))
print(flag)

运行得到flag

NSSCTF{REAL_EZ_RC4} 

http://www.dtcms.com/a/209705.html

相关文章:

  • 疏锦行Python打卡 DAY 9 热力图和子图的绘制
  • C++---vector模拟实现
  • ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e)
  • 测试关键点
  • Java流式处理-Steam详解
  • 【Fifty Project - D30】
  • 告别手抖困扰:全方位健康护理指南
  • 《AI 绘画崛起,人类艺术家如何在夹缝中寻找新机遇?》
  • 电磁兼容(EMC)仿真(精编版)
  • MYSQL之复合查询
  • 实验13 数据库权限管理
  • Python语法特点与编码规范
  • CDGA|一线二线企业数据治理项目目前发展状况
  • 江科大DMA直接存储器访问hal库实现
  • Pytorch里面多任务Loss是加起来还是分别backward? | Pytorch | 深度学习
  • @JsonFormat时区问题
  • AB Sciex QTRAP 4500联用 Waters I Class plus 到货后如何安装和性能测试
  • Flink集成资源管理器
  • Android.mk解析
  • Web前端开发: 什么是JavaScript?
  • HC32f460的定时器时间分析
  • 可视化图解算法44:旋转数组的最小数字
  • 图解深度学习 - 特征工程(DL和ML的核心差异)
  • 决策树引导:如何选择最适合你的机器学习算法
  • [20250522]目前市场上主流AI开发板及算法盒子的芯片配置、架构及支持的AI推理框架的详细梳理
  • 支持电子病历四级的云HIS系统,云HIS系统源码,医院管理信息系统
  • 动态规划应用场景 + 代表题目清单(模板加上套路加上题单)
  • 低代码平台搭建
  • 辛格迪客户案例 | 青山利康实施ERP(BIP),同步开展计算机化系统验证(CSV)
  • Python之os模块(文件和目录操作、进程管理、环境变量访问)