[ritsec CTF 2024] 密码部分

news2024/11/24 15:35:16

这个比较密码这块还是比较简单的,经过问了N人以后终于完成。

[Warm Up] Words

给了个猪圈密码的图片,这东西好久不见的感觉。

[Warm Up] Emails

 MTP似乎也没多好的方法,猜更快,先给了几封email然后一个用MTP长度是32(有提示)的加密,每封信的格式其实是差不多的。猜一下就十几个字符了。再一点点猜就OK

from pwn import xor

msg = open('email5.enc','rb').read()

l = 32
key = xor(b'Good evening,\r\n\r\nFinally, I feel',msg[:l])
for i in range(0, len(msg), l):
    v1 = msg[i:i+l]
    print(xor(key,v1))

'''
b'Good evening,\r\n\r\nFinally, I feel like it's safe to send you the flag. It's:\r\nRS{Th4T's_n0T_h0w_Y0u_u53_OTP}\r\nDon't share it with anyone!! It's very secret!\r\n\r\nThanks,\r\n- Your Secret Conspirator
'''

Dastardly Evil Scientists

给了一个远端的DES加密,这有点像脑筋急转弯,因为这个远端交互的部分没用。

from Crypto.Cipher import DES
from Crypto.Util.Padding import pad
from secret import KEY, FLAG

BLOCK_SIZE = 64

key = bytes.fromhex(KEY)
cipher = DES.new(key, DES.MODE_ECB)
flag = cipher.encrypt(pad(bytes(FLAG, "utf-8"), BLOCK_SIZE))

print("Here's the flag (in hex):", flag.hex())
print("=" * 64)
print("Encrypt something if you want, you can choose the key and the plaintext :)")
while True:
    try:
        key = bytes.fromhex(input("Key (in hex): "))
        plaintext = bytes.fromhex(input("Message to encrypt (in hex): "))
        print("=" * 64)
        cipher = DES.new(key, DES.MODE_ECB)
        ciphertext = cipher.encrypt(pad(plaintext, BLOCK_SIZE))
        print("Here's your message! (in hex):", ciphertext.hex())
        print("Here's your message! (in bytes):", ciphertext)
        print("=" * 64)
    except KeyboardInterrupt:
        break

其实就是根据一个DES的密文在没有key的情况下恢复,问了才知道用弱密码。这东西技术本来就没解,猜。

'''
┌──(kali㉿kali)-[~/ctf/2403]
└─$ nc ctf.ritsec.club 30984
Here's the flag (in hex): 28e3a0ff9089aecc83465e470624a89253a1aac856a4f7ff08b4648b7c5eff9aa41a0dd1c7fc15995382dc3149dfcccf82241fb566fb5a0382241fb566fb5a03
================================================================
Encrypt something if you want, you can choose the key and the plaintext :)
Key (in hex): 
'''
keys = [
'0101010101010101',
'FEFEFEFEFEFEFEFE',
'E0E0E0E0F1F1F1F1',
'1F1F1F1F0E0E0E0E',
'0000000000000000',
'FFFFFFFFFFFFFFFF',
'E1E1E1E1F0F0F0F0',
'1E1E1E1E0F0F0F0F']

from Crypto.Cipher import DES
enc = bytes.fromhex('28e3a0ff9089aecc83465e470624a89253a1aac856a4f7ff08b4648b7c5eff9aa41a0dd1c7fc15995382dc3149dfcccf82241fb566fb5a0382241fb566fb5a03')
for key in keys:
    key = bytes.fromhex(key)
    cipher = DES.new(key, DES.MODE_ECB)
    print(cipher.encrypt(enc))

#RS{W0W_TH1S_K3YSP4C3_1S_4S_FL4T_4S_34RTH}

Failed File Transfer

这也是个急转弯,给了3组n,e,c 其中n1=n2是个共模攻击,与第3个毫无关系(分解了也解不出来)。

