密码学RSA取flag
实验目的
最近渗透了一个综合环境,在综合环境内找到一RSA文件夹,以下文章将进行解密找到flag.
实验步骤
一、打开RSA文件夹,映入眼帘的是三个文件分别是:openssl flag.enc public.pem
二、我们按顺序打开public.pem flag.enc
看文件内容推测为是一个RSA公钥
反观flag.enc的内容是二进制乱码,那么从此可以得知是加密文件
三、使用openssl工具查看公钥文件。
1.打开命令行窗口,运行powershell ,且切换到要实验的RSA文件夹中。
2.使用RSA文件夹中的openssl读取公钥文件。
./openssl/openssl rsa -pubin -text -modulus -in public.pem
查到的rsa
Exponent: 65537 (0x10001)Modulus=A41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7
即:e=65537
n=Modulus=A41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7
四.尝试分解n
1.1将n从16进制转换成十进制,在cmd中打开python,依次输入以下代码
s='A41006DEFD378B7395B4E2EB1EC9BF56A61CD9C3B5A0A73528521EEB2FB817A7'
int(s,16)
得到n的10进制为
74207624142945242263057035287110983967646020057307828709587969646701361764263
1.2分解n
使用著名的http://factordb.com/index.php网站进行
在方框中输入n的值,进行分解
分解成功
p=258631601377848992211685134376492365269
q=286924040788547268861394901519826758027
五、使用python的cyrpto库,破解d,并生成私钥。
1.使用Edit with Notepad++编辑以下代码
#coding:utf-8import math
import sys
from Crypto.PublicKey import RSA
arsa=RSA.generate(1024)
arsa.p=258631601377848992211685134376492365269
arsa.q=286924040788547268861394901519826758027
arsa.e=65537
arsa.n=arsa.p*arsa.q
Fn=long((arsa.p-1)*(arsa.q-1))#此处原理e*d=Fn*i+1
i=1
while(True):x=(Fn*i)+1if(x%arsa.e==0):arsa.d=x/arsa.ebreaki=i+1
private=open('private.pem','w')
private.write(arsa.exportKey())
private.close()
2.将编写好的代码保存为py文件。
3.使用python来运行我们刚才编写的代码,执行成功后,在目录下会生成私钥文件private.pem
六、同上的方法,使用RSA文件夹中的openssl,私钥解密flag.emc。最终得到flag。
flag:SECURITYCOLLEGE