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

69 内网安全-域横向CobaltStrikeSPNRDP

目录

    • 演示案例:
      • 域横向移动RDP传递-Mimikatz
      • 域横向移动SPN服务-探针,请求,导出,破解,重写
      • 域横向移动测试流程一把梭哈-CobaltStrike初体验
    • 涉及资源

在这里插入图片描述
SPN主要是扫描技术,在渗透过程中结合kerberos协议,可以做一些事情

演示案例:

域横向移动RDP传递-Mimikatz

除了上述讲到的IPC,WMI,SMB等协议的链接外,获取到的明文密码或HASH密文也可以通过RDP协议进行链接操作。

RDP远程的连接协议,在linux上面就是ssh,在windows上面就是RDP,就是我们常说的3389,开放3389就可以进行远程连接,连接的东西也是建立在明文密码和hash

得到明文密码就可以直接用rdp协议连接
电脑属性>远程桌面终端

RDP明文密码链接

windows: mstsc
mstsc.exe /console /v:192.168.3.21 /admin
linux: rdesktop 192.168.3.21:3389

RDP密文HASH链接
windows Server需要开启 Restricted Admin mode,在windows 8.1和Windows Server 2012 R2中默认开启,同时如果win 7 和windows Server2008 R2安装了2871997、2973351补丁也支持;开启命令:

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v
DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

hash连接比较鸡肋,不是很常见
开启后运行:

mstsc.exe /restrictedadmin
mimikatz.exe
privilege::debug
sekurlsa::pth /user:administrator /domain:god
/ntlm:ccef208c6485269c20db2cad21734fe7 "/run:mstsc.exe/restrictedadmin"

域横向移动SPN服务-探针,请求,导出,破解,重写

kerberos中的spn详解:https://www.cnblogs.com/backlion/p/8082623.html
黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTLM密码哈希用于加密服务票证。黑客将收到的TGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTLM哈希值就将用于创建服务票证。这就是Kerberoastinq攻击的关键。
一般我们在进行内网渗透会采取端口扫描,来判定内网其它主机的开放程度和端口的一个情况,但在这里,我们使用端口扫描技术会触发一些防火墙,我们经常使用nmap扫描的知道,在nmap去扫一些带防火墙的服务器的话,有时候扫描不准,或者直接把你拦截了,他会检测到这是外部流量,有扫描的一些攻击,那么就扫描不出一些东西出来,这个是很常见的。SPN扫描就能解决这个问题,SPN扫描是优先于我们常用端口扫描的,不会被防火墙这些东西给触发,而且同样的能探针服务,命令相当简单,非常舒服,非常快
探针就是探针SPN服务,看一下有那些服务,然后在根据不同的服务,选择对应我们要操作的服务,请求完之后,我们就会相当于建立会话的东西,建立连接,然后在用相关工具把连接的数据给导出来,导出来由于他的连接,这个加密形式是可以进行破解的,所以我们可以进行破解来找到连接的东西
探针只需要一个用户就行了,不需要管理员权限,setspn是自带的命令
探针

setspn -q */*
setspn -q */* | findstr "MSSQL"

在这里插入图片描述
请求

Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "xxxx"
mimikatz.exe "kerberos::ask /target:xxxx"

xxxx替换掉刚刚得到的服务名,也可以用mimikatz进行请求,请求完之后,就会得到凭据
导出

mimikatz.exe "kerberos::list /export"

用mimikatz看能不能把他导出来
破解

python tgsrepcrack.py passwd.txt xxxx.kirbi
python3 .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi

导出来之后,用相关工具和脚本进行破解,这个破解可以利用到前面介绍的hashcat工具,也可以用单独破解的py脚本,一般大部分破解脚本都是借于字典
重写

python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500
python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512
mimikatz.exe kerberos::ptt xxxx.kirbi   # 将生成的票据注入内存

