密码学RSA取flag

发布于:2025-08-12 ⋅ 阅读:(17) ⋅ 点赞:(0)

实验目的

最近渗透了一个综合环境,在综合环境内找到一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-8

import 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)+1
    if(x%arsa.e==0):
           arsa.d=x/arsa.e
           break
    i=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