kali Linux下RsaCtfTool的安装以及使用

RsaCtfTool是一个RSA多重攻击工具

从弱公钥中解密数据并尝试恢复私钥自动选择给定公钥的最佳攻击

安装:

1.安装RsaCtfTool

命令:

git clone https://github.com/Ganapati/RsaCtfTool.git

安装好以后进入RsaCtfTool目录下

2.安装相应环境

RsaCtfTool.py运行需要安装mpfr和mpc

安装mpfr命令:这是最新的指令,网上的大多已经无法使用。

wget https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.bz2

等待下载完成后

v=4.0.2

下一步

tar -jxvf mpfr-${v}.tar.bz2 && cd mpfr-${v}

在下一步

./configure

然后

make && make check && make install

安装mpc命令:

第一步

v=1.1.0

第二步

wget ftp://ftp.gnu.org/gnu/mpc/mpc-${v}.tar.gz

第三步

tar -zxvf mpc-${v}.tar.gz && cd mpc-${v}

然后

./configure
make && make check && make install

等待全部完成后

cd RsaCtfTool
pip install -r requirements.txt

这里可能一次无法将库全部下完,中间容易下载失败,需要多次执行此命令

pip3 install -r requirements.txt

用法:

1.用法一:已知公钥(自动求私钥) –publickey,密文 —-uncipherfile。将文件解压复制到RsaCtfTool里:
python RsaCtfTool.py --publickey 公钥文件 --uncipherfile 加密的文件
2.用法二:已知公钥求私钥:
RsaCtfTool.py --publickey 公钥文件 --private
3.用法三:密钥格式转换——把PEM格式的公钥转换为n,e:
python RsaCtfTool.py --dumpkey --key 公钥文件
umpkey --key 公钥文件
4.用法四:密钥格式转换——把n,e转换为PEM格式:
python RsaCtfTool.py --createpub -n 782837482376192871287312987398172312837182 -e 65537

使用案例:

Hgame CTF

Crypto

RSA

from Crypto.Util.number import *

flag = open('flag.txt', 'rb').read()

p = getPrime(512)
q = getPrime(512)
n=p*q
e = 65537
m = bytes_to_long(flag)
c = pow(m, e, n)
print(f"c={c}")
print(f"n={n}")

"""
c=110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582
n=135127138348299757374196447062640858416920350098320099993115949719051354213545596643216739555453946196078110834726375475981791223069451364024181952818056802089567064926510294124594174478123216516600368334763849206942942824711531334239106807454086389211139153023662266125937481669520771879355089997671125020789
"""

EXP:

可以使用factordb.com分解N,得到p,q

 from gmpy2 import *
 from libnum import *
 c = 110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582
 n = 135127138348299757374196447062640858416920350098320099993115949719051354213545596643216739555453946196078110834726375475981791223069451364024181952818056802089567064926510294124594174478123216516600368334763849206942942824711531334239106807454086389211139153023662266125937481669520771879355089997671125020789
 p = 11239134987804993586763559028187245057652550219515201768644770733869088185320740938450178816138394844329723311433549899499795775655921261664087997097294813
 q = n // p
 e = 65537
 d = invert(e,(q-1)*(p-1))
 print(n2s(pow(c,d,n)))

使用

使用RsaCtfTool直接解密,直接在kali中下载RsaCtfTool,在RsaCtfTool目录下运行

python3 ./RsaCtfTool.py -n 135127138348299757374196447062640858416920350098320099993115949719051354213545596643216739555453946196078110834726375475981791223069451364024181952818056802089567064926510294124594174478123216516600368334763849206942942824711531334239106807454086389211139153023662266125937481669520771879355089997671125020789 -e 65537 --uncipher 110674792674017748243232351185896019660434718342001686906527789876264976328686134101972125493938434992787002915562500475480693297360867681000092725583284616353543422388489208114545007138606543678040798651836027433383282177081034151589935024292017207209056829250152219183518400364871109559825679273502274955582
private argument is not set, the private key will not be displayed, even if recovered

直接求出flag。

hgame{factordb.com_is_strong!}

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值