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

BUUCTF Java逆向解密 1

Class文件是Java编译后的二进制字节码文件。
我这里使用的是jadx-gui,直接将class文件拖进去即可

package defpackage;import java.util.ArrayList;
import java.util.Scanner;/* renamed from: Reverse  reason: default package */
/* loaded from: Reverse.class */
public class Reverse {public static void main(String[] args) {Scanner s = new Scanner(System.in);System.out.println("Please input the flag :");String str = s.next();System.out.println("Your input is :");System.out.println(str);char[] stringArr = str.toCharArray();Encrypt(stringArr);}public static void Encrypt(char[] arr) {ArrayList<Integer> Resultlist = new ArrayList<>();for (char c : arr) {int result = (c + '@') ^ 32;Resultlist.add(Integer.valueOf(result));}int[] KEY = {180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};ArrayList<Integer> KEYList = new ArrayList<>();for (int i : KEY) {KEYList.add(Integer.valueOf(i));}System.out.println("Result:");if (Resultlist.equals(KEYList)) {System.out.println("Congratulations!");} else {System.err.println("Error!");}}
}

代码的逻辑也非常简单

if (Resultlist.equals(KEYList)) {System.out.println("Congratulations!");
}

主要就是我们输入的值最后需要等于KEYList这个数组,而KEYList的值就是

int[] KEY = {180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};

exp

java

public class Test {public static void main(String[] args) {int[] KEY = {180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65};char cArr[] = new char[KEY.length * 2];for (int i = 0; i < KEY.length; i++) cArr[i] = (char)((KEY[i] ^ 32 ) - '@');System.out.println(new String(cArr));}}

python

KEY = [180, 136, 137, 147, 191, 137, 147, 191,148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
cArr = [chr(((KEY[i] ^ 32) - ord('@'))) for i in range(len(KEY))]
print(''.join(cArr))

flag

flag{This_is_the_flag_!}
http://www.lryc.cn/news/187715.html

相关文章:

  • BUUCTF [MRCTF2020]Ez_bypass1
  • 深入理解强化学习——强化学习和有监督学习
  • 设计模式 - 结构型模式考点篇:装饰者模式(概念 | 案例实现 | 优缺点 | 使用场景)
  • 计算机竞赛 题目:基于深度学习的手势识别实现
  • 手撕各种排序
  • 视频号的链接在哪,视频号视频链接地址获取办法!
  • 深度学习笔记之优化算法(六)RMSprop算法的简单认识
  • 10架构管理之公司整体技术架构
  • 联邦学习综述
  • 几行cmd命令,轻松将java文件打包成jar文件
  • BuyVM 卢森堡 VPS 测评
  • JavaScript 编写一个 数值转换函数 万以后简化 例如1000000 展示为 100万 万以下原来数值返回
  • PyG两个data Datsaset v.s. InMemoryDataset
  • ArcGIS Engine:视图菜单的创建和鹰眼图的实现
  • POI 和 EasyExcel 操作 Excel
  • pytorch算力与有效性分析
  • Sublime text启用vim模式
  • 爬虫进阶-反爬破解6(Nodejs+Puppeteer实现登陆官网+实现滑动验证码全自动识别)
  • 【Unity】RenderFeature笔记
  • golang gin——controller 模型绑定与参数校验
  • 办公技巧:Excel日常高频使用技巧
  • 【jvm--方法区】
  • 智慧楼宇3D数据可视化大屏交互展示实现了楼宇能源的高效、智能、精细化管控
  • 算法题:摆动序列(贪心算法解决序列问题)
  • 接口自动化测试yaml+requests+allure技术,你学会了吗?
  • android 获取局域网其他设备ip
  • angular中使用 ngModel 自定义组件
  • kubernetes pod日志查看用户创建
  • HTML5+CSSday4综合案例二——banner效果
  • 关于红包雨功能的探索