【南方科技大学】CS315 Computer Security 【Lab6 IoT Security and Wireless Exploitation】

目录

  • Introduction (Part 1: OS Security for IoT )
  • Software Requirements
  • Starting the Lab 6 Virtual Machine
  • Setting up the Zephyr Development Environment
    • Download the Zephyr Source Code
    • Installing Requirements and Dependencies
    • Setting the Project’s Environment Variables
    • Installing the Zephyr Software Development Kit
  • Building and Running an Application with Zephyr
    • Sample Hello World Application
    • Building a Sample Application
    • Running a Sample Application
  • Exploiting Buffer Overflows in Zephyr Applications
    • Application Stack Frame on Zephyr
  • Assignments for Lab 6 Part 1
  • Introduction (Part 2: Wireless Exploitation & Defenses)
  • Software Requirements
  • Setup an Access Point
  • Capturing Wireless Packets via Wireshark
  • Capturing the Four-way Handshake
  • Cracking WPA2 WiFi Passphrase Using Kali Linux
  • Assignments for Lab 6 Part 2

Introduction (Part 1: OS Security for IoT )

物联网(IoT)是一项将影响我们日常生活的新兴技术。据报道,到2025年,连接的物联网设备将达到1000亿,因此物联网的影响将是令人印象深刻的,而安全性是其中的重要组成部分。出于本实验的目的,我们将重点关注物联网设备的操作系统安全性。

有许多新开发的物联网操作系统。例如,Contiki 是一个物联网开源操作系统。 Contiki 将微型低成本、低功耗微控制器连接到互联网。 2015 年 5 月,谷歌发布了 Brillo,一个物联网操作系统。 Brillo是Google推出的一款用于构建互联设备的解决方案,基于Android系统开发。 Zephyr 是另一个专为物联网设备设计的实时操作系统。 Zephyr开源项目由Linux基金会于2016年2月宣布。在本实验室中,我们使用Zehpyr作为研究示例来探索物联网设备的操作系统安全性。具体来说,我们将利用应用程序中的缓冲区溢出漏洞并了解 Zephyr OS 的安全功能。完成实验作业后,您将需要回答以下问题:

Zephyr 有哪些安全功能?

应用程序是否与操作系统内核共享相同的地址空间?

Zephyr 是否具有防御机制,例如不可执行堆栈或地址空间布局随机化(ASLR)?

教科书攻击(例如缓冲区溢出或堆喷射)对 Zephyr 有效吗?

Software Requirements

所有必需的文件都在提供的虚拟机映像中打包和配置。

The VMWare Software
http://apps.eng.wayne.edu/MPStudents/Dreamspark.aspx

The Ubuntu 14.04 Long Term Support (LTS) Version
http://www.ubuntu.com/download/desktop

Zephyr: Real Time OS for IoT – A Linux Foundation Collaborative Project https://www.zephyrproject.org/downloads

Starting the Lab 6 Virtual Machine

在本实验中,我们使用 Ubuntu 作为虚拟机映像。选择名为“Lab6”的虚拟机。
在这里插入图片描述
使用用户名 Student 和密码 [TBA in the class] 登录 Ubuntu 映像。以下是登录后的屏幕截图。
在这里插入图片描述

Setting up the Zephyr Development Environment

您可以从 Zephry 项目网站找到详细文档:

https://docs.zephyrproject.org/latest

Download the Zephyr Source Code

该代码托管在 Linux 基金会,其 Gerrit 后端支持通过 git 进行匿名克隆。

我们可以使用 git 命令查看 Zephyr 源代码。可以看到主目录下有zephyr-project文件夹。

https://www.zephyrproject.org/

请注意,如果您想在自己的机器上尝试,则需要安装 git。请注意,我们的实验室映像已在以下位置下载了 Zephyr 源代码:~/zephyr-project/

Installing Requirements and Dependencies

如果您使用自己的笔记本电脑或台式机进行实验,则需要通过执行以下命令来安装依赖项。在我们的 Ubuntu 映像上,我已经为您安装了它们。

$ sudo apt-get install git make gcc gcc-multilib g++ g+±multilib

Setting the Project’s Environment Variables

$ cd zephyr-project
$ source zephyr-env.sh
在这里插入图片描述

Installing the Zephyr Software Development Kit

