Suricata – 入侵检测、预防和安全工具

一、Suricata介绍

Suricata是一个功能强大、用途广泛的开源威胁检测引擎,提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。它执行深度数据包(网络流量)检查以及模式匹配,在威胁检测中非常强大。
工作流程:
主要特点:
  • IDS/IPS – Suricata 是一个基于规则的入侵检测和防御引擎,它利用外部开发的规则集(例如Talos规则集和新兴威胁 Suricata 规则集)来监控网络流量中是否存在任何恶意活动、策略违规和威胁。
  • 自动协议检测——Suricata 引擎自动检测 HTTP 和 HTTPS 等协议。任何端口上的 FTP 和 SMB,并应用适当的检测和日志记录逻辑。这在检测恶意软件和 CnC 通道时派上用场。
  • Lua 脚本——Suricata 可以调用提供高级恶意软件检测的Lua脚本,以检测和解码原本难以检测的恶意软件流量。
  • 多线程——Suricata在确定网络流量时提供速度和重要性。该引擎旨在应用现代多核硬件芯片组提供的增强处理能力。

二、安装与使用Suricata

2.1、安装

参考2. Quickstart guide — Suricata 7.0.2-dev documentation
因为官方的PPA可以用于安装。要安装最新的稳定Suricata版本,请执行以下步骤:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update
sudo apt-get install suricata  jq
添加了专用的PPA存储库,更新索引后,可以安装Suricata。我们建议此时安装jq工具,因为它将有助于显示Suricata的EVE JSON输出中的信息。
安装Suricata后,您可以检查您运行的Suricata的版本、选项以及服务状态:
sudo suricata --build-info
sudo systemctl status suricata
执行文件:/usr/bin/suricata
配置项与rule规则集:/etc/suricata/
需要重点关注的是suricata.yaml和rules文件夹
  • suricata.yaml文件是对于suricata的软件配置。
  • rules文件夹中存放了相关的检测规则,如果在suricata运行过程中有数据包分析触发了检测规则,则会以日志的形式输出。
日志文件:/var/log/suricata/,也可以在配置文件suricata.yaml中更改default-log-dir
  • eve.json:告警和事件的详细信息
  • fast.log:告警信息简单汇总,一行内容,不是具体信息
  • stats.log:引擎统计信息,比如内存使用计数、数据包数量计数
  • suricata.log:suricata启动过程相关日志
基本指令操作:
升级Suricata:
sudo apt-get update
$ sudo apt-get upgrade suricata
删除Suricata:
sudo apt-get remove suricata
希望 Suricata 具有内置(启用)调试:
sudo apt-get install suricata-dbg 

2.2、配置Suricata

> 首先要配置内部网络和外部网络参数,修改配置文件/etc/suricata/suricata.yaml
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"  # 内网是HOME_NET参数,设置为系统内网网段
EXTERNAL_NET: "!$HOME_NET"  # 指定外部网络
> 指定Suricata检查网络流量的网络接口(ip addr查看):
> 确保将default-rule-path属性设置为/etc/suricata/rules:
> 保存更改并关闭配置文件。然后重新启动Suricata以应用更改:
sudo systemctl restart suricata

2.3、更新Suricata规则集

默认情况下,Suricata附带一组有限的检测规则,位于/etc/suricata/rules/目录中。但是这些规则在检测威胁入侵方面能力较弱,可以更新业内知名的第三方规则集来提高检测效果。
Suricata提供了一个名为suricata-update的工具,它允许您从规则集提供者那里获取规则。有些是免费的,例如ET Open set,而有些则需要付费订阅。
它是一个用Python编写的工具,可以使用pip全局安装Suricata-Update供所有用户使用:pip3 install --upgrade suricata-update
要为您的服务器获取最新的规则集,请运行以下命令
$ sudo suricata-update update-sources  # 更新规则集索引
$ sudo suricata-update list-sources  列出默认的规则提供程序集
$ sudo suricata-update enable-source et/open  # 添加规则集et/open
$ sudo suricata-update -o /etc/suricata/rules
从输出中,您可以看到suricata-update获取免费的Emerging Threats ET Open Rules并将它们保存到 Suricata 的/etc/suricata/rules/suricata规则文件。此外,它表示处理的规则数。在此示例中,总共添加了45266个。其中,启用了35359个,删除了6个,修改了131个。

