Funny_js的wp
St@r
2025-12-26 04:14:20
26
0
返回题目详情
def rc4(key, data):
s = list(range(256))
j = 0
out = []
for i in range(256):
j = (j + s[i] + key[i % len(key)]) % 256
s[i], s[j] = s[j], s[i]
i = j = 0
for byte in data:
i = (i + 1) % 256
j = (j + s[i]) % 256
s[i], s[j] = s[j], s[i]
k = s[(s[i] + s[j]) % 256]
out.append(byte ^ k)
return out
def solve():
cipher_bytes = [
150, 224, 244, 68, 61, 125, 8, 239, 203, 254, 241, 113, 213, 176, 64,
106, 103, 166, 185, 159, 158, 172, 9, 213, 239, 12, 100, 185, 90, 174,
107, 131, 223, 122, 229, 157
]
key_str = "2021quickjs_happygame"
key = [ord(c) for c in key_str]
print("[*] 开始解密...")
rc4_output = rc4(key, cipher_bytes)
flag_chars = [chr(b ^ 39) for b in rc4_output]
flag = "".join(flag_chars)
print(f"[+] 最终 Flag: {flag}")
if __name__ == "__main__":
solve()