Zephyr 的 SDK 包含在所有支持的架构上构建内核所需的所有必要工具和交叉编译器。此外,它还包括主机工具,例如自定义 QEMU 和用于构建主机工具的主机编译器(如果需要)。 SDK 支持以下架构:IA-32、ARM 和 ARC。

接下来,您需要按照以下步骤在 Ubuntu Linux VM 上安装 SDK。

Step 1. 从 zephyr 网站下载 SDK 自执行脚本。镜像已下载脚本;文件名为 zephyr-sdk-0.8.2-i686-setup.run。请参阅下面的屏幕截图。
在这里插入图片描述
Step 2. 运行安装脚本
$ chmod a+x zephyr-sdk-0.8.2-i686-setup.run
$ sudo ./zephyr-sdk-0.8.2-i686-setup.run

下面的截图显示了步骤1和2的执行情况。我们可以看到Zephyr SDK的默认目录安装在/opt/zephyr-sdk目录下。由于我之前已经在镜像中安装了 SDK,因此您会看到一条消息,询问您是否要删除现有目录 /opt/zephyr。只需选择yes。
在这里插入图片描述
Step 3 要使用 Zephyr SDK,请导出以下环境变量并使用安装 SDK 的目标位置。您只需将以下行添加到 ~/.bashrc 文件中即可。
$ vim ~/.bashrc
Add these two lines into the file
export ZEPHYR_GCC_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=/opt/zephyr-sdk
$ source ~/.bashrc
下面的屏幕截图显示了步骤 3。
在这里插入图片描述

Building and Running an Application with Zephyr

您已成功设置 Zephyr 的开发环境。本节提供构建包含应用程序的 Zephyr 内核并运行它的所有步骤。我们使用 Hello World 示例应用程序作为示例。您还可以创建自己的应用程序并运行它。

Sample Hello World Application

首先,让我们看一下 Zephyr 的示例应用程序是什么样的。转到 Hello World 示例的源目录。
$ cd ~/zephyr-project/samples/hello_world/src
$ vim main.c
下面的屏幕截图显示了 Hello World 应用程序的源代码。
在这里插入图片描述

Building a Sample Application

要构建 Hello World 示例应用程序,您只需执行以下命令即可:
$ cd ~/zephyr-project/samples/hello_world/
$ make
在这里插入图片描述
上面的 make 屏幕截图将使用应用程序 Makefile 中定义的默认设置构建 hello_world 示例应用程序。您可以通过使用受支持的平台之一定义变量 BOARD 来针对不同的平台进行构建,例如:

$ make BOARD=arduino_101

下图为执行后的结果
在这里插入图片描述
下面的屏幕截图显示了 Zephyr 项目支持的主板,包括 Intel Galileo Gen1 和 Gen2。出于本实验的目的,我们将在 x86 QEMU 上测试该应用程序。您还可以输入:

$ make help

这将获取受支持的板和其他有用命令的完整列表。
在这里插入图片描述
微内核和超微内核的示例项目可在 ~/zephyrproject/samples 中找到,每个示例都具有微内核和超微内核特定的构建。应用程序构建成功后,可以在应用程序根目录下的outdir子目录中找到结果。构建系统生成的 ELF 二进制文件默认命名为 zephyr.elf。下面的屏幕截图显示了 outdir 目录中的文件列表。
在这里插入图片描述

Running a Sample Application

要对 hello world 应用程序进行快速测试,我们可以通过执行以下命令来使用 QEMU 和 x86 仿真板配置 (qemu_x86):

$ cd ~/zephyr-project/samples/hello_world
$ make BOARD=qemu_x86 qemu
在这里插入图片描述
上面的屏幕截图显示了使用 QEMU 执行 hello world 应用程序。

我们可以看到“Hello World!”在终端中打印出来。要退出 QEMU,我们可以输入

‘Ctrl+a, x’

在这里插入图片描述

Exploiting Buffer Overflows in Zephyr Applications

首先,让我们编写一个包含缓冲区溢出漏洞的 Zephyr 应用程序。将 hello world main.c 程序更改为以下代码,如屏幕截图所示。

$ gedit main.c

