当前位置: 首页 > news >正文

密码学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
http://www.dtcms.com/a/324614.html

相关文章:

  • 动态工作流:目标结构源自表
  • GeoJSON 介绍
  • 大模型时代的机器人研究趋势:从多模态融合到高效迁移
  • 【C++/STL】list模拟实现和迭代器失效问题
  • Spring Boot配置文件加密详解
  • 6.AD环境中的安全威胁与防护措施全性
  • java报错“ NoSuchMethodError:com.test.Service.doRoomList(Ljava/lang/String;)V解决方案
  • 红黑树及其简单实现
  • XGBoost参数说明和详解
  • Suno API V5 全面升级——多语言接入,开启 AI 音乐创作新时代
  • 计算机网络:路由聚合的注意事项有哪些?
  • vue3前端项目cursor rule
  • ARM保留的标准中断处理程序入口和外设中断处理程序入口介绍
  • 【Jenkins入门以及安装】
  • SQL176 每个题目和每份试卷被作答的人数和次数
  • 力扣(H指数)
  • Mysql 8.0 新特性
  • 以太网相关协议
  • C/C++数据结构之双向链表
  • scala 样例类
  • Spring的三层架构及其各个层用到注解详细解释。
  • 零基础学Java第三讲---运算符
  • android 使用openimagelib OpenImage 实现点击放大图片,浏览
  • 【Docker实战】Spring Boot应用容器化
  • 蓝牙认证流程:BQB 测试、互操作性验证与品牌授权指南 —— 面试高频考点与历年真题解
  • Bean的实例化方式
  • WinForm之TreeView控件
  • 深入解析React Diff 算法
  • 基于 InfluxDB 的服务器性能监控系统实战(三)
  • Windchill 11.0使用枚举类型自定义实用程序实现角色管理