bugku_简单的rsa
·
简单的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}
更多推荐



所有评论(0)