n1 = 0x00E066F78031520F1DD7AFF5EC5D59CD7AA68ECD4C394A1EC9792CF179E24C33F59AC856E61836C7AA34A3617316615F58743B9401507A423853AA31C5FCB8543E99DC23A52BF09CC65714406458C912CFB9CC3DAF41F1221294703846465F92B747FE3CB2E8444CACF38ECF5FAF78C4207569ECAE91D98ECA132E2C15BF6FDD51D399FE8A645B69C01CDCA2604AE9434BACD6C3B2BF41B4D41415425FC0D590E0579935C723FDA0887528BF20C8ADE06E7FF96FD0755694AE9501F905363F448A5546E083A1EDC901FBED1156E51BB095388EBE5672F695B395A2334FF156A6DD170A9D6EDD58E4415AB437E0D6A5C20C15CB946081ACDBA9AE1904668A2094A7
e1 = 0x11

n2 = 0x00E066F78031520F1DD7AFF5EC5D59CD7AA68ECD4C394A1EC9792CF179E24C33F59AC856E61836C7AA34A3617316615F58743B9401507A423853AA31C5FCB8543E99DC23A52BF09CC65714406458C912CFB9CC3DAF41F1221294703846465F92B747FE3CB2E8444CACF38ECF5FAF78C4207569ECAE91D98ECA132E2C15BF6FDD51D399FE8A645B69C01CDCA2604AE9434BACD6C3B2BF41B4D41415425FC0D590E0579935C723FDA0887528BF20C8ADE06E7FF96FD0755694AE9501F905363F448A5546E083A1EDC901FBED1156E51BB095388EBE5672F695B395A2334FF156A6DD170A9D6EDD58E4415AB437E0D6A5C20C15CB946081ACDBA9AE1904668A2094A7
e2 = 0x10001

n3 = 0x00B83B727303CCA9589A2A2B9AF5018C95F790608611EF866CF9A4C418A0D7DEF8D3F8EB1DDB4F209BED973903B815BBAE7C5528656265217DF68D54D699CA8B1E538DC6333681835A0B37F3040845E3CCE66B246AB2C85DAE92249527E370F4025C0328780F673422B06F50851F8E541F0F0A44FC3B196BC4E1AB8C6822987445555DC2F5950BF131EA0000D75572311837B52B7878D3A95E7C6ED2506481B5DA5E2F958AD4C9B6F5ECCB5A745308713A4FED8075FC91BCF2B4F21A692755E57806785019DEF5A2B268EA515F7C98D5F0D9D601F71FB4DF9C447BDB2AA41E297D2BDA6EA3542CD23B3355000CB8B88969E86831B684E5D9F17EB575ED1A9D4BC1
e3 = 3

from Crypto.Util.number import *
from gmpy2 import *
c1 = bytes_to_long(open('file1.txt','rb').read())
c2 = bytes_to_long(open('file2.txt','rb').read())
c3 = bytes_to_long(open('file3.txt','rb').read())

c1 = 11245878960087837261153516178684850454637136825484561550726912432349025296699694537872464349657733966826298283722786787933292056762759914076568007800566819942953557122977296478823083370205733249120718240013540365420405155115022388180051960802673652141559924942805827069850744998102254791685219410995184646316624102478708619178993243689040667230101593137349589107630305725689690939494305295499595455919109021945288211347640189838071821958185609046927008536889084147708562575440838230905838959519444560623562334687780414679184669161400916951922315233235810181868590747124614034500752457446358264532085815447285388073591
c2 = 16054994042311146186017609971632669838086039843925903279538251084169470320180830257196284538399796375682305705861424990272712206680326511935759065824972211750810396652005162857469803598720642557738604616794819369477983021340676007820878452867128139544526573553396360802705352396219060613392389540623902265215962677795832211589342073667420169650393268864124684435310861882097065213761756697025358974337991278905840043953671014003772900188734819841892901029660981787710334983605848616213210453940682289680252874387317386217578517608737723983756020598610426318181178794250467061361414561885082927773205471084373198179425
c3 = 20172398454481629709076152409120771119119636979189949766325302829870418847404497225982242452780243034238156558627368219057394137220128633740921274776445357416208523061501396375233405630630997666632960294747690427691310748022697040779115269467122991941859552531609447427683470428776973201589275412116191256662447910727158038828967329100259233048374570118492407923826709529836351193509410233823073092428830866679199977883169773243118628390507390065104100344830823694677958503145301186964407354825966110389585254787043844756466689845402596869978196900487069209922397756567505347271078963033190976335693178538107766271636

#n1=n2 共模攻击
import libnum
import gmpy2
 
