可以发现题目里面只有一个题目的文本文件,我们点开可以看到题目给了公共密钥(e,n),私钥的一部分(dP)和密文(c)
import gmpy2 as gp
e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
for x in range(1, e):
if(e*dp%x==1):
p=(e*dp-1)//x+1
if(n%p!=0):
continue
q=n//p
phin=(p-1)*(q-1)
d=gp.invert(e, phin)
m=gp.powmod(c, d, n)
if(len(hex(m)[2:])%2==1):
continue
print('--------------')
print(m)
print(hex(m)[2:])
print(bytes.fromhex(hex(m)[2:]))
注意:运行脚本需要使用“gmpy2”库,如果你还没有安装,可以在终端中使用以下命令进行安装
pip install gmpy2
所以最终获取到的flag就是 “flag{wow_leaking_dp_breaks_rsa?_98924743502}”
题目文件:3e6857a6-18f1-4f9e-baa2-f61dfc8d110e.zip
提示:解密脚本来自: https://www.cnblogs.com/Clair-is-com/p/16191868.html
本文作者:阿杰网络
本文链接:https://blog.n4o.cn/index.php/archives/58/
最后修改时间:2023-05-18 00:42:55
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!