在这里插入图片描述
这些服务,有些是可以直接攻击的,比如说我知道他上面开有sqlserver,或者其它的exchage,这些也都是被常见攻击的,exchage官方自带的邮件服务器,就好比我们进行端口扫描,进行的判定
在这里插入图片描述
首先我们要攻击他的话,我们要把名字给保存一下
我们klist看一下当前的会话
在这里插入图片描述
这个时候我们就尝试去请求刚才那个服务
在这里插入图片描述
我们在确保一下刚才的会话
在这里插入图片描述
现在有两个,我们把他删除掉,其实不删除也可以
在这里插入图片描述
我们去请求他
在这里插入图片描述
请求之后,我们去看klist,请求了就会产生票据
在这里插入图片描述
这个时候,我们用mimikatz把内存导出来,就是把刚才的票据信息导出来
在这里插入图片描述
他会导出到mimikatz的运行目录
在这里插入图片描述
导出两个
在这里插入图片描述
我们只需要用到mssqlsvc,这个就是刚才请求的票据信息
在这里插入图片描述
然后大家把这个票据信息拿去破解,这个破解由于用到的是脚本,我们就在本机里面破解
在这里插入图片描述
Admin12345是请求数据里面自带的密码,这个密码可以用来我们后期自己连接,这个密码也能做为一个凭据,当作字典后期在加载到其它协议上面的爆破上面去
在这里插入图片描述
这个服务在传输过程中,他是会验证的,每个普通用户在请求这个东西的时候,会验证你的密码正不正确
在这里插入图片描述
这边域内的一个普通用户,再去请求服务的时候,就会自带密码信息尝试去验证,去请求他,所以密码就包含在这里面了,拿出来破解,就能获取请求过程中的密码
第一个,我们多了一个口令,也知道这个东西对应的密码,第二个,我破解出来之后,我能重写
在这里插入图片描述
u指向的是用户名的编号,g就是组,所以他就能够根据kirbi,重新生成会话出来,我们说的PTT数据,然后这个时候再用mimikatz,导入到内存里面去,那我们再次请求的话,相当于进行了一个全新的提升,这是它后续的攻击,但是这个攻击不是说一定能够成功,所以这是后续的一个情况,主要是得到这个密码为后续渗透做准备,第二个还可以进行重写,重新生成票据文件,然后在用mimikatz注入到里面去,其实就是伪造admin用户的票据进行连接
攻击主要在破解这个地方,得到密码可以做为字典也可以做为连接条件去连接,但是一般连接也是普通的服务,也就是只能看一些简单的东西
在这里插入图片描述
我们要得到管理员用户才行,但是管理员账户破解不了,因为它在协议里面抓不到
spn只是扫描技术,外加域类的一种服务用户,就是常见服务在流通的时候,你可以请求这个票据,然后把票据导出来,得到里面自带的票据信息,来帮助你后续的一个渗透,算是一个比较鸡肋的东西,大家理解就可以了
主要就是利用到spn建立服务的攻击,利用spn可以探针域内主机常见服务,而这个常见服务可以根据需要进行渗透,比如说像刚才的sqlserver,我得到Admin12345,这里有帮助,有可能没帮助,那除此之外,我知道上面有sqlserver服务了,是不是也可以进行入侵的呀,还可以采取其它手段,spn这个东西的话,探针也好,它的后续利用也好,还可以为后续的渗透思路做准备

域横向移动测试流程一把梭哈-CobaltStrike初体验

