真正的key解密(可动调,可脚本,此处脚本,由key交叉引用得来的)
key="fenkey?"
key=list(key)
key1=[10, 12, 26, 8, 17, 31, 30]
for i in range(len(key)):
key[i]=chr(ord(key[i])^key1[i])
for i in range(0,len(key)):
print(key[i],end="")
//litctf!
解密脚本 ida有点坑,实际上v8,v9也算Buf1的一部分,遗漏可能flag不完整
from Crypto.Cipher import ARC4
import struct
# 已知的 key
key = b'litctf!'
# Buf1 中的值转换为字节串形式
encrypted_flag_part1 = 0x606EA290DC7CB2D5.to_bytes(8, byteorder='little')
encrypted_flag_part2 = 0x3190B05971E41306.to_bytes(8, byteorder='little')
# v8 和 v9 转换为字节串形式
v8 = -685914190
v9 = 127
# 将 v8 和 v9 添加到加密 flag 中
# 注意:v8 需要使用 struct 包装,因为它是一个有符号整数
# v9 是一个字符(即单个字节),直接转换即可
encrypted_flag_v8 = struct.pack('<i', v8) # 使用小端模式打包 int
encrypted_flag_v9 = bytes([v9]) # 字符转换为字节
# 将所有部分合并成完整的加密 flag
encrypted_flag = encrypted_flag_part1 + encrypted_flag_part2 + encrypted_flag_v8 + encrypted_flag_v9
# 初始化 RC4 加密器(用于解密)
cipher = ARC4.new(key)
# 解密加密后的 flag
decrypted_flag = cipher.decrypt(encrypted_flag)
# 打印解密后的 flag
print("Decrypted flag:", decrypted_flag.decode('utf-8', errors='ignore'))
# 如果解密后的 flag 包含非打印字符或不正确的 UTF-8 序列,
# 可能需要尝试不同的编码或处理方式。
LitCTF{rc4_love_nice}