def rsa_gong_N_def(e1,e2,c1,c2,n):  #共模攻击函数
    e1, e2, c1, c2, n=int(e1),int(e2),int(c1),int(c2),int(n)
    print("e1,e2:",e1,e2)
    s = gmpy2.gcdext(e1, e2)
    print("mpz:",s)
    s1 = s[1]
    s2 = s[2]
    if s1 < 0:
        s1 = - s1
        c1 = gmpy2.invert(c1, n)
    elif s2 < 0:
        s2 = - s2
        c2 = gmpy2.invert(c2, n)
    m = (pow(c1,s1,n) * pow(c2 ,s2 ,n)) % n
    return int(m)

long_to_bytes(rsa_gong_N_def(e1,e2,c1,c2,n1))
#RS{Y0U_C4NT_R3AD_M3_R1GHT??}

Old Fashioned Crypto

一个背包加密,key*r,后部的10个取了模

import json
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from math import gcd, log2, ceil


class CryptoSystem:
    def __init__(self, size, pub_key=None, priv_key=None):
        self.size = size
        if pub_key is None and priv_key is None:
            self._gen_keys()
        elif pub_key is None:
            self.priv_key = priv_key
            self._prv_lst, self._prv_q, self._prv_r, self._prv_r_inv = self.priv_key
            self._gen_pub_key()
        else:
            self.priv_key = priv_key
            if self.priv_key is not None:
                self._prv_lst, self._prv_q, self._prv_r, self._prv_r_inv = self.priv_key
            self.pub_key = pub_key

    def _gen_keys(self):
        lst = []
        total = 0
        for i in range(self.size):
            nxt = total + sum(get_random_bytes(4))
            total += nxt
            lst.append(nxt)
        self._prv_lst = lst
        self._prv_q = total + sum(get_random_bytes(4))
        self._prv_r = 0
        while gcd(self._prv_r, self._prv_q) != 1:
            self._prv_r = sum(get_random_bytes(8))
        self._inv(self._prv_r, self._prv_q)
        self.priv_key = (self._prv_lst, self._prv_q, self._prv_r, self._prv_r_inv)
        self._gen_pub_key()

    def _inv(self, a, b):
        x, y = self._inv_help(a, b)
        self._prv_r_inv = x + b if x < 0 else x

    def _inv_help(self, a, b):
        if a == 1 and b == 0:
            return 1, 0
        x_p, y_p = self._inv_help(b, a % b)
        x = y_p
        y = x_p - y_p * (a // b)
        return x, y

    def _gen_pub_key(self):
        self.pub_key = [(self._prv_r * w) % self._prv_q for w in self._prv_lst]

    def encrypt(self, data):
        if len(data) * 8 > self.size:
            raise ValueError(f"Data too big! Data has {len(data)*8} bits, can only encrypt {self.size} bits")
        val = int.from_bytes(data, 'big')
        tot = 0
        for i in range(self.size):
            if val & (1 << (self.size - 1 - i)):
                tot += self.pub_key[i]
        return tot.to_bytes(ceil(log2(tot)/8), 'big')

    def decrypt(self, ct):
        if self.priv_key is None:
            raise ValueError('This instance not created with private key; Cannot decrypt!')
        inv = (int.from_bytes(ct, 'big') * self._prv_r_inv) % self._prv_q
        data = 0
        for i in range(self.size-1, -1, -1):
            if self._prv_lst[i] <= inv:
                inv -= self._prv_lst[i]
                data |= (1 << (self.size - 1 - i))
        return data.to_bytes(self.size//8, 'big')


def main():
    n = 128
    c = CryptoSystem(n)
    key = get_random_bytes(n//8)
    enc_key = c.encrypt(key)
    iv = get_random_bytes(n//8)
    sym_c = AES.new(key, mode=AES.MODE_CBC, iv=iv)
    with open('flag.txt', 'rb') as f:
        flag = f.read()
    enc_flag = sym_c.encrypt(pad(flag, AES.block_size))
    with open('output.json', 'w') as f:
        json.dump({'enc_flag': enc_flag.hex(), 'enc_key': enc_key.hex(), 'pub_key': c.pub_key, 'iv': iv.hex()}, f)


if __name__ == '__main__':
    main()

因为背包前边比较小,通过gcd可以得到r,然后10个需要爆破一下,同时模也需要同步爆破。

key[k] = sum(key[:k]) + delta ,delta<=1020

不过最后的结果是不管爆破的哪个值都能得到正确的flag,任取其一即可。

key = [640152, 1168382, 2253084, 4674574, 9047900, 18456670, 37021078, 73718942, 147269478, 294724098, 589585222, 1179181950, 2358463270, 4716668178, 9433832160, 18867248012, 37734327618, 75468823642, 150937904600, 301875276786, 603750933270, 1207501571568, 2415003160918, 4830006433758, 9660012935506, 19320025912852, 38640051750392, 77280103282170, 154560206677308, 309120413125542, 618240826573252, 1236481653212402, 2472963306421666, 4945926612902954, 9891853225704446, 19783706451335672, 39567412902928660, 79134825805593728, 158269651611315068, 316539303222675114, 633078606445099188, 1266157212889999636, 2532314425780479386, 5064628851560855218, 10129257703121405004, 20258515406242969000, 40517030812485923356, 81034061624971802780, 162068123249943657860, 324136246499887437056, 648272492999774915952, 1296544985999549766006, 2593089971999099471344, 5186179943998199255442, 10372359887996398278672, 20744719775992796462158, 41489439551985593093768, 82978879103971186299458, 165957758207942372543478, 331915516415884744919596, 663831032831769489761788, 1327662065663538979557048, 2655324131327077959251122, 5310648262654155918162294, 10621296525308311836756586, 21242593050616623673275730, 42485186101233247346600622, 84970372202466494693276556, 169940744404932989386548928, 339881488809865978773018360, 679762977619731957546165378, 1359525955239463915092196868, 2719051910478927830184595614, 5438103820957855660369059432, 10876207641915711320738278902, 21752415283831422641476275384, 43504830567662845282952694070, 87009661135325690565905228102, 174019322270651381131810641346, 348038644541302762263621052572, 696077289082605524527242502624, 1392154578165211049054484845210, 2784309156330422098108969790836, 5568618312660844196217939281470, 11137236625321688392435878881970, 22274473250643376784871757533820, 44548946501286753569743515154458, 89097893002573507139487030340296, 178195786005147014278974060857366, 356391572010294028557948121450094, 712783144020588057115896242990144, 1425566288041176114231792485875688, 2851132576082352228463584971803676, 5702265152164704456927169943738102, 11404530304329408913854339887111150, 22809060608658817827708679774659528, 45618121217317635655417359549268848, 91236242434635271310834719098693550, 182472484869270542621669438196865146, 364944969738541085243338876394136140, 729889939477082170486677752787944882, 1459779878954164340973355505576101056, 2919559757908328681946711011152194790, 5839119515816657363893422022304309038, 11678239031633314727786844044608554270, 23356478063266629455573688089217321924, 46712956126533258911147376178434543432, 93425912253066517822294752356869114060, 186851824506133035644589504713738135026, 373703649012266071289179009427476613140, 747407298024532142578358018854952805788, 1494814596049064285156716037709905827052, 2989629192098128570313432075419811602850, 5979258384196257140626864150839623163860, 11958516768392514281253728301679246338180, 23917033536785028562507456603358492659624, 47834067073570057125014913206716985424894, 95668134147140114250029826413433970529712, 4024280977508761976100681034599517010909, 8048561955017523952201362069199034004036, 16097123910035047904402724138398067786320, 32194247820070095808805448276796135496282, 64388495640140191617610896553592270815790, 128776991280280383235221793107184541765468, 70241995243789299946484614422100659064021, 140483990487578599892969228844201318336196, 93655993658385733261979485896134212196063, 187311987316771466523958971792268424462208]

enc_key = 0x0351cf110fa463b393d61b1dfc0419d8d30d
enc_flag = bytes.fromhex("40ffc331e0624779d6cc8b594debb0fdfd65a21d9841f61ab5cfd5b2809bd0d91e5a2da049dbdf2ad8dceaadeee718ce")
iv = bytes.fromhex("631232abc39e6d838e6e1072a88b369a")

from Crypto.Cipher import AES
from gmpy2 import invert
from math import gcd 

#前部gcd得到r
r = key[0]
for i in key[1:118]:
    r = gcd(r,i)

#r=1046
vkey = [i//r for i in key[:118]]
#[118,127]模过,求模q
#最大差1024
b117 = sum(vkey)
qa2 = []
minmod = max(key)
def get_qr(idx,lst,total,m): #[118,128)
    global qa2
    if idx>=128:
        print(m-total)
        qa2.append(lst+[m])
        return
    for i in range(1021):
        k = total+i 
        nm = gcd(m,k*r - key[idx])
        if nm>minmod and nm> total+k:
            get_qr(idx+1,lst+[k],total+k, nm)

for i in range(1,1021):
    a118 = b117+i 
    m0 = a118*r - key[118]   #k118 = a118*r mod q = a118*r - kq
    #print(a118,m0)
    get_qr(119,vkey+[a118],b117+a118, m0)

def decrypt(ct, prv_lst, prv_q,prv_r):
    inv = ct * invert(prv_r,prv_q) % prv_q
    data = 0
    for i in range(127, -1, -1):
        if prv_lst[i] <= inv:
            inv -= prv_lst[i]
            data |= (1 << (127 - i))
    if inv==0:
        ek = long_to_bytes(data, 16)
        aes = AES.new(ek, mode=AES.MODE_CBC, iv=iv)
        flag = aes.decrypt(enc_flag)
        print(flag)

'''
#任何一组都可以
for lst in qa2:
    pk = lst[:-1]
    q = lst[-1]
    ek = decrypt(enc_key, pk, q, r)
'''
pk,q = qa2[0][:-1],qa2[0][-1]
decrypt(enc_key, pk, q, r)
#b"RS{You'll_Need_A_Super_Increasing_Knapsack}\x05\x05\x05\x05\x05"

最后两个没看懂,i没有代码只有远端

---Flag Distribution Server

---MEaaS

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

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

相关文章

因为使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景&#xff0c;博主所在的业务组有一个核心系统&#xff0c;需要同步两个不同数据源给过来的数据到redis中&#xff0c;但是每次同步之前需要过滤掉一部分数据&#xff0c;只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…

MYSQL 8.0版本修改用户密码(知道登录密码)和Sqlyog错误码2058一案

今天准备使用sqlyog连接一下我Linux上面的mysql数据库&#xff0c;然后就报如下错误 有一个简单的办法就是修改密码为password就完事!然后我就开始查找如何修改密码! 如果是需要解决Sqlyog错误码2058的话&#xff0c;执行以下命令&#xff0c;但是注意root对应host是不是loca…

python的下载及安装

python的下载及安装 1&#xff0c;https://www.python.org 百度直接搜索python官网 2&#xff0c; 3&#xff0c;选择路径下载后&#xff0c;双击你下载的那个电脑图标应用程序 4. 1&#xff09;勾选Add Python 3.6 to PATH是把Python的安装路径添加到系统环境变量的Path变…

关于Ansible模块 ④

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 继《关于Ansible的模块 ①》、《关于Ansible的模块 ②》与《关于Ansible的模块 ③》之后&#xff0c;继续学习ansible常用模块之…

蓝桥杯-阿坤老师的魔方挑战

图示: 代码: #include <iostream> using namespace std; int main() {int N,i,j,row,col,sum,max0;cin>>N;int ar[N][N];for(i0;i<N;i){for(j0;j<N;j){cin>>ar[i][j];}//输入矩阵 }for(i0;i<N;i){row0;coli;sum0;//重新初始化while(row<N){if(c…

Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo

概述 本文探讨 Wails 框架的使用&#xff0c;从搭建环境到开发&#xff0c;再到最终的构建打包&#xff0c;本项目源码 GitHub 地址&#xff1a;https://github.com/mazeyqian/go-run-wechat-demo 前言 Wails 是一个跨平台桌面应用开发框架&#xff0c;他允许开发者利用 Go …

数据库 06-02 并发控制(锁,死锁,多粒度)

01 02. 互斥访问数据 分成两种&#xff1a; 事务控制器的作用 共享锁之间可以相容&#xff0c;但是任何一个共享锁和每一种排他锁都是互斥的 申请共享锁的命令和申请排他锁命令 如果存在排他锁&#xff0c;必须等待 只要对一个数据项&#xff0c;有读写方法&#xff…

OpenHarmony南向开发实例:【智能甲醛检测机】

样例简介 本项目是基于BearPi套件开发的智能甲醛检测系统Demo&#xff0c;该设备硬件部分主要由小熊派单板套件和和甲醛检测传感器组成。智能甲醛检测系统可以通过云和手机建立连接&#xff0c;可以在手机上设置甲醛浓度阈值&#xff0c;传感器感知到的甲醛浓度超过阈值之后&a…

202458读书笔记|《风来自你的方向》——我每次见你时的百米冲刺,加起来就是一生的长跑

《风来自你的方向》隔花人著 大绵羊BOBO绘&#xff0c;狗狗&#x1f436;绘本&#xff0c;这是看的第3本书。上俩本是《我是你的小狗 狗狗心事绘本》&#xff0c;《我是你的小狗2 当我有了你》。 同样的简短文字小狗&#x1f436;漫画&#xff0c;有爱的主人&#xff0c;有趣…

ssm033单位人事管理系统+jsp

单位人事管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本单位人事管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

Python从0到100(十一):Python字典介绍及运用

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

vue实现富文本编辑器的具体方法

可以实现富文本的插件&#xff1a;vue-quill-editor、editor-for-vue 我们以 editor-for-vue 为例实现&#xff1a; 传送门&#xff1a;wangEditor官网地址 安装&#xff1a; npm install wangeditor/editor --save npm install wangeditor/editor-for-vue --save具体使用方…

实景三维在交通与物流管理中的应用

随着信息技术的不断发展&#xff0c;实景三维技术在交通与物流领域的应用逐渐受到人们的关注。实景三维技术是一种基于计算机视觉和图像处理技术的空间信息采集和处理技术&#xff0c;它能够将现实世界中的三维场景进行高精度、高清晰度的数字化重建&#xff0c;为交通与物流领…

机器学习模型——GBDT和Xgboost

GBDT基本概念&#xff1a; GBDT&#xff08;Gradient Boosting Decision Tree&#xff0c;简称GBDT&#xff09;梯度提升决策树&#xff0c;是Gradient Boost 框架下使用较多的一种模型&#xff0c;且在GBDT中&#xff0c;其基学习器是分类回归树也就是CART&#xff0c;且使用…

三极管做简易音频放大器步骤

已知&#xff1a;使用NPN三极管&#xff0c;输入的信号为0mV到几十mV的交流电&#xff0c;设计一个简单的音频放大器。 分析1&#xff1a;输入的交流信号信号无法打开NPN三极管&#xff0c;所以需要直流电源使三极管一直处于放大状态&#xff0c;再让交流信号影响输出信号&…

小米汽车:搅动市场的鲶鱼or价格战砧板上的鱼肉?

3月28日晚&#xff0c;备受关注的小米汽车上市发布会召开&#xff0c;小米集团董事长雷军宣布小米SU7正式发布。小米汽车在带飞股价的同时&#xff0c;二轮订购迅速售尽。 图一&#xff1a;小米集团股价 雷军口中“小米汽车迈出的第一步&#xff0c;也是人生最后一战的开篇”&a…

蓝桥杯刷题-16-买瓜-DFS+剪枝优化⭐⭐

蓝桥杯2023年第十四届省赛真题-买瓜 该如何剪枝呢&#xff1f;⭐⭐ 如果当前方案的切的刀数&#xff0c;已经大于等于了之前已知合法方案的最优解&#xff0c;那么就没必要 往后搜了。如果后面的瓜的总和加起来&#xff0c;再加上当前已有的重量&#xff0c;都不到m,那么也没…

千视携 NDI 6 轻量化媒体方案亮相北京CCBN展会

展会简介 第30届中国国际广播电视网络技术展览会&#xff08;CCBN&#xff09;将于4月24至26日在北京首钢会展中心举行。此次展会将汇集全球各大数字媒体、广播电视单位以及IT、通信技术厂商。展会重点关注数字化转型、智能媒体、融媒体等主题&#xff0c;并展示最新的5G、4K/8…

12.java openCV4.x 入门-HighGui之图像窗口显示

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

Ubuntu Desktop 免费的文件 / 目录差异比较工具 (Beyond Compare 为收费软件)

Ubuntu Desktop 免费的文件 / 目录差异比较工具 [Beyond Compare 为收费软件] 1. Installation2. Meld Diff Viewer3. Lock to LauncherReferences Meld - Visual diff and merge tool https://meldmerge.org/ Meld helps you compare files, directories, and version contro…