BUUCTF Java逆向解密

题目

BUUCTF Java逆向解密_第1张图片

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

下载后得到Reverse.class文件

 扔到jadx-gui里面看一眼

整串代码唯一有用的就是下面的代码

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};

 逻辑大概是如下

BUUCTF Java逆向解密_第2张图片

 然后我们只需要让这个逻辑反过来就行了,就是我们需要的flag

key = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
result = []
flag = ""
for i in range(len(key)):
    key[i] = key[i] - ord("@") ^ 32
    result.append(key[i])

for i in range(len(result)):
    flag += chr(result[i])

print("flag{" + flag + "}")

 输出结果

flag{This_is_the_flag_!}

 

你可能感兴趣的:(CTF,BUUCTF,java,python,开发语言)