把前面我们涉及到的那些常见的攻击总结了,在实战情况下面的一个操作,因为大部分我们在前面讲过,都是把工具上到电脑上面去,然后直接在上面敲,可能在实战情况下面不是这样的,有可能你接触不到它的图形化,全部都是命令终端,或者有些权限不够,会遇到很多样的情况
我在外网建立了一个CobaltStrike弹着服务器的地址,先连接上去
在这里插入图片描述
在这里插入图片描述
它有一个团队服务器,我们可以通过任意的终端连接到这个服务器上面去,比如这里的阿里服务器,然后它做为这款服务器的根本,你可以连接到这里来,我也可以连接到这里来,通过它再去控制主机,就相当于它中间多了个东西,它去连接受害主机,你我都是客户端,我们连接上去操作受害的东西,它是一个多人运动,可以建立多人攻击,我攻击的主机,你也可以连接上去,一起进行操作
在这里插入图片描述
我们在实战情况下碰到真实目标都是这样的,真实目标肯定在内网,然后你攻击它的话,你要用到cs,是要建立一个外网的团队服务器,然后通过控制内网一台主机,向它内网进行渗透
在这里插入图片描述
webserver这台服务器上开了一个外网,就是说这个外网是能够连接的,除了它之外,内网的其它主机都是不联网的,也就是说,我们只能够先攻击到这里来,从它在对内网的主机进行通讯,因为只有webserver才能对内网主机进行通讯,同时这里是内网的域环境,入侵到它之后,对下面的主机进行渗透,取得DC的控制权
参考: [腾讯文档] 第五十二天: cobalt strike使用指南
https://docs.gg.com/doc/DZlVaY3dzwlpRZlh3
大概流程:
启动-配置-监听-执行-上线-提权-信息收集 (网络,凭证,定位等) -渗透
1.关于启动及配置讲解
2.关于提权及插件加载
3.关于信息收集命令讲解
4.关于视图自动化功能讲解
IP地址是团队服务器,密码是用工具去连接的时候会验证的密码,有这个密码就会连接到工具上去
在这里插入图片描述
启动之后需要java环境的支持,如果你上面没有配置java环境,那自己装一下就完事了,启动完之后,打开你本地的客户端
在这里插入图片描述
启动完之后,更重要的是它的配置,它如何上线,它是远控工具,然后在远控工具上面,又实现了一些功能在上面,其实就是说我们大部分提权,大部分攻击主机的话,我先要控制它,我在上面做后续操作,所以这个工具有这么个操作,先控制电脑、控制服务器,然后再在这上面去操作,下一步就是让对方上线,由于它是团队服务器,假如我和你是个团队,你搞的主机和我搞得主机,如何区分开来,它可以多个人一起攻击,我们可以通过配置监听器来实现,我自己配个监听器,从你这个监听器过来的就是你攻击的,它的监听器过来的,就是它的,监听器就是配置木马的传输管道
监听器有多个协议,就是说木马或者控制电脑、服务端、服务器,它是通过怎么回连到你的地方来,就得有这些协议选择,我们选择建立在网站HTTP协议上的连接
在这里插入图片描述
这个后门要绑定监听器,我才知道这是你这个人控制的主机,这样子就可以通过监听器区分,这个后门就绑定监听器,这个后门的触发就是通过监听器走的,生成的后门要做免杀
在这里插入图片描述
这个就相当于我前期拿到了webshell,我们把后门给上传上去,执行它
在这里插入图片描述
就会看到有一台终端上线,用户是webadmin,现在我们需要对它进行提权操作
在这里插入图片描述
进入命令终端,输入命令对它进行操作
在这里插入图片描述
导出所有hash
在这里插入图片描述
黄金票据
在这里插入图片描述
这个就是提权用的,它自带的提权方式只有两个,所以我们这里要加载插件
在这里插入图片描述
脚本管理器,上传插件
在这里插入图片描述
这个插件帮我搞了4个提权的exp
在这里插入图片描述
我们执行完提权的工具后,那就会建立payload
过慢的话,我们选择把sleep设置为1
在这里插入图片描述
突然一下子,出现了system,就是提权已经成功了
在这里插入图片描述
在这里插入图片描述
由于我这里提权了,所以我肯定是用system来执行命令
在这里插入图片描述
我们既然已经得到了主机的系统权限了,我们是不是就要对它进行内网渗透,来判断它当前的网络环境
我们收集信息主要是看一下网络环境,第二步看一下我们能不能渗透到其它东西
net view //自动探针当前的网络架构
在这里插入图片描述
cs查询结果会有类似缓存的东西
我们查询的东西不可能每个都收集一下,有时候执行执行就搞忘记了
在这里插入图片描述
你所有探针的信息都在这里展示
在这里插入图片描述
3.32没有探针到,网络问题
我们要判断是域环境还是工作组环境
net computers //查看当前所有的计算机
在这里插入图片描述
net dclist //获取域控列表
在这里插入图片描述
net user //获取本地用户权限
在这里插入图片描述
shell net user /domain
官方没有的命令,就要调用shell去执行,就相当于在windows上执行的一样
在这里插入图片描述
得到域内所有用户的名字,就是跟我前期的信息收集是差不多的
信息收集还有收集口令凭证,使用mimikatz
使用web权限,执行mimikatz
在这里插入图片描述
这就是权限不够,这就是我们为什么要提权的原因,使用system权限
在这里插入图片描述
这就是这台主机获取的密码
在这里插入图片描述
比如说,我们要攻击3.32
在这里插入图片描述
在这里插入图片描述
再把sqlserver上的口令进行再收集
在这里插入图片描述
那样我相关的字典就会越来越多
在这里插入图片描述
我们就能用这些密码对域控进行攻击
在这里插入图片描述
在这里插入图片描述
得到域控之后,后期就可以在域控上面做一些东西了,基本上渗透到这里就可以了
有两个问题没有讲,代理问题,自主工具该怎么操作
我们这个时候可以利用常规的渗透工具,对它进行操作
我们用受控的个人主机进行操作
在这里插入图片描述
把ladon上传上去
在这里插入图片描述
shell c:\ladon.exe
第三方工具是说我们自主开发的工具,因为cs工具有时候需要我们手点,只能选择两种,没有办法一直操作,所以还是会上传一些第三方的工具
shell c:\ladon.exe 192.168.3.0/24
在这里插入图片描述
所有的第三方工具不可能都有插件,插件是非常好,但是有很多功能还是需要第三方工具,比如一些新出来的恶意攻击,插件那里有,还是需要上传

