题目
程序员小张不小心弄丢了加密文件用的秘钥,已知还好小张曾经编写了一个秘钥验证算法,聪明的你能帮小张找到秘钥吗? 注意:得到的 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};
逻辑大概是如下
然后我们只需要让这个逻辑反过来就行了,就是我们需要的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("@") ^ 32result.append(key[i])for i in range(len(result)):flag += chr(result[i])print("flag{" + flag + "}")
输出结果
flag{This_is_the_flag_!}