在这里插入图片描述
在这里插入图片描述
从源代码中我们可以看到overflow()函数中嵌入了一个缓冲区溢出漏洞。然后,我们将一个长字符串传递给overflow()函数,该字符串将覆盖堆栈上的返回地址,程序将因返回地址无效而崩溃。接下来,让我们编译该应用程序并运行它,看看会发生什么。

如前所述,要构建应用程序,您只需执行以下命令即可:

$ cd ~/zephyr-project/samples/hello_world
$ make

要使用 QEMU 和 x86 仿真板配置 (qemu_x86) 运行应用程序,请执行以下命令:

$ cd ~/zephyr-project/samples/hello_world
$ make BOARD=qemu_x86 qemu

正如我们所料,应用程序由于返回地址无效而崩溃。
在这里插入图片描述
此外,QEMU 也会崩溃,您将看到一个弹出窗口,如下图所示。
在这里插入图片描述
我们可以看到EIP寄存器的值为0x7420676e。为了在利用缓冲区溢出漏洞后执行一些有意义的事情,我们需要控制EIP寄存器。接下来,调整main.c中的输入字符串,将EIP寄存器更改为0x41414141。请注意,0x41 是字符“A”的 ASCII 值。

我们可以简单地编辑 main() 函数,如下图所示
在这里插入图片描述
要重新编译应用程序,您需要重新运行zephyr环境脚本zephyrevn.sh。

$ cd ~/zephyr-project
$ source ./zephyr-env.sh

然后您可以重新编译该应用程序并运行它。您将看到 EIP 寄存器将为 0x41414141,如下图所示。
在这里插入图片描述
在这里插入图片描述
要重新编译应用程序,您需要重新运行zephyr环境脚本zephyrevn.sh。
$ cd ~/zephyr-project
$ source ./zephyr-env.sh

Application Stack Frame on Zephyr

为了做更有意义的事情,例如在堆栈上执行 shell 代码,我们需要了解应用程序的堆栈框架。我们在实验 2 中完成了类似的任务。如前所述,对于每个 Zephyr 应用程序,编译二进制文件都存储在名为 outdir 的目录中。我们可以进入该目录并使用 objdump 工具反汇编应用程序二进制文件并了解其堆栈框架。

$ cd ~/zephyr-project/samples/hello_world/outdir/qemu_x86/src
$ objdump –d main.o

下面的屏幕截图显示了 main.o 二进制文件的反汇编结果。
在这里插入图片描述

Assignments for Lab 6 Part 1

1.阅读上面的实验室说明并完成所有任务。
2.回答引言部分中的问题,并证明你的答案。简单的是或否的回答不会获得任何学分。
2.1 Zephyr 有哪些安全功能?
2.2 应用程序与操作系统内核共享相同的地址空间吗?
2.3 Zephyr 是否有防御机制,例如不可执行堆栈或地址空间布局随机化 (ASLR)?
2.4 教科书攻击(例如缓冲区溢出或堆喷射)对 Zephyr 有效吗?
3. 将EIP寄存器更改为值0xdeadbeef,并显示应用程序崩溃时EIP值的屏幕截图。

Extra Credit (10pt): 在堆栈上执行 shell 代码。 shell 代码可以启动 shell 或打印 hello 字符串。

Introduction (Part 2: Wireless Exploitation & Defenses)

在本实验室中,学生将探索执行无线攻击并了解潜在防御的方法。将涵盖的攻击包括检查和修改无线卡参数、更改无线传输通道、洪泛攻击以及破解 WPA2 保护网络的密钥。

Software Requirements

所有必需的文件都在提供的虚拟机映像中打包和配置。

The VMWare Software
http://apps.eng.wayne.edu/MPStudents/Dreamspark.aspx

The Kali Linux, Penetration Testing Distribution
https://www.kali.org/downloads/

Wireshark: Network protocol analyzer
https://www.wireshark.org/#download

Aircrack- ng: a suite of tools to assess WiFi network security
http://aircrack-ng.en.softonic.com/

Setup an Access Point

在本实验中,我们使用 TP-LINK 无线 N300 家用路由器作为示例,但相同的概念或想法也适用于其他路由器。接下来,它解释了设置接入点的服务集标识符(SSID)和安全机制的基本步骤。如果您以前做过此操作,请跳过本节。下图是我们在教室使用的TP-LINK无线N300家庭路由器。
在这里插入图片描述
Step 1: 将笔记本电脑或台式机连接到路由器。

