Problem: [FSCTF 2023]EZRC4
思路
- 解题大致思路
EXP
def rc4_crypt(data, key):
S = list(range(256))
j = 0
out = []
# Key-scheduling algorithm (KSA)
for i in range(256):
j = (j + S[i] + ord(key[i % len(key)])) % 256
S[i], S[j] = S[j], S[i]
# Pseudo-random generation algorithm (PRGA)
i = j = 0
for char in data:
i = (i + 1) % 256
j = (j + S[i]) % 256
S[i], S[j] = S[j], S[i]
out.append(char ^ S[(S[i] + S[j]) % 256])
return bytes(out)
# 已知数据和密钥
data = [
-21, 13, 97, 41, -65, -101, 5, 34, -13, 50, 40, -105, -29, -122, 77,
45, 90, 42, -93, 85, -86, -43, -76, 108, -117, 81, -79
]
key = "wanyuanshenwande"
# 将数据转换为字节格式
data_bytes = bytes([b & 0xFF for b in data])
# 解密数据
decrypted_data = rc4_crypt(data_bytes, key)
# 输出解密后的数据
print("Decrypted Data:", decrypted_data.decode('utf-8', errors='replace'))
总结
- 对该题的考点总结
秒了
flag{I_L0VE_gensh1n_Imp4ct}
