简单的rsa

题目:

首先解压压缩包后会获得一个后缀为.pyc的文件
要去一个把.pyc转换成.py的网站
网站给你们了
https://tool.lu/pyc/

解压后发现p和q都给出来了

那就非常简单了

直接写脚本

#导入库
import gmpy2
from Crypto.Util.number import long_to_bytes

# 已知参数
p = 0xED7FCFABD3C81C78E212323329DC1EE2BEB6945AB29AB51B9E3A2F9D8B0A22101E467
q = 0xAD85852F9964DA87880E48ADA5C4487480AA4023A4DE2C0321C170AD801C9
e = 65537
n = p * q
c = 0x75AB3202DE3E103B03C680F2BEBBD1EA689C8BF260963FE347B3533B99FB391F0A358FFAE5160D6DCB9FCD75CD3E46B2FE3CFFE9FA2E9508702FD6E4CE43486631

# 计算 phi_n
phi_n = (q - 1) * (p - 1)

# 计算私钥 d
d = gmpy2.invert(e, phi_n)

# 计算 m
m = pow(c, d, n)

# 最后将 m 转换为字符
try:
    flag = long_to_bytes(m).decode('utf-8')
    print("解密后的 flag 为:", flag)
except UnicodeDecodeError:
    print("无法以 UTF - 8 编码解码字节序列,可能需要尝试其他编码。")
    print("解密后的字节序列为:", long_to_bytes(m))

最后解出来为

ZmxhZ3tJbGlrZUNURmJ1dENURmRvbid0bGlrZW1lfQ==

一眼base64直接解出flag


最后flag为


flag{IlikeCTFbutCTFdon'tlikeme}

更多推荐