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

news2024/11/24 8:48:43

目录

  • 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.coloradmin.cn/o/2223696.html

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

相关文章

PoissonRecon学习笔记

1. Screened Poisson Reconstruction (SPR) 源码:https://github.com/mkazhdan/PoissonRecon However, as noted by several researchers, it suffers from a tendency to over-smooth the data. 泊松重建存在过度平滑的现象。 方法:position and gradi…

为Windows Terminal 配置zsh + Oh-My-Zsh!

参考: 为Windows Terminal 配置zsh Oh-My-Zsh! [非WSL] https://zhuanlan.zhihu.com/p/625583037 Package: zsh - MSYS2 Packages 安装配置 1、安装 Windows Terminal(必须) Method 1: 打开 Microsoft Store,搜索 “Windows Terminal”。点击 “…

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架, 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤: 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网: Djang…

开源表单生成器OpnForm

什么是 OpnForm ? OpnForm 是一个开源的表单构建工具,旨在简化创建自定义表单的过程,特别适合无编码知识的用户。它通过人工智能优化表单创建流程,支持多种用途,如联系人表单、调查表等。OpnForm 提供了一个直观的拖放…

最优化方法-无约束优化算法(最速下降法)matlab实现

一、前言 最速下降法 ,又称为梯度法,是一种无约束求解多元函数极小值的方法。最速下降法的起源可以追溯到19世纪,最早由数学家Cauchy在1847年提出。随着计算机技术的发展,最速下降法在20世纪50年代逐渐应用于各种优化问题&#x…

BD数字化装备车场:RFID技术的突破之道

传统的车库管理流程主要依赖手工方式,这无疑降低了作业效率,尤其在任务高峰期或紧急情况下,车库进出口的交通堵塞问题尤为突出。随着2023年的到来,我国相继发布了《交通强国建设纲要》与《数字中国建设整体布局规划》等关键政策文…

Uni-App-01

HBuilder安装卸载 安装 下载HBuilder最新版 解压到安装目录,路径中不要有中文和空格 在桌面上增加快捷方式 卸载 执行reset.bat 删除HBuilder文件夹(如果提示文件被占用,杀死相关进程再删除) 夜神模拟器安装 安装 下…

Flutter项目打包ios, Xcode 发布报错 Module‘flutter barcode_scanner‘not found

报错图片 背景 flutter 开发的 apple app 需要发布新版本,但是最后一哆嗦碰到个报错,这个小问题卡住了我一天,之间的埪就不说了,直接说我是怎么解决的,满满干货 思路 这个报错 涉及到 flutter_barcode_scanner; 所…

智能园艺:Spring Boot植物健康系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

《面向对象系统分析与设计》三级项目

文章目录 一、项目总体要求<设计模式应用>第一次文档要求第二次文档要求 二、示例第一次文档 - 设计原则应用1、题目描述2、设计:(1&#xff09;优化理由陈述(2&#xff09;类图(3)实现代码 第二次文档 - 设计模式应用1、题目描述2、设计:(1) 优化理由陈述(2&#xff09;…

PostGis空间(下):空间连接与空间索引

目录 1、简介2、空间连接3、空间索引3.1 索引操作3.2 空间索引的工作原理3.2.1 R-Tree 3.3 空间索引函数3.4 仅索引查询3.5 ANALYZE3.6 VACUUMing3.7 函数列表 PS 1024到啦&#xff01;&#xff01;&#xff01; 先祝各位程序员或者想成为程序员正在奋斗中的伙伴1024程序员节快…

pdf免费压缩软件 pdf文件压缩免费软件 软件工具方法

pdf文件压缩免费软件&#xff1f;对于提升日常工作效率至关重要。在繁忙的工作流程中&#xff0c;寻找一种既高效又合适的压缩策略显得尤为重要。那么&#xff0c;我们该如何优化工作流程呢&#xff1f;在职场中&#xff0c;良好的开端是制定一套清晰的工作方案。只有明确了目标…

Konva 组,层级

代码&#xff1a; <template><div class"rect"><div class"header"> <!-- <el-button type"primary" click"show">展示</el-button>--> <!-- <el-button type"success&quo…

算法设计与分析——动态规划

1.动态规划基础 1.1动态规划的基本思想 动态规划建立在最优原则的基础上&#xff0c;在每一步决策上列出可能的局部解&#xff0c;按某些条件舍弃不能得到最优解的局部解&#xff0c;通过逐层筛选减少计算量。每一步都经过筛选&#xff0c;以每一步的最优性来保证全局的最优性…

UniHttp 框架,请求http接口

项目案例下载地址: https://download.csdn.net/download/jinhuding/89902024 1.快速开始 2.1引入依赖 <dependency><groupId>io.github.burukeyou</groupId><artifactId>uniapi-http

react18中使用redux管理公共数据仓库实现数据immutable更新

Immutable.js出自Facebook&#xff0c;是最流行的不可变数据结构的实现之一。它实现了完全的持久化数据结构&#xff0c;使用结构共享。所有的更新操作都会返回新的值&#xff0c;但是在内部结构是共享的&#xff0c;来减少内存占用。Immutablejs官网 在上一篇介绍redux的文章&…

Docker 部署 JDK11 图文并茂简单易懂

部署 JDK11 ( Docker ) [Step 1] : 下载JDK11 - JDK 11 | Oracle 甲骨文官网 [Step 2] : jdk11上传服务器/root/jdk11 可自行创建文件夹 进入目录 /root/jdk11 解压文件 tar -zxvf jdk-11.0.22_linux-x64_bin.tar.gz解压后 进入 /root/jdk11/jdk-11.0.22 创建 jre 文件 ./bi…

基于RK3588/算能BM1684 AI盒子:综合视频智能AI分析系统建设方案(三)安全帽、睡岗检测、电瓶车、吸烟场景

安全帽反光衣检测算法 功能说明 安全帽反光衣检测是指在监控场景中预先设定监测区域&#xff0c;在区域内人员没有穿戴安全帽反光衣的现象&#xff0c;及时触发告警。检测目标在1080p图像中的分辨率大小不小于30*30像素。 推荐场景 场景要求&#xff1a;可室内外使用&#x…

VS无法安装Win10SDK_10.0.2200,快捷方法

Visual Studio无法安装Win10SDK_10.0.2200&#xff0c;我在安装VS2019、2022提示&#xff0c;软件就不能编译。 因为之前安装过VS软件&#xff0c;重新安装软件提示“无法安装”。 原因 之前安装在D盘&#xff0c;现在没有D盘了 说明 因为电脑第一次安装VS&#xff0c;会自动安…

安全见闻---清风

注&#xff1a;本文章源于泷羽SEC&#xff0c;如有侵权请联系我&#xff0c;违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 安全见闻1 泷哥语录&#xff1a;安全领域什么都有&#xff0c;不要被表象所迷惑&#xff0c;无论技术也好还是其他方面…