ScreenShot_2026-04-01_172540_855.png
这一题没啥难度,只要看得懂java就可以了
题目说是java,所以直接放jadx
ScreenShot_2026-04-01_172720_162.png
直接看主要代码图片里面就是两个函数的代码,一个main函数,一个加密函数

main函数的功能就是输入,再把输入的字符串放到加密函数

所以主要看加密函数:
上来就是new了一个列表(猜的),然后for循环把每个字符加'@'再异或32,也就是(c + 64)^32
然后又new了一个keylist,再把key数组的值一个一个放进去,作为下面与输入进行比较的字符串

所以其实就是把原文进行加64再异或而已

exp:

# 目标 KEY 数组
KEY = [180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]

flag_content = ""

# 遍历数组中的每一个数字
for num in KEY:
    # 按照公式逆向解密:先异或 32,再减去 64
    original_ascii = (num ^ 32) - 64
    
    # 将 ASCII 数字转换回字符,拼接到结果中
    flag_content += chr(original_ascii)

print(f"最终的 Flag 是: flag{{{flag_content}}}")