此步骤取决于路由器。某些路由器需要使用以太网电缆来物理连接路由器。其他一些路由器可能能够使用其服务集标识符 (SSID) 通过无线进行连接。对于我们在教室中使用的路由器,需要物理连接到路由器的 LAN 端口之一。 (注意:考虑这两种类型的路由器的安全影响。)

Step 2: 打开基于 Web 的设置页面

打开Web浏览器,在地址栏中输入登录IP或主机名,即可登录Web管理页面。通常,您可以从路由器的背面找到IP地址或主机名。我们的路由器的IP地址是192.168.1.1,主机名是http://www.tplinkwifi.net

Step 3: 输入用户名和密码登录

输入默认用户名和密码即可登录。对于我们的路由器,其默认用户名和密码是 admin 和 [Same-Password-As-Kali-Linux]。

下图是我们使用的路由器的登录页面。
在这里插入图片描述
Step 4. 配置SSID
在我们的路由器中,转到无线 -> 无线设置。您可以在此处重命名您的无线网络(即 SSID)。我们路由器的 SSID 是“Hack3r”
在这里插入图片描述
Step 5 配置密码和无线安全。
在我们的路由器中,转到无线 -> 无线安全。然后您可以配置路由器的安全性。在下面的截图中,我们将安全协议配置为WPA/WPA2,使用AES作为加密方式,密码为“password”。还可以使用其他安全协议,例如 WEP。
在这里插入图片描述

Capturing Wireless Packets via Wireshark

要捕获无线数据包,您的计算机上需要安装无线网卡。无线网络接口有两种:一种是内部网卡。大多数笔记本电脑都有一个内置网卡;另一种是外部网卡。下图为外部网络。这是 Alfa Network 的 Wi-Fi USB 适配器(1000mW 高功率无线 G 802.11g,带 5dBi 天线)。
在这里插入图片描述
一旦您拥有无线网卡,您就可以运行数据包嗅探工具来捕获数据包,就像我们在实验 1 中所做的那样。

Step 1 启动 Wireshark 程序。

为了嗅探数据包,您可能需要通过在终端中键入 $ sudowireshark 来授予 Wireshark root 权限。下面是我的 iMac 桌面上 Wireshark 界面的屏幕截图。

在这里插入图片描述
Step 2 选择WiFi接口

单击 Wireshark 程序中的“捕获”->“选项”。寻找 WiFi 接口。通常,接口名称为 wlan0,但根据您的配置,它可能是不同的名称。例如,我的 iMac 上的 WiFi 接口名称是“WiFi:en1”。

Step 3 启用监控模式或混杂模式

在监控模式下,它捕获其距离范围内所有 SSID 的所有数据包。请注意,监控模式与混杂模式不同。为了本实验的目的,我们需要捕获所有流量,以便我们需要启用监视模式或混杂模式。

下面的屏幕截图显示了我的 iMac 上的 Wireshark 程序在监视器模式下的捕获接口的配置。您需要启用监控模式并将链路层头配置为802.11。
在这里插入图片描述
下面的屏幕截图显示了我的 iMac 上的 Wireshark 程序中混杂的捕获接口的配置。您需要启用混杂模式并将链路层头配置为每数据包信息。
在这里插入图片描述
Step 4 开始捕捉
单击捕获接口窗口中的开始并开始捕获。下面的屏幕截图显示了 Wireshark 程序在监视模式下捕获时的界面。
在这里插入图片描述

Capturing the Four-way Handshake

要破解 WPA/WPA2 密码,我们首先需要捕获包含以下内容的四次握手:

Step 1 开始捕获所有流量

这就是我们在上一步中所做的。只需将 Wireshark 程序进入监控模式并运行

Step 2 使用其密码连接到接入点

使用您的手机或笔记本电脑连接到接入点。出于本实验的目的,我们教室中的路由器的 SSID 是“Hack3r”。

Step 3 停止Wireshark程序并识别四次握手

按停止按钮停止Wireshark中的捕获;在过滤器中输入关键字“EAPOL”来识别四次握手。下面的屏幕截图显示了示例。

在这里插入图片描述
Step 4 保存捕获的流量

单击文件 -> 另存为选项将捕获的流量保存到 pcap 文件。下面的屏幕截图显示了示例。保存的pcap文件名为:test.pcap

