做题杂记222

news2024/9/30 7:19:47

文章目录

    • 题1
    • 题2
    • 题3
    • 题4

一些较简单的题目。里面有些小点,稍不留意跑起来也挺费时。

题1

leak
题目描述:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Crypto.Util.number import *
from secret import FLAG

m = bytes_to_long(FLAG)


def getpq(nbit):
    p = getPrime(nbit)
    q = getPrime(nbit)
    if p > q:
        return p, q
    else:
        return q, p


p, q = getpq(512)
P = (p - q) & ((1 << 130) - 1)
n = p * q
leak_p = p >> 256
c = pow((1 + P * n), m, n ** 3)

print('n =', n)
print('leak_p =', leak_p)
print("c =", c)

n = 135133139540786818977969958456509467902948924003478556140490841984247464940261764739984274397650928404945721248284577232814352745333641188749824519153271662051302477973525156608141358709265683759057060630360909926255299541198485901065352661702656282587105799982740927802530997159098015074633017964344230291287
leak_p = 115314121469787984258489158421056136177545051135641551928888818017665807264468
c = 1836794759996264077871820946090708779709415760553736759453665641907562256633157424959089180650539327925671892742819931875681606982615287882656254828326465758462357812873839261469783652663796071814218493268788421243190729887313099383264588659922912876424206670310928514588754069909128149471326084547056385690037197908766053620702238356084124023146075698878494434053246157524775269473152458661801907641122308756667762880284617915774590075511686821816948174618196839335059944389423693187930672934293905608970421003536691336581450927887931599275461176935079227494931457562345640133982771901848553204154760760399724074615092290799119053032875792219794072963200108352944441876206386518960615891547166767499506114294860833404421893612197040731184031783165365621722947731966143226777081983415797778111715332055871302609049501876860012070502369090417942239749695034267695710324328867728296996779

题目分析:
高位攻击爆破 8 位得 p , 之后得到 P l e a k = ( 1 + P ∗ n ) m   %   n 3 = C m 2 ∗ ( P ∗ n ) 2 + C m 1 ∗ ( P ∗ n ) + 1 l e a k   %   n 2 = m ∗ P ∗ n l e a k , n , P 均已知, m 也便出来了 高位攻击爆破8位得p,之后得到P\\ leak = (1 + P * n) ^ m \ \% \ n^3 \\ = C_m^{2} * (P * n)^2 + C_m^1 * (P * n) + 1\\ leak \ \%\ n^2 = m * P * n\\ leak,n,P均已知,m也便出来了\\ 高位攻击爆破8位得p,之后得到Pleak=(1+Pn)m % n3=Cm2(Pn)2+Cm1(Pn)+1leak % n2=mPnleak,n,P均已知,m也便出来了

n = 135133139540786818977969958456509467902948924003478556140490841984247464940261764739984274397650928404945721248284577232814352745333641188749824519153271662051302477973525156608141358709265683759057060630360909926255299541198485901065352661702656282587105799982740927802530997159098015074633017964344230291287
leak_p = 115314121469787984258489158421056136177545051135641551928888818017665807264468
c = 1836794759996264077871820946090708779709415760553736759453665641907562256633157424959089180650539327925671892742819931875681606982615287882656254828326465758462357812873839261469783652663796071814218493268788421243190729887313099383264588659922912876424206670310928514588754069909128149471326084547056385690037197908766053620702238356084124023146075698878494434053246157524775269473152458661801907641122308756667762880284617915774590075511686821816948174618196839335059944389423693187930672934293905608970421003536691336581450927887931599275461176935079227494931457562345640133982771901848553204154760760399724074615092290799119053032875792219794072963200108352944441876206386518960615891547166767499506114294860833404421893612197040731184031783165365621722947731966143226777081983415797778111715332055871302609049501876860012070502369090417942239749695034267695710324328867728296996779

P.<x> = PolynomialRing(Zmod(n))
leak_p <<= 8
for i in range(2 ** 8,1,-1):
    print(i)
    high_p = leak_p + i
    f = (high_p << 248) + x
    root = f.small_roots(2 ** 248,0.4,0.01)
    if root:
        print((high_p << 248) + int(root[0]))
        