2.4、测试 Suricata 规则

在开始测试Suricata之前,建议先测试一下配置是否正常:
$ sudo suricata -T -c /etc/suricata/suricata.yaml -v
这里将按照Suricata 的快速入门指南的建议,通过模拟入侵来测试ET Open规则集。
通过向作为NIDS( 网络入侵和检测系统)框架的 testmynids.org网站发送 HTTP 请求,将使用签名 ID 2100498 测试 IDS 功能。
2100498:
/etc/suricata/rules/ suricata.rules中存在2100498:
alert ip any any -> any any (msg : "GPL ATTACK_RESPONSE id check returned root" ; content : "uid=0|28|root|29|" ; classtype :bad -unknown ; sid : 2100498 ; rev : 7 ; metadata :created_at 2010_09_23 , updated_at 2010_09_23 ;)
这 将对任何在其有效负载中包含内容的 IP 流量发出警报。
$ curl http://testmynids.org/uid/index.html
应该得到以下输出:
发送的 HTTP请求旨在通过模仿id命令的输出来触发警报,该命令可能通过 shell 在受感染的远程系统上运行。
现在让我们筛选 Suricata 的日志以获取相应的警报。Suricata 附带两个默认启用的日志文件:
  • /fast.log
  • /var/log/suricata/eve.json
将使用grep 命令在/var/log/suricata/fast.log日志文件中检查与curl 请求相对应的日志条目。我们将使用快速入门文档中的2100498规则标识符搜索日志条目:
$ grep 2100948 /var/log/suricata/fast.log, 这样将获得以下表示入侵的输出:
或者,您可以检查/var/log/suricata/eve.log日志文件中的签名 ID 2100498,如图所示
$ jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

三、suricata-update规则管理 

参考   suricata-update规则管理 - 简书 (jianshu.com)
Suricata-Update是更新和管理Suricata规则的官方方式。
安装: pip3 install --upgrade suricata-update
更新规则
suricata-update命令将执行以下操作:
  • 查找suricata路径上的程序以确定其版本;
  • 查找/etc/suricata/enable.conf,/etc/suricata/disable.conf,/etc/suricata/drop.conf和/etc/suricata/modify.conf以查找要应用于下载规则的过滤器。这些文件是可选的,不需要存在。
  • 下载适用于您的Suricata版本的Emerging Threats Open规则集,如果找不到则默认为4.0.0。
  • 应用上面加载的启用,禁用,删除和修改过滤器。
  • 写出规则/etc/suricata/rules/suricata.rules。
  • 在测试模式下运行Suricata  /etc/suricata/rules/suricata.rules
suricata-update用法:
root@node1:/etc/suricata# suricata-update -h
usage: suricata-update update [-h] [-v] [-q] [-D <directory>] [-c <filename>]
                              [--suricata-conf <filename>] [--suricata <path>]
                              [--suricata-version <version>]
                              [--user-agent <user-agent>]
                              [--no-check-certificate] [-V] [-o <directory>]
                              [-f] [--yaml-fragment <filename>] [--url <url>]
                              [--local <path>] [--sid-msg-map <filename>]
                              [--sid-msg-map-2 <filename>]
                              [--disable-conf <filename>]
                              [--enable-conf <filename>]
                              [--modify-conf <filename>]
                              [--drop-conf <filename>] [--ignore <pattern>]
                              [--no-ignore] [--threshold-in <filename>]
                              [--threshold-out <filename>]
                              [--dump-sample-configs] [--etopen]
                              [--reload-command <command>] [--no-reload]
                              [-T <command>] [--no-test] [--no-merge]
                              [--offline] [--fail]
optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         更详细的输出
  -q, --quiet           安静地跑。仅显示警告和错误消息
  -D <directory>, --data-dir <directory>
                        设置备用数据目录 (default: /var/lib/suricata)
  -c <filename>, --config <filename>
                        suricata-update配置文件的路径 (default/etc/suricata/update.yaml)
  --suricata-conf <filename>
                        suricata配置文件的路径 (default/etc/suricata/suricata.yaml)
  --suricata <path>     Suricata程序的路径
  --suricata-version <version>
                        将Suricata版本设置为特定版本,而不是检查路径上的Suricata版本。
  --user-agent <user-agent>
                        为HTTP请求设置自定义用户代理字符串
  --no-check-certificate
                        Disable server SSL/TLS certificate verification
  -V, --version         显示suricata-update的版本
  -o <directory>, --output <directory>
                        要将规则输出到的目录
  -f, --force           强制远程规则文件下载(如果它们不是刚刚下载),或者远程校验和与缓存副本匹配
  --yaml-fragment <filename>
                        Output YAML fragment for rule inclusion
  --url <url>           从中下载规则的URL。此选项可以多次使用
  --local <path>        要包含的本地规则文件的文件名或目录的路径
  --sid-msg-map <filename>
                        Generate a sid-msg.map file
  --sid-msg-map-2 <filename>
                        Generate a v2 sid-msg.map file
  --disable-conf <filename>
                        Filename of rule disable filters
  --enable-conf <filename>
                        Filename of rule enable filters
  --modify-conf <filename>
                        Filename of rule modification filters
  --drop-conf <filename>
                        Filename of drop rule filters
  --ignore <pattern>    Filenames to ignore (can be specified multiple timesdefault: *deleted.rules)
  --no-ignore           Disables the ignore option.
  --threshold-in <filename>
                        Filename of rule thresholding configuration
  --threshold-out <filename>
                        Output of processed threshold configuration
  --dump-sample-configs
                        Dump sample config files to current directory
  --etopen              默认下载ET / Open规则集
  --reload-command <command>
                        Command to run after update if modified
  --no-reload           禁用Suricata规则重新加载
  -T <command>, --test-command <command>  指定自定义测试命令以在重新加载Suricata之前测试规则
  --no-test             禁用测试命令并继续进行,就像它已经通过一样
  --no-merge            不要将规则合并到单个规则文件中。警告:如果2个输入规则文件具有相同名称,则不会尝试解决冲突。
  --offline             Run offline using most recent cached rules
  --fail                Strictly fail and exit in case of an error
other commands:
    update-sources             Update the source index
    list-sources               List available sources
    enable-source              Enable a source from the index
    disable-source             Disable an enabled source
    remove-source              Remove an enabled or disabled source
    add-source                 Add a new source by URL
    check-versions             Check version of suricata-update

四、Suricata规则

suricata规则由三部分组成:
  • Action:规则匹配后所执行的操作;
  • Header:定义规则的协议、源和目的IP地址、端口和流量方向;
  • Options:选项,指定诸如签名ID(sid)、日志信息、匹配数据包内容的正则表达式、分类类型,以及其他可以帮助缩小识别合法和可疑流量的修饰语 。
一条自定义规则:
alert http any any <> $HOME_NET 80 (msg:"web服务器出现404状态码"; content: "404"; http_stat_code; sid:561001;)
Action取值范围如下:
  • pass:如果匹配到规则,suricate会停止扫描并放行数据包
  • drop:如果程序匹配到了这类规则,这个数据包被阻断将不会被发送到目标。Drop只能在IPS/inline模式下可用。缺点:接收器没有接收到正在发生事情的信息,导致超时(TCP),Suricata对这个数据包生成一个警报。
  • reject:不同于 Drop 直接丢弃数据包,reject 在匹配到规则时会主动进行拒绝数据包。有两种类型的拒绝数据包将自动选择。当违规数据包与TCP有关时,会发送Reset-Packet包。对其他所有协议,会发送ICMP-error包。Suricata同时会生成一个警告。在Inline/IPS模式下,违规数据包也会被drop掉,与Drop action相似。
  • alert:当匹配到规则时,Suricata 不会对数据包进行任何操作,会像对正常数据包一样进行放行,除了会记录一条只有管理员能够看到的警
