楚慧杯DASCTF密码题第一题

楚慧杯密码题第一题

里面有两个文件,先把看一眼py文件,发现是加密过程,并且给了我们密文C

由加密过程可知e,n,d的长度

把公钥文件拖进kali分解

modulus代表N,Exponent代表E

这里是16进制,将E,N转为10进制(注意,空格及冒号别一起拖进去转了,过程略)

n = 116518679305515263290840706715579691213922169271634579327519562902613543582623449606741546472920401997930041388553141909069487589461948798111698856100819163407893673249162209631978914843896272256274862501461321020961958367098759183487116417487922645782638510876609728886007680825340200888068103951956139343723

e = 113449247876071397911206070019495939088171696712182747502133063172021565345788627261740950665891922659340020397229619329204520999096535909867327960323598168596664323692312516466648588320607291284630435682282630745947689431909998401389566081966753438869725583665294310689820290368901166811028660086977458571233

因为E,N都巨大,所以先试试维纳攻击

发现没有用。为什么没用我也不清楚,大佬提的。。。大佬说要用---

博纳攻击

先用记事本打开boneh_durfee.sage,修改E,N的值。

并且 detla要>=0.23, M>=5 .. 这里我是真不知道为什么,大佬说的

用sage shell打开,命令贴图了,具体就是使用(sage命令)boneh_durfee脚本(脚本小子)

解出私钥d为

663822343397699728953336968317794118491145998032244266550694156830036498673227937

已知e,n,c,d,带入使用维纳攻击的脚本,稍微修改一下

DASCTF{6f4fadce-5378-d17f-3c2d-2e064db4af19}

PS:

博纳攻击需要用到sage,sage具体是个啥在这个网站有解释

欢迎使用Sage教程! — Sage 中文文档 1 文档 (osgeo.cn)

然后在sage使用boneh_durfee脚本(使用方法在上面贴有,大概就是用sage shell进入到/RSA-and-LLL-attacks目录,然后使用boneh_durfee脚本)。

boneh_durfee脚本:

GitHub - mimoo/RSA-and-LLL-attacks: attacking RSA via lattice reductions (LLL)

已知e,n,c,d求m脚本

import gmpy2
import binascii
import RSAwienerHacker

e = 113449247876071397911206070019495939088171696712182747502133063172021565345788627261740950665891922659340020397229619329204520999096535909867327960323598168596664323692312516466648588320607291284630435682282630745947689431909998401389566081966753438869725583665294310689820290368901166811028660086977458571233
n = 116518679305515263290840706715579691213922169271634579327519562902613543582623449606741546472920401997930041388553141909069487589461948798111698856100819163407893673249162209631978914843896272256274862501461321020961958367098759183487116417487922645782638510876609728886007680825340200888068103951956139343723
c = 6838759631922176040297411386959306230064807618456930982742841698524622016849807235726065272136043603027166249075560058232683230155346614429566511309977857815138004298815137913729662337535371277019856193898546849896085411001528569293727010020290576888205244471943227253000727727343731590226737192613447347860

#d = RSAwienerHacker.hack_RSA(e, n)
d = 663822343397699728953336968317794118491145998032244266550694156830036498673227937
m = gmpy2.powmod(c, d, n)

print(binascii.unhexlify(hex(m)[2:]))
  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值