p = 13352463043552409670211183534740157814546713901105410408023687926498813469217507846107364405269402732967687839808637375591530105677153038557366731161035343
q = n // p
P = (p - q) & ((1 << 130) - 1)
P_m_n = c % (n ** 2) - 1
m = (P_m_n // n // P)
print(long_to_bytes(m))
# DASCTF{365d0d2cda3a3836a19bf1f46760d875}

题2

题目描述:

from Crypto.Util.number import *
from secret import flag

def genprime():
    while True:
        r = getRandomNBitInteger(64)
        p = r ** 6 + 8 * r ** 4 - 41 * r ** 3 + 14 * r ** 2 - 116 * r + 31387 # 384bits
        q = r ** 5 - 9 * r ** 4 + 17 * r ** 3 - 311 * r ** 2 - 16 * r + 14029 # 320bits,n = 704bits
        if isPrime(p) and isPrime(q):
            return p, q

def enc(flag, n):
    m = bytes_to_long(flag)
    return pow(m, 31387, n)

p, q = genprime()
n = p * q
c = enc(flag, n)
print(n)
print(c)

n = 73553176031506251642448229714220151174734540964434813056145000616720019024269982417494553771890010861489245572362590935764438928110836109730139595790550323300572059713433794357690270439325805603980903813396260703
c = 6035303231100318215656164353047198868742763055193754611914191674005776329646395050293747516587004104241717689072827492745628156828285466831779549229513115371571798719567117034735830671759951028004405762435531685
e = 31387

题目分析:
n = p ∗ q = r 11 + . . . r ≈ n 1 / 11 , 在 n 1 / 11 附近爆破出 r ,至此得到 p , q , 得 f l a g n = p * q = r^{11} + ... \\ r \approx n^{1 / 11},在n^{1 / 11}附近爆破出r,至此得到p,q,得flag n=pq=r11+...rn1/11,n1/11附近爆破出r,至此得到p,q,flag

from gmpy2 import *
from Crypto.Util.number import *
n = 73553176031506251642448229714220151174734540964434813056145000616720019024269982417494553771890010861489245572362590935764438928110836109730139595790550323300572059713433794357690270439325805603980903813396260703
c = 6035303231100318215656164353047198868742763055193754611914191674005776329646395050293747516587004104241717689072827492745628156828285466831779549229513115371571798719567117034735830671759951028004405762435531685
e = 31387

r_prox = iroot(n,11)[0]
for r in range(r_prox-2000,r_prox + 2000):
    p = r ** 6 + 8 * r ** 4 - 41 * r ** 3 + 14 * r ** 2 - 116 * r + 31387  # 384bits
    q = r ** 5 - 9 * r ** 4 + 17 * r ** 3 - 311 * r ** 2 - 16 * r + 14029  # 320bits,n = 704bits
    if p * q == n:
        d = invert(e,(p-1)*(q-1))
        print(long_to_bytes(pow(c,d,n)))
        
# CnHongKe{m0re_fuN_RSA!!!}

题3

题目描述:

from flag import FLAG
from Crypto.Util.number import *
import gmpy2
import random

while True:
    p = int(gmpy2.next_prime(random.randint(10**399, 10**400-1)))
    q = int(str(p)[200:]+str(p)[:200])
    if gmpy2.is_prime(q):
        break

m = bytes_to_long(FLAG)
n = p*q
e = 65537
c = pow(m,e,n)

with open("enc","wb") as f:
    f.write(str(c))
    f.write("\n")
    f.write(str(n))

#182812482972168423884795132699225934365072979206288632257180603530046820174392675977209758378734399146216742345585898385168866887000708558119959898992294085847474548306743585711154035585848291290988967352517174312220756638881837930962458861193652684492265539096477345065113556380573776423787885892688197584678128636231428194711357642971544417113415626331810909274966752557628893585198569815939514862013512237657828262360291726912615575646318630641527418369988268899879152029186728850816178597399494254385226049249357897840618728804680238123954207656671747782543031545429711152272581734051959578453680011676521727918037340906791388178004979453256050227967701258768070039292546964652071924183467364467145178290753361477912582242961929982420950384199259355122986865808523351306098081481072454093823090
#438980397031315392229453908048509540832246041631432878509579665664182747463100230160823865621798053164989325086085003940181731721089701380743698761443812523024144817205902380903062054138730658451286904347536210833160924917347633148983052015550354913154312162901555870494273903714349869746793861874257201085777893961715468950661641778512110325457371446203379767458862059193946434683324578530163650541637261158037041205642428802942295011562277084687025213626698849526240663754073508102229066475773893638716845176469070938803298515155140240970836387785401085919369741520890271902332951669953411373633688944162470994856654604872287103746922041844065053274059990595496159866206551119361036237431289830985174384522423364811997241255005514248198447925396378192915553898993758660041223393168707380580012437

题目分析:
设 a b _ h i g h 为 p 的前半段, a b _ l o w 为 p 的后半 即 a b _ h i g h = p / / 1 0 200 , a b _ l o w = p % 1 0 200 令 a b = a b _ h i g h ∗ a b _ l o w p = a b _ h i g h ∗ 1 0 200 + a b _ l o w q = a b _ l o w ∗ 1 0 200 + a b _ h i g h ⇒ n = a b ∗ 1 0 400 + ( a b _ h i g h 2 + a b _ l o w 2 ) ∗ 1 0 200 + a b 设ab\_high为p的前半段,ab\_low为p的后半\\ 即ab\_high = p // 10^{200}, ab\_low = p \% 10^{200}\\ 令ab = ab\_high * ab\_low\\ p = ab\_high * 10^{200} + ab\_low\\ q = ab\_low * 10^{200} + ab\_high\\ \Rightarrow n = ab * 10 ^{400} + (ab\_high^{2} + ab\_low^{2}) * 10^ {200} + ab\\ ab_highp的前半段,ab_lowp的后半ab_high=p//10200,ab_low=p%10200ab=ab_highab_lowp=ab_high10200+ab_lowq=ab_low10200+ab_highn=ab10400+(ab_high2+ab_low2)10200+ab
得到:

在这里插入图片描述
通过对n移位等操作可以得到ab高位和低位,考虑到可能有进位,取高199位,之后爆破一位即可得到完整ab,ab知道便可得到 a b _ h i g h 2 + a b _ l o w 2 ab\_high^2 + ab\_low^2 ab_high2+ab_low2,如此a,b也能分别求出来了

from gmpy2 import *
from Crypto.Util.number import *
c=182812482972168423884795132699225934365072979206288632257180603530046820174392675977209758378734399146216742345585898385168866887000708558119959898992294085847474548306743585711154035585848291290988967352517174312220756638881837930962458861193652684492265539096477345065113556380573776423787885892688197584678128636231428194711357642971544417113415626331810909274966752557628893585198569815939514862013512237657828262360291726912615575646318630641527418369988268899879152029186728850816178597399494254385226049249357897840618728804680238123954207656671747782543031545429711152272581734051959578453680011676521727918037340906791388178004979453256050227967701258768070039292546964652071924183467364467145178290753361477912582242961929982420950384199259355122986865808523351306098081481072454093823090
n=438980397031315392229453908048509540832246041631432878509579665664182747463100230160823865621798053164989325086085003940181731721089701380743698761443812523024144817205902380903062054138730658451286904347536210833160924917347633148983052015550354913154312162901555870494273903714349869746793861874257201085777893961715468950661641778512110325457371446203379767458862059193946434683324578530163650541637261158037041205642428802942295011562277084687025213626698849526240663754073508102229066475773893638716845176469070938803298515155140240970836387785401085919369741520890271902332951669953411373633688944162470994856654604872287103746922041844065053274059990595496159866206551119361036237431289830985174384522423364811997241255005514248198447925396378192915553898993758660041223393168707380580012437
e=65537

ab_high = n // (10 ** 601) #
ab_low = n % (10 ** 200)
ab = ab_high * (10 ** 200) + ab_low

for i in range(10):
    print(i)
    ab = ab_high * 10 ** 201 + i * 10 ** 200 + ab_low
    a2b2 = (n - ab * (10 ** 400 + 1)) // 10 ** 200
    a_add_b = iroot(abs(a2b2 + 2 * ab),2)

    if a_add_b[1]:
        a_sub_b = iroot(abs(a2b2 - 2 * ab),2)[0]
        a = (a_add_b[0] + a_sub_b) // 2
        b = ab // a
        p = a * (10 ** 200) + b
        q = b * (10 ** 200) + a
        d = invert(e,(p-1)*(q-1))
        print(long_to_bytes(pow(c,d,n)))
# CMISCCTF{easy_math_game_hhhhhhh}        

题4

题目描述:

import gmpy2
from Crypto.Util.number import bytes_to_long
from fractions import Fraction

flag = "***"

assert gmpy.is_prime(p) * gmpy.is_prime(q) > 0
assert Fraction(p, p + 1) + Fraction(q + 1, q) == Fraction(2 * s - X, s + Y)
print('p / (p + 1) + (q + 1) / q) == (2 * s - %s) / (s + %s)' % (X, Y))

n = p * q
c = pow(bytes_to_long(bytes(flag, "utf-8")), 0x10001, n) # 转字节
print('n =', n)
print('c =', c)
'''
p / (p + 1) + (q + 1) / q) == (2 * s - 153801856029563198525204130558738800846256680799373350925981555360388985602786501362501554433635610131437376183630577217917787342621398264625389914280509) / (s + 8086061902465799210233863613232941060876437002894022994953293934963170056653232109405937694010696299303888742108631749969054117542816358078039478109426)
n = 161010103536746712075112156042553283066813155993777943981946663919051986586388748662616958741697621238654724628406094469789970509959159343108847331259823125490271091357244742345403096394500947202321339572876147277506789731024810289354756781901338337411136794489136638411531539112369520980466458615878975406339
c = 15380535750650959213679345560658190067564859611922563753882617419201718847747207949211621591882732604480600745000879508274349808435529637573773711729853565120321608048340424321537282281161623712479117497156437792084977778826238039385697230676340978078264209760724043776058017336241110097549146883806481148999
'''

题目分析:
p p + 1 + q + 1 1 = 2 s − X s + Y   2 n + p + q + 1 n + q = 2 s − X s + Y   假设 2 s − X = 2 n + p + q + 1 s + Y = n + q 又 n = p ∗ q 三个等式解方程得 p , q , 最后得 f l a g \frac{p}{p+1}+\frac{q+1}{1}=\frac{2s-X}{s+Y}\\ \ \\ \frac{2n+p+q+1}{n+q}=\frac{2s-X}{s+Y}\\ \ \\ 假设2s-X=2n+p+q+1\\ s+Y=n+q\\ 又 n = p * q\\ 三个等式解方程得p,q,最后得flag\\ p+1p+1q+1=s+Y2sX n+q2n+p+q+1=s+Y2sX 假设2sX=2n+p+q+1s+Y=n+qn=pq三个等式解方程得p,q,最后得flag

from z3 import *
from gmpy2 import *
from Crypto.Util.number import *
n = 161010103536746712075112156042553283066813155993777943981946663919051986586388748662616958741697621238654724628406094469789970509959159343108847331259823125490271091357244742345403096394500947202321339572876147277506789731024810289354756781901338337411136794489136638411531539112369520980466458615878975406339
c = 15380535750650959213679345560658190067564859611922563753882617419201718847747207949211621591882732604480600745000879508274349808435529637573773711729853565120321608048340424321537282281161623712479117497156437792084977778826238039385697230676340978078264209760724043776058017336241110097549146883806481148999
x = 153801856029563198525204130558738800846256680799373350925981555360388985602786501362501554433635610131437376183630577217917787342621398264625389914280509
y = 8086061902465799210233863613232941060876437002894022994953293934963170056653232109405937694010696299303888742108631749969054117542816358078039478109426

ss = Solver()
p,q,s = Ints('p q s')
ss.add(2 * n + p + q + 1 == 2 * s - x)
ss.add(n + q == s + y)
ss.add(n == p * q)
if ss.check() == sat:
    print(ss.model())
    
p = 12774247264858490260286489817359549241755117653791190036750069541210299769639605520977166141575653832360695781409025914510310324035255606840902393222949771
q = 12604273285023995463340817959574344558787108098986028639834181397979984443923512555395852711753996829630650627741178073792454428457548575860120924352450409
s = 161010103536746712075112156042553283066813155993777943981946663919051986586388748662616958741697621238654724628406094469789970509959159343108847331259823112877911744430783479794351273206923447354336803583953484448372097816077196309188969276642688889403610864534620155124825996688886945889074240416915144846504
e = 65537
d = invert(e,(p - 1)*(q - 1))
print(long_to_bytes(pow(c,d,n)))
# flag{2a5a9c6fe94da5ef7edeffebb506b29a}

考点:p已知一半位数爆破8位,开根,拼接,解方程

唉,最近好忙,开学了事好多啊,一些要深入的知识点也还没看。作业还没做,去苟作业了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1025409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新消费降温,良品铺子还能走多远?

如果时间倒退到多年前&#xff0c;杨红春应该不会料到现在良品铺子的境遇。 从2006年创立至今&#xff0c;前半段良品铺子经历了品牌升级&#xff0c;从线下发展到平台电商、社交电商&#xff0c;做APP客户端进行全渠道的营销&#xff0c;把一家曾入不敷出的小店&#xff0c;养…

echarts 轴文字内容太长导致显示不全解决方案

情况&#xff1a;Y轴内容是文字&#xff0c;内容太长可能会系那是不全。调整grid会导致短数据前的留白过于多。 解决方案&#xff1a; 方法一&#xff1a; 首先可以配置grid自适应 &#xff0c; containLabel 属性设置true &#xff08;这常用于『防止标签溢出』的场景&…

51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)