以上四种操作也是有优先级的,默认的优先级为:Pass > Drop > Reject > Alert。也就是规则在匹配时会优先考虑包含 Pass 的规则,其次才是 Drop,再然后是 Reject,最后再考虑包含 Alert 的规则
Header包含如下几项内容
  • 协议(Protocol):这个字段用来告诉 Suricata当前规则所包含的协议。其取值可以为:tcp,udp,icmp,ip,http,ftp,tls(包含ssl),smb,dns等;这些协议能不能用取决于配置文件suricata.yaml中是否配置了这些协议
  • 源/目的地址(Source and destination):源/目的地址可以设置为 IP 地址或者在配置文件(Suricata.yaml)里定义的变量;
  • 端口号(Ports):不同的协议使用不同的端口号,例如 HTTP 使用 80 端口,而 HTTPS则使用 443。通常情况下端口号会设置为 any,这样会影响所有的协议;
  • 流向(Direction):流向告诉规则匹配哪些流量数据,是源ip到目标ip的单项流量,还是2个ip往返之间的流量。其中,每条规则都必须有一个箭头如示:->或<>。
Options包含一系列选项,选项以key:value或者key的形式存在,用;进行分隔<keyword>: <settings>; <keyword>;
常见的选项如下6. Suricata Rules — Suricata 6.0.3 documentation

五、添加自己的Suricata规则

6.13. HTTP关键字 — Suricata 7.0.0-dev 文档 (osgeo.cn)
suricata HTTP关键字 - 23云恋49枫 - 博客园 (cnblogs.com)
1、在/etc/suricata/rules/下创建my.rules文件
2、向my.rules中写入自己的规则
# 百度搜素
alert tcp any any -> any any (msg:"hit baidu.com..."; content:"baidu"; reference:url, www.baidu.com; sid:888888890;)
alert tcp any any -> any any (msg:"hit baidu.com"; content:"baidu"; sid:888888891;)# 登录dvwa
alert http any any <> any any (msg:"dvwa url"; content:"/login.php";  http_uri; nocase; sid:8880; rev:1;)
alert http any any -> any any (msg:"dvwa protocol"; flow:to_server; http_protocol; content:"HTTP/1.1"; sid:8881; rev:1;)
alert http any any -> any any (msg:"dvwa request header";  content:"application/x-www-form-urlencoded"; http_header; sid:8882; rev:1;)
alert http any any -> any any (msg:"dvwa request referer"; http_referer;  content:"http://192.168.11.45/login.php"; sid:8883; rev:1;)
alert http any any -> any any (msg:"dvwa request user agent";  content:"Mozilla/5.0"; http_user_agent; nocase; sid:8884; rev:1;)
alert http any any -> any any (msg:"dvwa request cookie";  content:"security=impossible"; http_cookie; nocase; sid:8885; rev:1;)
alert http any any -> any any (msg:"dvwa request body";  content:"username=admin"; http_client_body; nocase; sid:8886; rev:1;)
alert http any any -> any any (msg:"dvwa request body"; file_data;  content:"username=admin"; content:"password=password"; nocase; sid:88861;  rev:1;)
alert http any any <> any any (msg:"dvwa"; content: "200"; http_stat_code; sid:8887; rev:1;)
alert http any any <> any any (msg:"dvwa"; content: "302"; http_stat_code; sid:8888; rev:1;)
alert http any any <> any any (msg:"dvwa code"; content:"impossible"; nocase; sid:8889; rev:1;)
# sqli-lab
alert http any any -> any any (msg:"SQL注入攻击"; content:"/Less-1"; http_uri; nocase; sid:562001; rev:1;)
alert http any any -> any any (msg:"SQL注入攻击-union."; content:"select"; http_uri; nocase; classtype:web-sql-injection; sid:562002; rev:1;)
alert http any any -> any any (msg:"SQL注入攻击---."; content:"--"; http_uri; nocase; classtype:web-sql-injection; sid:562003; rev:1;)
alert http any any -> any any (msg:"SQL注入攻击response."; content:"Your Login name"; http_server_body; nocase; classtype:web-sql-injection; sid:562004; rev:1;)
alert http any any -> any any (msg:"SQL注入攻击response_1."; http_server_body;  content:"Your Login name"; content:"Your Password"; nocase;  classtype:web-sql-injection; sid:562005; rev:1;)    # 语法解析error
alert http any any -> any any (msg:"SQL注入攻击response_2."; file_data; content:"Your Login name"; content:"Your Password"; nocase;  classtype:web-sql-injection; sid:562006; rev:1;)
3、更新Suricata配置文件/etc/suricata/suricata.yaml,确保你的本地规则文件已添加到规则列表:
4、如果您必须更正您的规则和/或修改Suricata的YAML配置文件,那么您必须重新启动Suricata。
systemctl restart suricata
5、运行suricata并查看是否正在加载规则。
suricata -c /etc/suricata/suricata.yaml -i ens160
比如错误的规则被检测出来了:
如果规则未能加载,Suricata将显示与它认为该规则不可加载时一样多的信息。特别注意细节:查找特殊字符、空格、大写字符等的错误。
6、虚拟机上网页访问baidu.com或者curl baidu.com 
7、笔记本上网页访问http://192.168.11.45/login.php,输入用户密码,登录
8、网页访问http://192.168.11.45:8080/Less-1/?id=-1' UNION SELECT 1,2,3 --+

