NSSCTF-[NSSRound#X Basic]ez_z3 [MoeCTF 2022]Art [HDCTF2023]basketball

news2025/4/18 6:13:25

目录

NSSCTF-[NSSRound#X Basic]ez_z3

 [MoeCTF 2022]Art

[HDCTF2023]basketball


NSSCTF-[NSSRound#X Basic]ez_z3

题目下载:下载

查壳:

发现有upx壳,但是使用upx -d命令不能脱壳,载入十六进制编辑器查看
把XYU改为UPX,就可以成功使用upx -d脱壳了。

载入IDA(部分使用了自定义命名)

 倒着往前看,输出“you get the flag”就要dword_1400254C4==1,而dword_1400254C4由sub_1400110E6()函数赋值而来,所以跟进sub_1400110E6()函数:

 要想返回1,则这个等式成立,即这两个数组相同。

返回到主函数,看其他的函数

看一下sub_1400112F8()函数:

这就是一个简单的异或。

看sub_14001103C()函数:是很多等式,可以用z3求出a1[0]-a1[19]。

看一下sub_140014CC0()函数:这是一个指数折半快速幂求法,可以参考:快速幂算法 超详细教程_qascetic的博客-CSDN博客
我在这里在简单阐述一下上面的这个快速幂流程,具体地大家可以参考上面的链接。a1是底数,a2是指数,首先判断指数是奇数还是偶数。

如果是偶数即if条件不成立,那么就a1*a1底数变为平方,a2>>2相当于除以2,指数折半,这样一直执行下去,直到a2为1,是奇数,这样就执行if的子句1把结果赋值给v3返回。

如果是奇数,就先分离出一个,然后在采用快速幂法,最后通过v3返回。

好了关键的函数都分析完了,整体思路就是:

1.先用z3约束器求出a1数组的值,也即异或操作里的a1数组
2.通过异或操作,a1已知,求出dword_140025520[]数组
3.dword_140025520[]已知,通过快速幂爆破出str

所以代码如下

from z3 import *
#z3约束器
a1=[0]*20
for i in range(20):
    a1[i]=Int('a1['+str(i)+']')

s = Solver()
s.add((20 * a1[19] * 19 * a1[18]
      + 14 * a1[13]
      + 13 * a1[12]
      + 11 * a1[10] * 10 * a1[9]
      + 30 * a1[5]
      + 5 * a1[4]
      + a1[0]
      + 2 * a1[1]
      - 3 * a1[2]
      - 4 * a1[3]
      - 7 * a1[6]
      + 8 * a1[7]
      - 9 * a1[8]
      - 12 * a1[11]
      - 16 * a1[15] * 15 * a1[14]
      - 17 * a1[16]
      - 18 * a1[17]) == 2582239)
s.add((20 * a1[19] * 19 * a1[18]
      + 14 * a1[13]
      + 13 * a1[12]
      + 11 * a1[10] * 10 * a1[9]
      + 30 * a1[5]
      - 7 * a1[6]
      + 8 * a1[7]
      - 9 * a1[8]
      + 5 * a1[4]
      + 3 * a1[2]
      + 2 * a1[1] * a1[0]
      - 4 * a1[3]
      - 12 * a1[11]
      - 16 * a1[15] * 15 * a1[14]
      - (18 * a1[17]
         + 17 * a1[16])) == 2602741)
s.add((19 * a1[18]
      + 18 * a1[17]
      + 14 * a1[13] * 13 * a1[12]
      + 12 * a1[11] * 11 * a1[10]
      + 9 * a1[8]
      + 7 * a1[6] * 30 * a1[5]
      + a1[0]
      - 2 * a1[1]
      - 4 * a1[3] * 3 * a1[2]
      - 5 * a1[4]
      + 8 * a1[7]
      - 10 * a1[9]
      - 15 * a1[14]
      - 17 * a1[16] * 16 * a1[15]
      - 20 * a1[19]) == 2668123)
s.add((20 * a1[19] * 19 * a1[18]
      + 14 * a1[13]
      + (13 * a1[12] + 11 * a1[10] - 12 * a1[11]) * 10 * a1[9]
      + 30 * a1[5]
      + 5 * a1[4]
      + a1[0]
      + 2 * a1[1]
      - 3 * a1[2]
      - 4 * a1[3]
      - 7 * a1[6]
      + 8 * a1[7]
      - 9 * a1[8]
      - 16 * a1[15] * 15 * a1[14]
      - 17 * a1[16]
      - 18 * a1[17]) == 2520193)
s.add((18 * a1[17]
      + 17 * a1[16]
      + 15 * a1[14]
      + 13 * a1[12] * 12 * a1[11]
      + 10 * a1[9]
      + 9 * a1[8] * 8 * a1[7]
      + 3 * a1[2] * 2 * a1[1] * a1[0]
      - 4 * a1[3]
      - 5 * a1[4]
      - 30 * a1[5]
      - 7 * a1[6]
      - 11 * a1[10]
      - 14 * a1[13]
      - 16 * a1[15]
      - 19 * a1[18]
      - 20 * a1[19]) == 8904587)
s.add((18 * a1[17]
      + 7 * a1[6] * 30 * a1[5] * 5 * a1[4]
      + 4 * a1[3]
      + 8 * a1[7]
      + a1[0]
      - 2 * a1[1]
      - 3 * a1[2]
      - 9 * a1[8]
      - 11 * a1[10] * 10 * a1[9]
      - 16 * a1[15] * (13 * a1[12] + 12 * a1[11] - 14 * a1[13] - 15 * a1[14])
      - 17 * a1[16]
      - 19 * a1[18]
      - 20 * a1[19]) == 1227620874)
s.add((20 * a1[19] * 19 * a1[18]
      + 17 * a1[16]
      + 14 * a1[13]
      + 13 * a1[12]
      + 12 * a1[11] * 11 * a1[10] * 10 * a1[9]
      + 7 * a1[6] * 30 * a1[5]
      + 5 * a1[4]
      + 3 * a1[2]
      + a1[0]
      + 2 * a1[1]
      + 4 * a1[3]
      + 8 * a1[7]
      - 9 * a1[8]
      - 16 * a1[15] * 15 * a1[14]
      - 18 * a1[17]) == 1836606059)
s.add((20 * a1[19] * 19 * a1[18]
      + 16 * a1[15] * 15 * a1[14]
      + 14 * a1[13]
      + 13 * a1[12]
      + 12 * a1[11]
      + 7 * a1[6] * 30 * a1[5]
      + 5 * a1[4]
      + 2 * a1[1] * a1[0]
      - 3 * a1[2]
      + 4 * a1[3]
      + 8 * a1[7]
      - 9 * a1[8]
      - 10 * a1[9]
      - 11 * a1[10]
      - 17 * a1[16]
      - 18 * a1[17]) == 8720560)
s.add((20 * a1[19] * 19 * a1[18]
      + 14 * a1[13]
      + 13 * a1[12]
      + 11 * a1[10] * (10 * a1[9] + 30 * a1[5] + 5 * a1[4] + 4 * a1[3] - 7 * a1[6] + 8 * a1[7] - 9 * a1[8])
      + a1[0]
      + 2 * a1[1]
      - 3 * a1[2]
      - 12 * a1[11]
      - (16 * a1[15] - 17 * a1[16] - 18 * a1[17]) * 15 * a1[14]) == 11387045)
s.add((20 * a1[19] * 19 * a1[18]
      + 16 * a1[15] * 15 * a1[14]
      + 14 * a1[13]
      + 11 * a1[10] * 10 * a1[9]
      + 9 * a1[8]
      + 3 * a1[2]
      + a1[0]
      - 2 * a1[1]
      + 4 * a1[3]
      - 5 * a1[4]
      - 30 * a1[5]
      - 7 * a1[6]
      + 8 * a1[7]
      - 12 * a1[11]
      - 13 * a1[12]
      - 17 * a1[16]
      - 18 * a1[17]) == 7660269)
s.add((20 * a1[19] * 19 * a1[18]
      + 14 * a1[13]
      + 13 * a1[12]
      + 11 * a1[10] * 10 * a1[9]
      - 12 * a1[11]
      + a1[0]
      + 2 * a1[1]
      - (4 * a1[3] * 3 * a1[2]
         - 5 * a1[4]
         - 30 * a1[5])
      - 7 * a1[6]
      + 8 * a1[7]
      - 9 * a1[8]
      - 16 * a1[15] * 15 * a1[14]
      - 17 * a1[16]
      - 18 * a1[17]) == 2461883)
s.add((14 * a1[13]
      + 11 * a1[10] * 10 * a1[9]
      + 9 * a1[8] * 8 * a1[7]
      + 7 * a1[6]
      + 2 * a1[1] * a1[0]
      - 4 * a1[3] * 3 * a1[2]
      - 5 * a1[4]
      - 30 * a1[5]
      - 12 * a1[11]
      - 13 * a1[12]
      - 15 * a1[14]
      - 17 * a1[16] * 16 * a1[15]
      - 18 * a1[17]
      - 19 * a1[18]
      - 20 * a1[19]) == -966296)
s.add((14 * a1[13]
      + 13 * a1[12]
      + (11 * a1[10] * 10 * a1[9] + 30 * a1[5] + 5 * a1[4] + 3 * a1[2] + 4 * a1[3] - 7 * a1[6] + 8 * a1[7] - 9 * a1[8])
      * 2
      * a1[1]
      + a1[0]
      - 12 * a1[11]
      - 15 * a1[14]
      - 16 * a1[15]
      - 17 * a1[16]
      - 18 * a1[17]
      - 20 * a1[19] * 19 * a1[18]) == 254500223)
s.add((16 * a1[15] * 15 * a1[14]
      + 14 * a1[13]
      + 11 * a1[10] * 10 * a1[9]
      + 7 * a1[6] * 30 * a1[5]
      + a1[0]
      - 2 * a1[1]
      - 3 * a1[2]
      - 5 * a1[4] * 4 * a1[3]
      + 8 * a1[7]
      - 9 * a1[8]
      - 12 * a1[11]
      - 13 * a1[12]
      - 17 * a1[16]
      - 18 * a1[17]
      - 19 * a1[18]
      - 20 * a1[19]) == 6022286)
s.add((18 * a1[17]
      + 16 * a1[15]
      - 17 * a1[16]
      + 14 * a1[13]
      + 12 * a1[11]
      + 11 * a1[10] * 10 * a1[9]
      + 30 * a1[5]
      + 5 * a1[4]
      + 4 * a1[3] * 3 * a1[2]
      + 2 * a1[1] * a1[0]
      - 9 * a1[8] * 8 * a1[7] * 7 * a1[6]
      - 13 * a1[12]
      - 15 * a1[14]
      - 19 * a1[18]
      - 20 * a1[19]) == -636956022)
s.add((20 * a1[19] * 19 * a1[18]
      + 13 * a1[12]
      + 12 * a1[11]
      + 11 * a1[10] * 10 * a1[9]
      + 7 * a1[6]
      + 30 * a1[5]
      + 5 * a1[4]
      + 3 * a1[2] * 2 * a1[1] * a1[0]
      - 4 * a1[3]
      - 9 * a1[8] * 8 * a1[7]
      - 14 * a1[13]
      - 15 * a1[14]
      - 16 * a1[15]
      - 17 * a1[16]
      - 18 * a1[17]) == 10631829)
s.add((20 * a1[19] * 19 * a1[18]
      + 16 * a1[15]
      - 17 * a1[16]
      - 18 * a1[17]
      + 15 * a1[14] * 14 * a1[13]
      + 13 * a1[12]
      + 11 * a1[10] * 10 * a1[9]
      - 12 * a1[11]
      + 7 * a1[6]
      + (4 * a1[3] - 5 * a1[4] - 30 * a1[5]) * 3 * a1[2]
      + a1[0]
      + 2 * a1[1]
      + 8 * a1[7]
      - 9 * a1[8]) == 6191333)
s.add((14 * a1[13]
      + 10 * a1[9] * 9 * a1[8] * 8 * a1[7]
      + 5 * a1[4]
      + 4 * a1[3] * 3 * a1[2]
      + 2 * a1[1] * a1[0]
      - 7 * a1[6] * 30 * a1[5]
      - 11 * a1[10]
      - 13 * a1[12] * 12 * a1[11]
      - 16 * a1[15] * 15 * a1[14]
      - 18 * a1[17] * 17 * a1[16]
      - 20 * a1[19] * 19 * a1[18]) == 890415359)
s.add((20 * a1[19]
      + 19 * a1[18]
      + 18 * a1[17]
      + 16 * a1[15]
      - 17 * a1[16]
      + 12 * a1[11]
      + 11 * a1[10]
      + 10 * a1[9]
      + 9 * a1[8]
      + 30 * a1[5]
      + a1[0]
      + 4 * a1[3] * 3 * a1[2] * 2 * a1[1]
      - 5 * a1[4]
      - 7 * a1[6]
      + 8 * a1[7]
      - 13 * a1[12]
      - 14 * a1[13]
      - 15 * a1[14]) == 23493664)
s.add((20 * a1[19] * 19 * a1[18]
      + 13 * a1[12]
      + 12 * a1[11]
      + 10 * a1[9]
      + 3 * a1[2] * 2 * a1[1]
      + a1[0]
      - 4 * a1[3]
      - 5 * a1[4]
      + 8 * a1[7] * 7 * a1[6] * 30 * a1[5]
      - 9 * a1[8]
      - 11 * a1[10]
      - 14 * a1[13]
      - 16 * a1[15] * 15 * a1[14]
      - 17 * a1[16]
      - 18 * a1[17]) == 1967260144)
for i in range(20):
    s.add(a1[i]<=0xFF)      #每个字符是char类型
    s.add(a1[i]>=0)
if s.check() == sat:
    print(s.model())

#求dword_140025520[]
a1=[104,97,104,97,104,97,116,104,105,115,105,115,102,97,99,107,102,108,97,103][::-1]
d4D0=[4615, 19616, 20257, 57, 107811, 570, 2342, 19623, 25952,54, 108955, 19624, 113632, 14085, 2342, 30675, 39576,
      25979, 24, 2833]
#倒序
d520=[]

for i in range(len(a1)):
    b=a1[i]^d4D0[i]
    d520.append(b)
print(d520)

#求str,即flag
flag=''
a3= [7, 7, 7, 9, 5, 6, 7, 7, 7, 9, 7, 7, 5, 7, 7, 7, 5, 7, 9, 7]

for i in range(20):   #j是要求的
    for k in range(32,128):
        v3=1
        k1=k
        a2=a3[i]
        while(a2):
            if (a2 & 1):
                v3=v3*k1
            k1=k1*k1%1000
            a2=a2>>2
        if v3==d520[i]:
            flag+=chr(k)
            break
print(flag)



 [MoeCTF 2022]Art

题目下载:下载

首先看一看题目标签和描述,可以获得一些小提示

可以知道考点是upx和dfs。

脱壳:直接upx -d 文件名就可以脱壳,载入IDA

 从上面提示可以知道这个方程有多个解,所以需要爆破来解,其中只有一个加密算法且存在多解的情况,所以采用dfs爆搜,代码如下:

check = [0x2, 0x18, 0xf, 0xf8, 0x19, 0x4, 0x27, 0xd8, 0xeb, 0x0, 0x35, 0x48, 0x4d, 0x2a, 0x45, 0x6b, 0x59, 0x2e, 0x43, 0x1, 0x18, 0x5c, 0x9, 0x9, 0x9, 0x9, 0xb5, 0x7d]
tmp = [0]*28
tmp[len(check)-1]=check[-1]
#(check[-1])

def DFS(deep):
    if deep == 0:
        print(bytes(tmp))
    else:
        for i in range(0xff):
            if (i ^ 0x19) ^ (i % 0x11 + tmp[deep]) == check[deep - 1]:
                #print(i)
                tmp[deep - 1] = i
                DFS(deep - 1)
DFS(len(check)-1)

[HDCTF2023]basketball

题目下载:下载

载入IDA,先看第一部分

 首先获得两个key,然后进行输入,输入到s数组。进入f()函数,

进行异或操作,里面有一个text_66函数,跟进:

容易知道text_66是辗转相除,这里的关键是求这两个key,采用爆破枚举方式,代码如下:
 

str=[85, 105, 104, 120, 33, 104, 114, 33, 96, 33, 105, 98, 101, 117, 33, 124, 105, 106, 117, 33, 72, 33, 105, 100, 109, 113, 43, 120, 110, 116, 33, 104, 114, 43, 115, 100, 108, 104, 111, 101, 33, 120, 110, 116, 33, 117, 110, 33, 98, 73, 100, 98, 106, 33, 117, 105, 100, 33, 96, 115, 115, 96, 120, 33, 96, 111, 101, 33, 117, 105, 115, 100, 100, 33, 111, 116, 102, 99, 100, 115, 114, 33, 98, 96, 111, 33, 119, 98, 100, 118, 33, 96, 114, 33, 96, 33, 102, 115, 110, 116, 113]

def f(k1_0,k2_0):
    for i in range(len(str)):
        k1_0 = (str[i] + k1_0) % 300
        k2_0 = (str[i] + k2_0) % 300
        str[i] ^= text_66(k1_0, k2_0)

def text_66(a,b):
    aa=a
    ba=b
    if a<b:
        aa,ba=ba,aa
    if ba:
        result = text_66(ba, aa % ba)
    else:
        result = aa
    return result

for x in range(100):
    for y in range(100):
        str=[85, 105, 104, 120, 33, 104, 114, 33, 96, 33, 105, 98, 101, 117, 33, 124, 105, 106, 117, 33, 72, 33, 105, 100, 109, 113, 43, 120, 110, 116, 33, 104, 114, 43, 115, 100, 108, 104, 111, 101, 33, 120, 110, 116, 33, 117, 110, 33, 98, 73, 100, 98, 106, 33, 117, 105, 100, 33, 96, 115, 115, 96, 120, 33, 96, 111, 101, 33, 117, 105, 115, 100, 100, 33, 111, 116, 102, 99, 100, 115, 114, 33, 98, 96, 111, 33, 119, 98, 100, 118, 33, 96, 114, 33, 96, 33, 102, 115, 110, 116, 113]
        f(x,y)
        flag=1
        for i in str:
            if i>=127 or i<32:
                flag=0
                break
        if flag==1:
            print(bytes(str))

 观察结果:I help you is remind you to check the array and three numbers can view as a group可以知道提示三个数可以看成一组,就可以想到RGB(之前没见过,所以我不能反应过来这个是RGB)

在根据给的hint:
可以写有关RGB的代码(这里学习一下)

from PIL import Image

with open('array.txt绝对地址', 'r') as f:
    data = f.readlines()  # txt中所有字符串读入data

    for line in data:
        list = line.split(' ')  # 将单个数据分隔开存好
f.close()

x = 637  # x坐标  通过对txt里的行数进行整数分解 宽度
y = 561  # y坐标  x * y = 行数              高度

im = Image.new("RGB", (x, y))  # 创建图片

index = 0

for j in range(0, y):  # 通过每个rgb点生成图片
    for i in range(0, x):
        im.putpixel((i, j), (int(list[index]), int(list[index + 1]), int(list[index + 2])))  # 将rgb转化为像素
        index += 3

im.show()

 运行后发现图片

再根据提示

 message是英文形式,根据我想打篮球得到:I want to play basketball,又因为要凑够28个,所以是I want to play basketballI w

在看main第二部分代码:

 刚才得到的便是str数组,num数组又已知,可以异或得到flag

flag=[1, 100, 52, 53, 40, 15, 4, 69, 46, 109, 47, 40, 55, 55, 92, 94, 62, 70, 23, 72, 8, 82, 29, 65, 16, 117, 117, 10]
xor_key='I want to play basketballI w'
for i in range(len(flag)):
    flag[i]^=ord(xor_key[i])
print(bytes(flag))

#HDCTF{$1AM_DVN|<_5|-|0|-|<U}

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

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

相关文章

netty/websocket服务器配置阿里云SSL证书安全访问配置,亲测有效

背景&#xff1a;java 微服务包括https访问和websocket访问&#xff0c;当https接口访问ws请求时报错,因为https能访问wss。 申请阿里云免费证书后&#xff0c;搜索各种教程比如nginx配置方式、netty访问证书等。走了不少弯路&#xff0c;终于走通一种。 关键点&#xff1a;1…

龙蜥开发者说:亲历从基础设施构建到系统质量保障,龙蜥未来可期 | 第 19 期

「龙蜥开发者说」第 19 期来了&#xff01;开发者与开源社区相辅相成&#xff0c;相互成就&#xff0c;这些个人在龙蜥社区的使用心得、实践总结和技术成长经历都是宝贵的&#xff0c;我们希望在这里让更多人看见技术的力量。本期故事&#xff0c;我们邀请了龙蜥社区开发者宋彦…

【Python】值得收藏,三元一次方程组的计算,快来看看有什么新奇的~~~

三元一次方程组的计算对于大家来说都不陌生了&#xff0c;但是用编程语言来解决方程组问题想必还是会有些大聪明们有点迷糊的&#xff0c;今天就带大家来看看是怎么利用python实现方程组的解集的&#xff1b; 本文主要分成两部分&#xff1a; 解题验算综述 解题 题目1 代码 …

Security中使用Redis管理会话(模拟cookie实现)

配置redis相关 1. 配置Redis package com.zzhua.blog.config.redis;import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.cor…

【HCIP】IPV6综合实验(ripng,ospfv3,bgp,6to4)

目录 一、IP规划 二、 连通公网部分(IPv4) 三、R1、R2上IPv4&#xff0b;v6配置 四、IPV6部分ip配置 五、IPV6部分OSPF&BGP协议配置 Ⅰ、 ospf Ⅱ、bgp 六、联通网络 需求&#xff1a; 1、AR1处于IPV4&#xff0c;也有IPV6的地址&#xff0c;有两个环回 2、AR45678处…

Golang Gin 请求参数绑定与多数据格式处理

之前学习了使用Gin框架的Engine的默认路由功能解析HTTP请求。现在我们来学习gin框架的参数绑定操作和请求结果返回格式。 处理POST请求时&#xff0c;使用context.PostForm或者context.DefaultPostForm获取客户端表单提交的数据。 像上述这种只有username和password两个字段的表…

CS:APP 第7章链接分步编译(cpp/cc1/as/ld)遇到的问题

环境 WSL Ubuntu 22.04.2 LTS gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0 问题 问题一 cc1 命令找不到 cc1 命令在 /usr/lib/gcc/x86_64-linux-gnu/11/cc1 里&#xff0c;注意不同操作系统等可能 cc1 的位置不一样&#xff0c;可以使用 find 或者 locate 命令搜索。 通过下…

聊点技术 | 架构瘦身,让Bonree ONE跑得更轻

4月21日&#xff0c;博睿数据ONE有引力2023春季产品发布会圆满落幕&#xff0c;一体化智能可观测平台Bonree ONE 2023春季正式版正式发布&#xff0c;这一次发布的版本更轻、更强、更智能。 Bonree ONE在上一版基础上削减50%组件数量&#xff0c;下架两大高耗能组件&#xff0c…

97-TCP为什么要有一个“TIME_WAIT“的状态

文章目录 1.TCP为什么要有一个"TIME_WAIT"的状态(1) 可靠的终止 TCP 连接。(2) 保证让迟来的 TCP 报文有足够的时间被识别并被丢弃 ; 2.拓展带外数据 1.TCP为什么要有一个"TIME_WAIT"的状态 "TIME_WAIT"状态存在的原因主要有两点: (1) 可靠的终…

成功经验分享,Nacos注册中心实践,带你玩转Nacos

1、什么是 Nacos &#xff1f; 官方&#xff1a;一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集&#xff1a; 注册中心配置中心服务管理 平台 nacos的特性包括&#xff1a; 服务发现和服务健康监测动态配置服务动态…

行人检测(人体检测)4:C++实现人体检测(含源码,可实时人体检测)

行人检测(人体检测)4&#xff1a;C实现人体检测(含源码&#xff0c;可实时人体检测) 目录 行人检测(人体检测)4&#xff1a;C实现人体检测(含源码&#xff0c;可实时人体检测) 1. 前言 2. 行人检测(人体检测)检测模型&#xff08;YOLOv5&#xff09; &#xff08;1&#xf…

谈「效」风生 | 如何找到现有研发体系的「内耗问题」?

#第3期&#xff1a;如何找到现有研发体系的「内耗问题」&#xff1f;# 在上一期《谈到提升效能&#xff0c;我们应该如何下手&#xff1f;》我们聊到开始做研发效能的四个要点&#xff1a;评估现有流程、引入自动化工具、建立度量指标、持续改进。本期就围绕「评估现有研发体系…

二次创业接地气、强内功,三只松鼠从一棵树出发重造“人设”

民以食为天&#xff0c;自古以来&#xff0c;“吃”都是一门浅显与深奥并存的生意。产业链看似简单&#xff1a;种、收、制、卖&#xff0c;却足以令众多企业为之前赴后继十年、百年。 三只松鼠&#xff0c;正在这条变革的道路上砥砺前行。自去年4月开启全面转型以来&#xff…

C++ 赋值运算符重载

赋值运算符重载 运算符重载&#xff1a; C为了增强代码的可读性&#xff0c;可以对 运算符 进行重载&#xff0c;运算符重载 就是具有特殊函数名的函数&#xff0c;这个函数也具有返回值类型&#xff0c;函数名字和参数列表&#xff0c;它的返回值和参数列表的形式和普通函数…

基于SAM的二次开发案例收集分享

一、AnyLabeling[1]——制作人&#xff1a;vietanhdev AnyLabeling LabelImg Labelme Improved UI Autolabeling AnyLabeling软件是一个集成了YOLO、Segment Anything模型&#xff08;AI支持&#xff09;的高效数据标注工具&#xff0c;它可以通过点击目标的方式完成目标检…

商业银行财富管理“智能原生”能力呈阶梯化,AI助力商业模式趋向多元化发展

易观&#xff1a;金融业的财富管理从经营角度来看&#xff0c;是“客户与渠道管理场景运营产品研发”三位一体共同构建以客户为中心&#xff0c;数据驱动的业务经营体系。其中&#xff0c;“客户与渠道管理”是将客户利益作为核心目标&#xff0c;通过升级用户体验、客户全生命…

获奖名单公布|香港BlockBooster x Moonbeam黑客松圆满收官

Moonbeam基金会赞助的”Into the Socialverse”主题的BlockBooster黑客松于近日落幕。该活动由BlockBooster、OKX、Gitcoin和OxU香港区块链俱乐部联合主办&#xff0c;共有22个开发团队参赛。经过多位评委的严格筛选&#xff0c;3支优秀团队脱颖而出&#xff0c;获得Moonbeam基…

zookeeper集群命令使用

1.zookeeper脚本使用(地址填写集群中任意一个主机地址) 连接客户端命令行 /etc/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.60.112:2181 启动zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer.sh start 停止zookeeper服务 /etc/zookeeper/zookeeper/bin/zkServer…

春风吹,战鼓擂,忆享科技-云服务事业部春季员工关怀活动集锦,温情相伴

前言 时序更替&#xff0c;忆享科技又迎来新的一年。回顾2022&#xff0c;忆享科技在风雨中前行&#xff0c;实现了一次又一次的突破。在这2023年春暖花开&#xff0c;万物复苏的美好季节&#xff0c;忆享科技怀抱着它满满的关怀向大家走来&#xff01;春季云服务事业部开展了五…

推动科技企业成长,开源网安受邀参加数字经济企业孵化器建设座谈会

近日&#xff0c;为更好地做好数字经济孵化器的孵化培育工作&#xff0c;推动数字经济孵化器和入驻企业高质量发展&#xff0c;高创公司召开数字经济企业孵化器建设座谈会。高新区工委委员、管委会副主任贺菲出席会议&#xff0c;开源网安合肥公司总经理菅志刚受邀参加本次座谈…