在这里插入图片描述

Cracking WPA2 WiFi Passphrase Using Kali Linux

在本实验中,我们使用 Kali Linux 来破解 WPA2 WiFi 密码。选择名为“Lab7”的虚拟机映像。

在这里插入图片描述
使用用户名 root 和密码 [TBA in the class] 登录 Kali 镜像。以下是登录后的屏幕截图。

在这里插入图片描述
Step 1 将 test.pcap 文件复制到 Kali Linux 中

在我们的 Kali Linux 映像中,有 test-instructor-monitor.pcap 和 testinstructor-promiscously 文件的副本。如果您没有 test.pcap 的副本,也可以使用这些文件。

Step 2 使用aircrack-ng破解密码

Aircrack-ng 是一个网络软件套件,由用于 802.11 无线 LAN 的检测器、数据包嗅探器、WEP 和 WPA/WPA2-PSK 破解器以及分析工具组成。 Kali Linux 已默认安装它。

您可以输入 $ man aircrack-ng 查看该工具的手册页

在这里插入图片描述
运行以下命令来破解密码

$ aircrack-ng -w /usr/share/wordlists/fern-wifi/common.txt ~/Desktop/test-instructormonitor.pcap

-w: specify the path to the wordlist

接下来是 pcap 文件。下面的屏幕截图显示了命令的执行情况。
在这里插入图片描述
然后,我们为 WPA2 握手选择索引。我们可以通过SSID来识别索引。从截图中我们可以看到“Hack3r”的索引为5。

输入5后,我们可以看到aircrack已经成功破解密码,如下图所示。

在这里插入图片描述
下面是破解monitor模式捕获的pcap文件的截图。
在这里插入图片描述
选择1作为目标网络接口后,如下图所示,密码已被破解。
在这里插入图片描述

Assignments for Lab 6 Part 2

1.阅读上面的实验室说明并完成所有任务。
2.回答引言部分中的问题,并证明你的答案。简单的是或否的回答不会获得任何学分。
2.1 监控模式和混杂模式有什么区别
2.2 我们从本实验中学到了有关设置 WiFi 密码的哪些经验教训?
3. 将路由器更改为不同的密码,然后使用 Wireshark 和 Aircrach-ng 破解密码。显示结果的屏幕截图。

Extra Credit (3pt): 发送广播解除身份验证数据包以强制客户端重新连接。然后您就可以捕获四次握手。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux】服务器Ubuntu20.04安装cuda11.8教程

【linux】服务器Ubuntu20.04安装cuda11.8教程 文章目录 【linux】服务器Ubuntu20.04安装cuda11.8教程到官网找到对应版本下载链接终端操作cudnn安装到官网下载下载后解压进入解压后的目录:将头文件复制到 /usr/local/cuda/include/ 目录:将库文件复制到 …

利用客户端导入有关联的业务数据(DBeaver+sql)

前言 最近有点坑,麻辣烫的活落手上了,上个迭代除了自己的开发任务,还有处理接手的工作。然后节后问题又多,还有前1个迭代没有测试的模块本迭代测试,烦死了。 这次这个数据处理的活,以后希望可以交出…

mac电脑设置chrome浏览器语言切换为日语英语等不生效问题

在chrome中设置了语言,并且已经置顶了,但是不生效,在windows上直接有设置当前语言为chrome显示语言,但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的: 单独给它设定成指定的语言,然后重…

川渝地区计算机考研择校分析

C哥专业提供——计软考研院校选择分析专业课备考指南规划 添加图片注释,不超过 140 字(可选) 根据最新数据分析,5所高校计算机专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南…

Vision-Language Models for Vision Tasks: A Survey阅读笔记

虽然LLM的文章还没都看完,但是终究是开始看起来了VLM,首当其冲,当然是做一片文献综述啦。这篇文章比较早了,2024年2月份出的last version。 文章链接:https://arxiv.org/abs/2304.00685 GitHub链接:GitHu…

命名空间std, using namespace std

命名空间std&#xff0c;using namespace std 在标准C以前&#xff0c;都是用#include<iostream.h>这样的写法的&#xff0c;因为要包含进来的头文件名就是iostream.h。标准C引入了名字空间的概念&#xff0c;并把iostream等标准库中的东东封装到了std名字空间中&#x…