正向就是我连接它,反向就是它连接你
那些被控主机是因为开了外网才成功上线,不开外网它上不了,它网络通不出来,这里就会涉及到代理的相关知识点,网上说的什么隧道,都指的是那种协议隧道,这个很好理解,无非是代理的事情

sqlserver数据传递到webserver端口,在通过webserver转发到外网端口上去,这种连接是不是反向连接,它主动把流量交出来给它主机,然后它主机有关接口在给你,但这里会有一个回显的问题,执行完之后,会有一个结果,结果就是通过代理隧道给到你,这是把这些信息通过隧道传递过来,所以这个代理知识,也是一个非常重要的知识点,而且是内网渗透,很多诸多领域里面的很难理解,但是又必须理解的一个东西
在这里插入图片描述
我们可以C语言编译出来,这个C语言在linux上也能上线的吗,把C语言编译成执行文件
在这里插入图片描述
梼杌插件介绍,它把所有东西都集成上去,现在是不对外公开了

涉及资源

https://github.com/nidem/kerberoast
https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码: xiao
https://github.com/pandasec888/taowu-cobalt-strike
https://pan.baidu.com/s/15DCt2Rzg5cZjXnEuUTgQ9Q 提取码: dtm2
https://pan.baidu.com/s/14eVDglqba1aRXi9BGcBbug 提取码:taqu
https://github.com/DeEpinGhOst/Erebus
https://github.com/rsmudge/ElevateKit
https://github.com/harleyQu1nn/AggressorScripts
https://github.com/bluscreenofjeff/AggressorScripts

做主机加固的时候,我们把rdp协议给关掉了,那人家岂不是用不了远程,这不是会影响到人家的业务,我们可以提升rdp协议的安全性

攻防演练主要比的是获取的敏感数据的多少

相关文章:

69 内网安全-域横向CobaltStrikeSPNRDP

目录 演示案例:域横向移动RDP传递-Mimikatz域横向移动SPN服务-探针,请求,导出,破解,重写域横向移动测试流程一把梭哈-CobaltStrike初体验 涉及资源 SPN主要是扫描技术,在渗透过程中结合kerberos协议,可以做一些事情 演示案例: 域横向移动RDP传递-Mimik…...

GB28181学习(十四)——语音广播与语音对讲

语音对讲 定义 用户端向设备通过视音频点播请求音频数据;用户端接收音频数据并通过特定的播放设备(如音响)播放;用户端向设备发送广播请求;设备解析广播成功后通过INVITE方法向用户请求音频数据;用户通过音…...

Java实验一编程环境使用