六、参考

GitHub - OISF/suricata: Suricata is a network Intrusion Detection System, Intrusion Prevention System and Network Security Monitoring engine developed by the OISF and the Suricata community.

7.2. 添加您自己的规则 — Suricata 7.0.0-dev 文档 (osgeo.cn) 官方文档

   

Suricata – 入侵检测、预防和安全工具 - 知乎 (zhihu.com)

(2条消息) Suricata规则编写_投篮不准的程序员不是一个好车手的博客-CSDN博客

五.Suricata识别http攻击流量 - eveplw - 博客园 (cnblogs.com)

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

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

相关文章

关于对XSS原理分析与绕过总结

一、原理 该文章仅用于信息防御技术教学&#xff0c;请勿用于其他用途。 1、XSS原理 XSS&#xff08;跨站脚本攻击&#xff09;是一种常见的网络安全漏洞&#xff0c;攻击者通常会在网页中插入恶意的 JavaScript 代码。由于服务器对输入数据的过滤和验证不严格&#xff0c;这…

leetcode做题笔记160. 相交链表

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

【力扣每日一题】2023.10.7 股票价格跨度

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个数组表示不同时间的股票的价格&#xff0c;要我们按照顺序返回每天的股票价格跨度&#xff0c;价格跨度就是股票价格小于或等于…

Java源码分析(三)ArrayList

ArrayList是我们经常用到的一个集合类&#xff0c;那么本篇我们一起学习下ArrayList的源码。 一、创建ArrayList 首先&#xff0c;我们从创建ArrayList开始。如下代码&#xff0c;创建一个空的ArrayList&#xff1a; List<String> list new ArrayList<>(); 看下…

从零开始开发企培源码:搭建企业内训小程序的全面指南

在当今竞争激烈的企业世界中&#xff0c;不断提升员工的技能和知识已经成为了保持竞争力的必要条件之一。因此&#xff0c;越来越多的企业开始重视内部培训&#xff0c;以确保员工具备所需的技能和知识。为了更有效地进行内部培训&#xff0c;许多企业都在考虑开发自己的企业内…

【网络通信三要素】TCP与UDP快速入门

网络通信三要素 1.什么是网络编程&#xff1f; 可以让设备中的程序&#xff0c;与网络上其他设备中的程序进行数据交互&#xff0c;从而实现网络通信的手段&#xff0c;java.net.*包下提供了网络编程的解决方案 2.基本的通信架构 基本的通信架构有2种形式&#xff1a;CS架构…

力扣-404.左叶子之和

Idea attention&#xff1a;先看清楚题目&#xff0c;题目说的是左叶子结点&#xff0c;不是左结点【泣不成声】 遇到像这种二叉树类型的题目呢&#xff0c;我们一般还是选择dfs&#xff0c;然后类似于前序遍历的方式加上判断条件即可 AC Code class Solution { public:void d…

利用GPIO中断实现的温度显示器

