openssl是linux系统自带的一个工具,在terminal里输入openssl就能使用了。(Ctrl+C可以退出来)
遇到.pem .enc 或者是.der 文件格式时就要用上openssl了,一般都是给公钥文件以及flag文件让你求flag。首先遇到pubkey.pem,就是rsa 的公钥文件,把该文件拖到虚拟机Linux的桌面上,然后再进入该目录,输入
openssl rsa -in pubkey.pem -pubin -modulus -text
-in 是输入文件
-pubin是表示从文件中公钥(因为默认是读取私钥)
附加:-pubout是表示输出公钥(默认是输出私钥)
所以上面也可以换成这个:
openssl rsa -in pubkey.pem -pubin -pubout -modulus -text
结果都是一样的。噢噢上面的还没说完,我们继续。
-text 是输出密钥的各种组件信息以及密钥文件本身的文本(但是不会直接输出公钥,所以需要下一句)
-modulus 是输出密钥模数(就是输出N)模N嘛
实际上-text命令提供e,-modulus命令提供N
图中的Exponent就是e,Modulus就是N。
-noout 命令是不输出密钥文件的文本内容,即上图中—BEGIN PUBLIC KEY–到—END PUBLIC KEY —的内容。
所以想要输出的内容美观一点,只需输入
openssl rsa -in pubkey.pem -pubin -modulus -noout
下载连接:
https://github.com/ius/rsatool
这个是在python下运行的工具,一般Linux里都有。在终端输入python就行了
要是没有的话直接按照提示输入代码装就好了。
其实我装rsatol的时候老是出现问题。。现在就简单总结一下:
首先把setup.py打开,看看要求
第二行的 setuptools 和标橙的倒数第二行’gmpy’ 和’pyasn1’都要提前安装好。
我建议是先安装pip,因为这个实在是太方便了,而且不容易出错。
先在linux终端输入:
wget https://bootstrap.pypa.io/get-pip.py
下载完毕后再输入:
sudo python get-pip.py
最后得到Successfully installed pip-19.2.1 wheel-0.33.4就是安装成功了!
ok,有了pip之后一切都简单了。要安装setuptools就一行解决:
sudo pip install setuptools
sudo是获取权限
接着安装gmpy。网上说gmpy得先安装gmy,所以
sudo apt-get install libgmp-dev
要是出现
defeat respond:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
重启就好了
再
pip install gmpy
如果出现
那就先
sudo apt-get install libssl-dev libffi-dev build-essential libxml2-dev libxslt1-dev
还不行就装上python2.7-dev
sudo apt-get install python2.7-dev
后面是要安装pyasn1,直接
pip install pyasn1
最后就进入rsatool的目录安装就行啦
sudo python setup.py install
最后得到Finished processing dependencies for rsatool==1.0就算是安装成功了。
我觉得rsatool就是一个简单的计算工具吧,有两种输入方法:一是输入p和q,另一种是输入n和d。之后让它生成一个完整的密钥文件(p,q,n,e,d)
使用方法:
一.输入p和q
python rsatool.py -f DER -o key.pem -p 4184799299 -q 3303891593
二.输入n和d
python rsatool.py -f PEM -o key.pem -n 13826123222358393307 -d9793706120266356337
-f是输出文件的格式
-o是输出文件的名称
最后我们可以得到key.pem 这个密钥文件,注意这是.pem文件,所以又得用openssl来操作。
解密:(假设待解密文件是flag.enc)
openssl rsautl -decrypt -in flag.enc -inkey key.pem
-inkey 是用的密钥文件
-decrypt是解密
最后解密结果就会输出来了
以上是根据攻防世界题目Normal_RSA得到的一些经验和教训。
参考连接:https://blog.csdn.net/Yu_csdnstory/article/details/90759717
https://www.jb51.net/softjc/574976.html
https://blog.csdn.net/u013687821/article/details/45113131
https://www.jianshu.com/p/7575f7976dad