51单片机光照强度检测自动路灯开关仿真( proteus仿真程序报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0052 讲解视频 基于51单片机的光照检测自动路灯控制仿真设计( proteus仿…

42V转5V芯片——高效率、宽压输入范围和强大输出能力

42V转5V芯片——高效率、宽压输入范围和强大输出能力 摘要&#xff1a; 42V转5V芯片是一种电源管理解决方案&#xff0c;可以将高达42V的输入电压转换为稳定的5V输出电压。该芯片以其高效率、宽压输入范围和强大的输出能力而备受关注。它具有93%的转换效率&#xff0c;能够在广…

学Python的漫画漫步进阶 -- 第十五步.访问数据库

学Python的漫画漫步进阶 -- 第十五步.访问数据库 十五、访问数据库15.1 SQLite数据库15.1.1 SQLite数据类型15.1.2 Python数据类型与SQLite数据类型的映射15.1.3 使用GUI管理工具管理SQLite数据库 15.2 数据库编程的基本操作过程15.3 sqlite3模块API15.3.1 数据库连接对象Conne…

使用Tensorboard碰到AttributeError: module ‘distutils‘ has no attribute ‘version‘

当出现这个错误时 说明 当前tensorboard的版本和你安装的pytorch版本不匹配&#xff0c;tensorboard版本太 高&#xff0c;pytorch太低。 使用conda list查看你的setuptools版本 conda list我的版本有点高68&#xff0c;所以我需要降低版本&#xff0c;使用以下命令降低版本…

解读|美创深度参与5项电信和互联网行业数据安全标准发布实施

《数据安全法》、《个人信息保护法》等法律法规的颁布实施&#xff0c;坚持安全和发展并重的原则&#xff0c;积极应对复杂严峻的安全风险与挑战&#xff0c;加速构建数据安全保障体系&#xff0c;成为电信和互联网行业重要工作。 “安全发展、标准先行”&#xff0c;标准化工作…

ATLAS 200通过PCIE 接入RK3588-EP模式

ATLAS 200 作为算理模块&#xff0c;可以作为主/协处理器接入RK3588,有两种模式&#xff1a;RC 模式和EP模式 RC模式&#xff1a;rk3588 和 ATLAS 200 可分别独立处理自身业务数据&#xff0c;不存在业务互相依赖&#xff0c;二者可通过网络等方式进行通信&#xff0c;ATLAS …

用它免费查询电商评论数据,轻松实现品牌洞察!

item_review-获得淘宝商品评论 公共参数 名称类型必须描述keyString是调用key&#xff08;注册账号获取key&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cacheString否[…

Spring配置非定义的Bean

前言 在前文中&#xff0c;xml配置文件中的Bean都是我们自己定义配置的&#xff0c;例如&#xff1a;UserDaoImpl&#xff0c;UserDAO等。但是在实际开发过程中有些功能类并不是我们自己定义的&#xff0c;而是使用第三方jar包中的&#xff0c;俺么这些Bean要想让Spring进行管…

2023年PMP考试改革情况?新教材和新题型?

改革就是使用新考纲和新教材。教材由第六版变为第七版&#xff0c;这个问题也不大&#xff0c;主要是根据考纲的内容出题&#xff0c;备考学习预测敏捷项目管理内容即可。 没有出新的改为新题型的通知&#xff0c;但要随时做好题型变化的准备&#xff0c;或许题型会增加填空题…

多少得有点升级,才能对得起价格!iPhone15系列电池寿命见长

我有一些好消息。根据我们的电池测试&#xff0c;iPhone 15系列中的每一款机型都比前代机型提供了更好的电池寿命。这可能是由于每部手机中都有稍大的电池和更高效的芯片。 我们对iPhone 15、iPhone 15 Plus、iPhone 15 Pro和iPhone 15 Pro Max进行了Tom’s Guide电池测试&…

SAP DN已发货但是需求还挂在MD04上的异常处理(SE38执行程序:ATP_VBBE_CONSISTENCY OR SDRQCR21)

背景&#xff1a;DN 80074061已经发完货&#xff0c;但是在MD04上还挂着它的需求 处理方法&#xff1a; HANA S4 版本&#xff0c; SE38 执行程序 ATP_VBBE_CONSISTENCY HANA之前的版本执行程序 SDRQCR21 以 ATP_VBBE_CONSISTENCY 为例&#xff0c;先选择模拟模式 执行&…

C#上位机:现代编程中的全能工具?

C#上位机&#xff1a;现代编程中的全能工具&#xff1f; C#作为现代、安全、易用的编程语言&#xff0c;在多领域具有广泛应用&#xff0c;尤其在上位机开发中脱颖而出。输入“777”&#xff0c;即刻获取关于上位机开发和数据可视化的专业学习资料&#xff0c;工业自动化、物…

打造自己的美颜应用:使用视频直播美颜sdk的步骤

当下&#xff0c;视频直播已经成为人们分享自己生活、技能和兴趣的流行方式。但是&#xff0c;随着竞争的加剧&#xff0c;提供高质量视频直播体验变得至关重要。其中一个重要因素是美颜效果&#xff0c;这已经成为吸引观众的重要因素之一。幸运的是&#xff0c;现在有许多视频…

pycharm导入包提示:ModuleNotFoundError: No module named ‘xxx‘

解决方法 1、进入file-settings-projects-python interpreter&#xff0c;点击Show All&#xff1a; 2、在Show All窗口中按如下操作&#xff1a; 保存后即可

电脑内存怎么看?一分钟搞定!

电脑内存是计算机系统中重要的硬件组件之一&#xff0c;它直接影响着系统的性能和运行速度。了解电脑内存的使用情况对于优化系统性能和进行硬件升级非常重要。本文将介绍电脑内存怎么看的三个方法&#xff0c;以便更好地管理计算机性能。 方法1&#xff1a;任务管理器 电脑使…

易点易动RFID固定资产管理系统:实现极速盘点与全生命周期管理

在现代企业管理中&#xff0c;固定资产的盘点和管理一直是一项繁琐而重要的任务。然而&#xff0c;通过易点易动RFID固定资产管理系统&#xff0c;集团公司可以实现固定资产的快速盘点、全生命周期管理以及有效防止资产丢失。本文将详细介绍易点易动RFID固定资产管理系统如何助…

Jmeter性能测试吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 jmeter性能测试&#xff1a;2023最新的大厂jmeter性能测试全过程项目实战详解&#xff0c;悄悄收藏&#xff0c;后面就看不到…

【新版】系统架构设计师 - 案例分析 - 系统维护与设计模式

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 系统维护与设计模式典型例题 1典型例题 2 架构 - 案例分析 - 系统维护与设计模式 典型例题 1 某企业两年前自主研发的消防集中控制软件系统在市场上取得了较好的业绩&#xff0c;目前…