首先就是安装:参考看雪老哥的这篇文章:
千万注意自己电脑的默认的python版本,我的就是默认是python2,而教程大多数python3,这就导致我刚开始下载和使用怎么也不对。使用rsatool的过程中都是python3
[原创]Crypto中RSA常用工具及python库说明-密码应用-看雪论坛-安全社区|安全招聘|bbs.pediy.com
这道题来自XCTF的Normal_RSA。解压完之后出现两个这样的文件,enc是加密后的文件,pem是公钥/私钥。这就很明显了,我们需要找到私钥,然后去解密flag.enc。这个其实就已经涉及到具体的实际应用上了,跟以往的直接给数字的RSA解密还是有一些不同的。
第一步:openssl的使用,先从下面那个pubkey.pem文件中提取出数字n和e。(RSA的公钥对不就是这两个嘛)
输入:rsa -pubin -text -modulus -in pubkey.pem
得到了e和n,16进制,得转一下。
Exponent: 65537 (0x10001)
Modulus=C2636AE5C3D8E43FFB97AB09028F1AAC6C0BF6CD3D70EBCA281BFFE97FBE30DD
也可以直接找个在线网站:
RSA公私钥分解 Exponent、Modulus,Rsa公私钥指数、系数(模数)分解--查错网 (chacuo.net)
二、在线分解n
三、重点来了,rsatool的使用
这个叫rsatool的工具,可以由p、q、e计算d,并生成pem文件
然后按照用法,把pubkey.pem和rsatool.py放一块,从终端输入命令:
记得先cd到rsatool那个文件夹:
千万注意是python3才行。网上有的教程是python,那是人家默认版本是3.
python3 rsatool.py -f PEM -o private.pem -p 275127860351348928173285174381581152299 -q 319576316814478949870590164193048041239 -e 65537
然后就能得到一个私钥文件,后缀也是pem。
然后把private.pem和pubkey.pem、flag.enc放一个文件夹里,使用openssl用private.pem解密flag.enc文件并将明文生成txt文件。
openssl rsautl -decrypt -in flag.enc -inkey private.pem -out flag.txt
总结:
千万记得python的版本,不然很难搞。改了好长时间才把工具弄服帖