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

BUUCTF—Reverse—Java逆向解密(10)

程序员小张不小心弄丢了加密文件用的秘钥,已知还好小张曾经编写了一个秘钥验证算法,聪明的你能帮小张找到秘钥吗? 注意:得到的 flag 请包上 flag{} 提交

需要用专门的Java反编译软件:jd-gui

下载文件,发现是个class文件,这好办直接使用jd-gui打开,反编译:

看多了 C 语言伪代码再看这种的就很舒适,程序逻辑非常简单,对输入字符串逐个进行加 64 后与 32 进行异或的操作,值得注意的是,加号的优先级是高于异或运算符的。当计算结果与内部的 KEY 数组内容一样,用户输入的数据即为 flag。

操作比较简单,直接写脚本进行逆操作:

KEY = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
flag = ""

for i in range(len(KEY)):
    flag += chr((KEY[i] ^ 32) - 64)

print(flag)

运行结果

运行之后便获得了 flag,提交 flag{This_is_the_flag_!} 即可。

flag{This_is_the_flag_!}


http://www.kler.cn/a/416970.html

相关文章:

  • OGRE 3D----4. OGRE和QML共享opengl上下文
  • Pytorch使用手册- PyTorch 中 non_blocking 和 pin_memory() 的使用指南(专题十一)
  • JavaScript 中的原型和原型链
  • 独家|京东调整职级序列体系
  • MySQL的Json类型数据操作方法
  • 离线安装 Docker-IO:详细步骤指南
  • 警钟长鸣,防微杜渐,遨游防爆手机如何护航安全生产?
  • Flink 离线计算
  • 【kafka02】消息队列与微服务之Kafka部署
  • 如何bug是前端还是后端
  • (即插即用模块-Attention部分) 二十、(2021) GAA 门控轴向注意力
  • 【Spring框架 二】
  • DimensionX 学习部署笔记
  • 大小写转换
  • Ubuntu 常用解压与压缩命令
  • 如何将WSL的虚拟机安装到任意目录中
  • Nginx和Apache有什么异同?
  • 关于NXP开源的MCU_boot的项目心得
  • Spring Boot 实战:分别基于 MyBatis 与 JdbcTemplate 的数据库操作方法实现与差异分析
  • 【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像
  • 基于SpringBoot的欢迪迈手机商城架构设计
  • 从扩散模型开始的生成模型范式演变--SDE
  • AI/ML 基础知识与常用术语全解析
  • C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础
  • 闪豆下载器(多平台视频批量下载器)v4.0
  • 神经网络中的优化方法(一)