1.String类的常用方法(StringExample.java) package step1;public class StringExample {public static void main(String args[]) {String s1 new String("you are a student");String s2 new String("how are you")…...

【数据结构】——线性表简答题模板

目录 一、顺序表二、链表三、顺序表与链表的对比四、循环链表五、静态链表 一、顺序表 【顺序表是什么/数组与顺序表的区别】 1、数组和顺序表的区别在哪里? 答:顺序表体现了数据元素之间的线性关系,即一对一的关系,以及对数据元…...

lambda和stream

理解 lambda 表达式和 Stream 是 Java 高级工程师的关键技能之一,它们为 Java 开发提供了更强大、更精简和更高效的编程工具。本篇 CSDN 文章将帮助你以高级工程师的角度深入掌握这两个概念,以便在实际项目中发挥你的 Java 技能。 ## 什么是 Lambda 表达…...

go微信开发sdk-简单使用_已设置图床

go微信开发sdk-简单使用 GitHub - silenceper/wechat: WeChat SDK for Go (微信SDK:简单、易用) 使用的sdk为上述的,这边给出快速的项目实例 git clone https://github.com/gowechat/example.git简单的项目结构 这边简单用dock…...

Java判断文本是否有敏感词

文章目录 Java判断文本是否有敏感词实现方法一、总体流程二、实现步骤1、构建敏感词库2、加载敏感词库3、文本分词4、敏感词匹配 Java判断文本是否有敏感词实现方法 一、总体流程 在Java中判断文本是否包含敏感词可以通过构建敏感词库并进行匹配来实现。下面是整个流程的表格…...

【腾讯云 HAI域探秘】基于ChatGLM和StableDiffusion的小学一年级语文教学方案创作实践与经验分享

前言 目前腾讯云HAI正在内测中,腾讯云HAI为开发者量身打造的澎湃算力平台。无需复杂配置,便可享受即开即用的GPU云服务体验。在 HAI 中,根据应用智能匹配并推选出最适合的GPU算力资源,以确保您在数据科学、LLM、AI作画等高性能应用…...

flink状态不能跨算子

背景 在flink中进行状态的维护和管理应该是我们经常做的事情,但是有些同学认为名称一样的状态在不同算子之间的状态是同一个,事实是这样吗? flink状态在保存点中的存放示意图 事实上,每个状态都归属于对应的算子,也…...

基于transformer的解码decode目标检测框架(修改DETR源码)

提示:transformer结构的目标检测解码器,包含loss计算,附有源码 文章目录 前言一、main函数代码解读1、整体结构认识2、main函数代码解读3、源码链接二、decode模块代码解读1、decoded的TransformerDec模块代码解读2、decoded的TransformerDecoder模块代码解读3、decoded的De…...

Java SE 学习笔记(十七)—— 单元测试、反射

目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概…...

HNU-计算机网络-实验1-应用协议与数据包分析实验(Wireshark)

计算机网络 课程基础实验一 应用协议与数据包分析实验(Wireshark) 计科210X 甘晴void 202108010XXX 一、实验目的: 通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。 二、实验内容 2.1 HTTP 协议简介 HTTP 是超文本…...

【深度学习】快速制作图像标签数据集以及训练

快速制作图像标签数据集以及训练 制作DataSet 先从网络收集十张图片 每种十张 定义dataSet和dataloader import glob import torch from torch.utils import data from PIL import Image import numpy as np from torchvision import transforms import matplotlib.pyplot…...

Spring Boot Web MVC

文章目录 一、Spring Boot Web MVC 概念二、状态码三、其他注解四、响应操作 一、Spring Boot Web MVC 概念 Spring Web MVC 是⼀个 Web 框架,一开始就包含在Spring 框架里。 1. MVC 定义 软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视…...

设置防火墙

1.RHEL7中的防火墙类型 防火墙只能同时使用一张,firewall底层调用的还是lptables的服务: firewalld:默认 ,基于不同的区域做规则 iptables: RHEL6使用,基于链表 Ip6tables Ebtables 2.防火墙的配置方式 查看防火墙状态: rootlinuxidc -]#systemct…...

3.Docker的客户端指令学习与实战

1.Docker的命令 1.1 启动Docker(systemctl start docker) systemctl start docker1.2 查看docker的版本信息(docker version) docker version1.3 显示docker系统范围的信息(docker info) docker info1.4…...

【微服务开篇-RestTemplate服务调用、Eureka注册中心、Nacos注册中心】

本篇用到的资料:https://gitee.com/Allengan/cloud-demo.githttps://gitee.com/Allengan/cloud-demo.git 目录 1.认识微服务 1.1.单体架构 1.2.分布式架构 1.3.微服务 1.4.SpringCloud 1.5.总结 2.服务拆分和远程调用 2.1.服务拆分原则 2.2.服务拆分示例 …...

python if和while的区别有哪些

python if和while的区别有哪些?下面给大家具体介绍: 1、用法 while和if本身就用法不同,一个是循环语句,一个是判断语句。 2、运行模式 if 只做判断,判断一次之后,便不会再回来了。 while 的话&#xf…...

Unity计时器

using UnityEngine; using System.Collections;public class Timer : MonoBehaviour {public float duration 1.0f; // 定时器持续时间public bool isLooping false; // 是否循环public bool isPaused false; // 是否暂停计时器private float currentDuration 0.0f; // 当前…...

Unity热更新介绍

打包函数 BuildPipeline.BuildAssetBundles("AssetBundles", BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.Android);打包策略和方案 按文件夹打包:Bundle数量少,首次下载块,但是后期更新补丁大按文件打包&#…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

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

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

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...