硬件设计&#xff1a; 软件设计&#xff1a; /****************************************************************************** * * Copyright (C) 2009 - 2014 Xilinx, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obta…

nginx高可用配置(五)

keepalived keepalived安装 1.#进入根目录下的 usr目录 cd /usr 2.#安装keepalived yum install keepalived -y 3.安装完成后在根目录etc下会有个keepalived目录 4.进入keepalived目录 cd keepalived/ 5.ll命令查看&#xff0c;会有个配置文件 keepalived.conf 6.ke…

【juc】countdownlatch实现游戏进度

目录 一、截图示例二、代码示例 一、截图示例 二、代码示例 package com.learning.countdownlatch;import java.util.Arrays; import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurr…

Safran与是德科技合作为蔚来提供电动汽车中的5G和C-V2X连接测试

概述 虹科Safran GNSS模拟器助力是德科技&#xff08;Keysight&#xff09;为中国顶级电动汽车制造商之一——蔚来汽车&#xff08;NIO&#xff09;提供了业界领先的UXM 5G测试解决方案以验证5G和C-V2X的连接性&#xff0c;能够根据3GPP和其他标准组织定义的最新5G新无线电&am…

【Vue面试题七】、SPA (单页面) 首屏加载速度慢怎么解决?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;SPA首屏加载速度慢的怎么…

【JavaEE】_HTTP请求与HTTP响应

目录 1. HTTP协议 2. HTTP请求 2.1 HTTP请求首行 2.2 URL 2.3 HTTP方法 2.3.1 GET请求 2.3.2 POST请求 2.3.3 GET与POST的区别 2.3.4 其他方法 2.4 请求报头header 2.4.1 Host&#xff1a; 2.4.2 Content-Length与Content-Type&#xff1a; 2.4.3 User-Agent&…

青少年近视问题不容小觑,蔡司用专业技术助力孩子视力健康发展

根据国家卫健委公布的数据显示&#xff0c;2022年全国儿童青少年近视率达到53.6%&#xff0c;青少年近视已成为社会普遍的眼健康问题。对家长来说&#xff0c;也需要提高对孩子眼视光健康重要性的认知&#xff0c;日常培养青少年良好的用眼习惯&#xff0c;并通过矫正视力的方式…

珠宝饰品商家为什么要做微信小程序开发

珠宝饰品商家为什么要做微信小程序开发&#xff1f; 随着互联网的发展&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;正逐渐成为商家们关注的热点。对于珠宝饰品商家来说&#xff0c;开发微信小程序具有以下几个方面的优势&#xff1a; 一、获取更多流量 微信小程…

数据挖掘实验(一)数据规范化【最小-最大规范化、零-均值规范化、小数定标规范化】

一、数据规范化的原理 数据规范化处理是数据挖掘的一项基础工作。不同的属性变量往往具有不同的取值范围&#xff0c;数值间的差别可能很大&#xff0c;不进行处理可能会影响到数据分析的结果。为了消除指标之间由于取值范围带来的差异&#xff0c;需要进行标准化处理。将数据…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验

课程1_第1周_测验题 目录&#xff1a;目录 第一题 1.“人工智能是新电力” 这个比喻指的是什么&#xff1f; A. 【  】人工智能为我们的家庭和办公室的个人设备供电&#xff0c;类似于电力。 B. 【  】通过“智能电网”&#xff0c;人工智能正在传递新一波的电力。 C. …

计算机竞赛 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域&#xff0c;在无人驾驶领域中机器学习的各种算法随处可见&#xff0c;今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂&#xff0c;看上去无从下手。那么面对这样极其…

springboot-admin整合及使用

0. 官方文档及示例 官方文档 示例代码:Spring-Boot-Admin-Demo 1. 概述 Spring Boot Admin(SBA)是一个开源的社区项目&#xff0c;用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式&#xff0c;或 Spring Cloud 服务发现机制注册到 SBA 中&#xff0c;然…

【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)

NVM 包管理工具 安装 访问NVM-Windows的GitHub页面&#xff1a;点击nvm-setup.exe。 根据提示进行下一步&#xff0c;文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功&#xff0c;它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…