【linux网络编程】| 网络基础 | 解析IP与Mac地址的区别

前言&#xff1a;本节内容讲解一些网络基础相关的知识点&#xff0c; 不涉及网络代码&#xff01;同样的本节内容是作为前一篇的补充知识点&#xff0c; 前一篇文章地址&#xff1a;【linux网络编程】 | 网络基础Ⅰ| 认识网络-CSDN博客&#xff0c;本篇文章内容较少&#xff0c…

【论文笔记】MLSLT: Towards Multilingual Sign Language Translation

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: MLSLT: Towards Multiling…

计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法

文章目录 IPv4IPv4的表示方法IPv4的编址方法分类编址A类地址B类地址C类地址可指派的地址数量一般不使用的特殊IPv4地址 划分子网编址子网掩码默认子网掩码 无分类编址方法地址掩码斜线记法无分类域间路由选择 CIDR IPv4 IPv4&#xff08;Internet Protocol version 4&#xff…

麒麟v10 arm64 部署 kubesphere 3.4 修改记录

arm64环境&#xff0c;默认安装 kubesphere 3.4 &#xff0c;需要修改几个地方的镜像&#xff0c;并且会出现日志无法显示 1 fluentbit:v1.9.4 报错 <jemalloc>: Unsupported system page size Error in GnuTLS initialization: ASN1 parser: Element was not found. &…

C++ [项目] 愤怒的小鸟

现在才发现C游戏的支持率这么高&#xff0c;那就发几篇吧 零、前情提要 此篇为 制作,由于他没有CSDN,于是由我代发 一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 …

Oracle SQL Developer 同时打开多个table的设置

Oracle SQL Developer 同时打开多个table的设置 工具 》 首选项 》数据库 》对象查看器&#xff0c;勾选 “自动冻结对象查看器窗口”

数据结构------手撕顺序表

文章目录 线性表顺序表的使用及其内部方法ArrayList 的扩容机制顺序表的几种遍历方式顺序表的优缺点顺序表的模拟实现洗牌算法 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;…

TLS协议基本原理与Wireshark分析

01背 景 随着车联网的迅猛发展&#xff0c;汽车已经不再是传统的机械交通工具&#xff0c;而是智能化、互联化的移动终端。然而&#xff0c;随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中&#xff0c;车辆通过无线网络与其他车辆、基础设施以及云端服务进行…

Lucas带你手撕机器学习——套索回归

好的&#xff0c;下面我将详细介绍套索回归的背景、理论基础、实现细节以及在实践中的应用&#xff0c;同时还会讨论其优缺点和一些常见问题。 套索回归&#xff08;Lasso Regression&#xff09; 1. 背景与动机 在机器学习和统计学中&#xff0c;模型的复杂性通常会影响其在…

【云原生】Kubernets1.29部署StorageClass-NFS作为存储类,动态创建pvc(已存在NFS服务端)

文章目录 在写redis集群搭建的时候,有提到过使用nfs做storageclass,那时候kubernetes是1.20版本,https://dongweizhen.blog.csdn.net/article/details/130651727 现在使用的是kubernetes 1.29版本,根据之前的修改方式并未生效,反而提示:Error: invalid argument "Re…

Claude Financial Data Analyst:基于Claude的金融数据分析工具!免费开源!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

智创 AI 新视界 -- 探秘 AIGC 中的生成对抗网络(GAN)应用

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【算法设计与分析】-回溯法的回忆-学习【期末复习篇章】

引言 简单说,迷宫问题的求解方法就是走的通就走&#xff0c;走不通 就回头寻找另外的路径的一种满足某约束条件的穷举式 搜索技术 回溯法是一种在解空间中搜索可行解或最优解的方法。 该方法通常将解空间看做树形结构&#xff0c;即状态空间树。从根结 点开始,以深度优先对状态…

李沐读论文-启发点记录2:Resnet--残差连接--kaiming老师神作

&#xff08;一&#xff09;可以借鉴&#xff1a; 1. 计算机视觉的论文&#xff0c;都会在第一页的右上角&#xff0c;放上一张好看的图&#xff01; 2.bottleNet的设计——很大程度上节省了计算FLOPs开销&#xff0c;这是Resnet50及其更大版本都会用到的设计。 3.Resnet在de…