当前位置: 首页 > news >正文

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)

相关文章:

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

一、Suricata介绍 Suricata是一个功能强大、用途广泛的开源威胁检测引擎&#xff0c;提供入侵检测 (IDS)、入侵防御 (IPS) 和网络安全监控功能。它执行深度数据包&#xff08;网络流量&#xff09;检查以及模式匹配&#xff0c;在威胁检测中非常强大。 工作流程&#xff1a; 主…...

vscode 乱码解决

windows 10 系统 vs code 编译运行和调试 C/C_vscode windows编译_雪的期许的博客-CSDN博客 VS Code默认文件编码时UTF-8&#xff0c;这对大多数情况是没有问题的&#xff0c;却偏偏对C/C有问题。如果以UTF-8编码保存C/C代码&#xff0c;那么只能输出英文&#xff0c;另外使用…...

SpringCloud(37):Spring Cloud Alibaba 综合集成架构演示

Spring Cloud是一个较为全面的微服务框架集,集成了如服务注册发现、配置中心、消息总线、负载均衡、断路器、API网关等功能实现。而在网上经常会发现Spring Cloud与阿里巴巴的Dubbo进行选择对比,这样做其实不是很妥当,前者是一套较为完整的架构方案,而Dubbo只是服务治理与R…...

【单片机】15-AD和DA转换

1.AD转换及其相关背景知识 1.基本概念 1.什么是AD转换&#xff1f; A&#xff08;A&#xff0c;analog&#xff0c;模拟的&#xff0c;D&#xff0c;digital&#xff0c;数字的&#xff09; 现实世界是模拟的&#xff0c;连续分布的&#xff0c;无法被分成有限份&#xff1b;…...

基于FPGA的I2C读写EEPROM

文章目录 前言一、I2C协议1.1 I2C协议简介1.2 物理层1.3 协议层 二、EEPROM2.1 型号及硬件规格2.2 各种读写时序 三、状态机设计四、项目源码&#xff1a;五、实现效果参考资料 前言 本次项目所用开发板FPGA芯片型号为&#xff1a;EP4CE6F17C8 EEPROM芯片型号为&#xff1a;24L…...

Viva Employee Communications Communities部署方案

目录 Viva Employee Communications & Communities产品介绍 1. 沟通中心(Communications Center) 2. 新闻和公告(News and Announcements)...

WPF向Avalonia迁移(三、项目结构)

前提&#xff1a; Avalonia版本11.0.0 1.配置文件 1.1 添加配置文件 1.2 读取配置文件 添加System.Configuration.ConfigurationManager using Avalonia.Controls; using System.Configuration;namespace AvaloniaApplication7.Views {public partial class MainWindow : W…...

cvpr24写作模板pdfLaTex编译器注意点小结

文章目录 1 更改作者显示 Anonymous CVPR submission2 \label标签3 换行符// 与换列符&4 \medskip5 首行缩进6 插入图片6.1 单幅图片6.2 并排显示\hfill Reference https://cvpr.thecvf.com/Conferences/2024 1 更改作者显示 Anonymous CVPR submission 这一行开头加上% …...

windows版php扩展包下载

php8有些扩展需自己下载&#xff0c;像redis 看下phpinfo中的PHP Extension Build&#xff0c;确定自己的php版本 windows.php.net - /downloads/pecl/releases/...

计算机竞赛 题目:基于深度学习的中文汉字识别 - 深度学习 卷积神经网络 机器视觉 OCR

文章目录 0 简介1 数据集合2 网络构建3 模型训练4 模型性能评估5 文字预测6 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的中文汉字识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &a…...

Django跨域访问 nginx转发 开源浏览器

Django跨域访问 https://blog.csdn.net/lonelysnowman/article/details/128086205 nginx转发 https://blog.csdn.net/faye0412/article/details/75200607/ 开源浏览器 https://www.oschina.net/p/chromiumengine 浏览器油猴开发 https://blog.csdn.net/mukes/article/detail…...

Docker Alist 在线网盘部署

文章目录 拉取镜像创建并运行查看容器自动生成的密码在浏览器中进行访问 挂载本地磁盘 拉取镜像 docker pull xhofe/alist-aria2创建并运行 # -v /data/alist:/opt/alist/data 挂载本地目录 docker run -d --restartalways -v /data/alist:/opt/alist/data -p 5244:5244 -e P…...

Jmeter吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B 吞吐量控制器采…...

3分钟轻松实现网关网口连接罗克韦尔AB CompactLogix系列PLC

目录 EG网关网口连接罗克韦尔AB CompactLogix系列PLC 一. 准备工作 1.1 在对接前我们需准备如下物品 1.2 EG20网关准备工作 1.3 PLC准备工作 二. EMCP平台设置 2.1 新增EG设备 2.2 远程配置网关 2.3 网关绑定 2.4 通讯参数设置 2.5 创建设备驱动 2.5.1 添加变量 2.…...

vscode刷leetcode使用Cookie登录

1、打开vscode&#xff0c;选择扩展&#xff0c;搜索leetcode&#xff0c;选择第一个&#xff0c;带有中文力扣字样&#xff0c;安装后重启 2、选择这个小球&#xff0c;切换中文版本&#xff0c;切换后&#xff0c;会显示一个打勾 3、选择小球旁边的有箭头的小门&#xff0…...

每次启动Docker容器指定IP、hosts和端口

每次启动Docker容器指定IP、hosts和端口 1问题描述1解决办法1.1启动容器指定好IP、hostname、端口等信息1.2通过docker-compose启动容器&#xff0c;可以配置extra_hosts属性1.3通过k8s来管理容器&#xff0c;则在可以在创建pod的yaml文件通过hostAliases添加域名IP映射 2问题描…...

PL/SQL增量同步

PL/SQL全量同步_枯河垂钓的博客-CSDN博客 目录 增量同步 增量同步存储过程 ORACEL 独有的 增量更新 merge into 增量同步 逻辑: 用源表的数据更新目标表,数据存在则更新,数据不存在,则插入 实现的逻辑: 1. 首先判断目标表是否有源表的数据 2. 如果有,则用源表的数据更新…...

C++——多态底层原理

虚函数表 先来看这个问题&#xff1a; class Base { public: virtual void Func1() { cout << "Func1()" << endl; } private: int _b 1; }; sizeof(Base)是多少&#xff1f; 答案是&#xff1a;8 因为Base中除了成员变量_b,还有一个虚函数表_vfp…...

asdTools-ReID热力图可视化

文章首发见博客&#xff1a;https://mwhls.top/4869.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议&#xff0c;私信不回。 Github - 开源代码及Readme Blog - 工具介绍 摘要&#xff1a;基于TorchCam实现ReID的热力图可视化的…...

CSS学习笔记

目录 1.CSS简介1.什么是CSS2.为什么使用CSS3.CSS作用 2.基本用法1.CSS语法2.CSS应用方式1. 内部样式2.行内样式3.外部样式1.使用 link标签 链接外部样式文件2.import 指令 导入外部样式文件3.使用举例 3.选择器1.基础选择器1.标签选择器2.类选择器3.ID选择器4.使用举例 2.复杂选…...

linux操作命令

VMware版本&#xff1a; 17.0 ubantu版本&#xff1a;22.04.3 命令&#xff1a; # 查看当前目录文件 ls# 切换路径 []内是路径 cd [snap/] cd ../ #返回上一层# 创建文件 []内是文件名 touch [test.txt]# 创建文件夹 []内是文件夹名 mkdir [myself]# 测试一下网络 ping www.b…...

猜数字游戏(Python)

一、猜数字游戏是一个古老的密码破译类、益智类小游戏&#xff0c;通常由两个人参与&#xff0c;一个人设置一个数字&#xff0c;一个人猜数字&#xff0c;当猜数字的人说出一个数字&#xff0c;由出数字的人告知是否猜中&#xff1a;若猜测的数字大于设置的数字&#xff0c;出…...

可视化模块

目录 可视化送入网络的图片可视化网络层的热力图 可视化送入网络的图片 送入的数据为imgs&#xff0c;其大小为(8,3,256,256)&#xff0c;并以2行8列进行展示 import matplotlib.pyplot as plt import numpy as np# 假设你的张量名为 tensor&#xff0c;形状为 (8, 3, 256, 2…...

MyBatis insert标签

<insert id"addWebsite" parameterType"string">insert into website(name)values(#{name}) </insert> 在 WebsiteMapper 接口中定义一个 add() 方法 public int addWebsite(String name); 参数为 Sting 类型的字符串&#xff1b;返回值为 …...

扬尘监测:智能化解决方案让生活更美好

随着工业化和城市化的快速发展&#xff0c;扬尘污染问题越来越受到人们的关注。扬尘不仅影响城市环境&#xff0c;还会对人们的健康造成威胁。为了解决这一问题&#xff0c;扬尘监测成为了一个重要的手段。本文将介绍扬尘监测的现状、重要性以及智能化解决方案&#xff0c;帮助…...

【AI视野·今日NLP 自然语言处理论文速览 第四十五期】Mon, 2 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 2 Oct 2023 Totally 44 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Efficient Streaming Language Models with Attention Sinks Authors Guangxuan Xiao, Yuandong Tian, Beidi C…...

The little schemer 学习

参考文章&#xff1a; The Little Schemer 阅读笔记-CSDN博客 前言 原子是Scheme的基本元素之一。首先定义了过程atom?&#xff0c;用来判断一个S-表达式是不是原子&#xff1a; (define atom?(lambda (x)(and (not (pair? x)) (not (null? x))))) 这个“pair”实际上…...

yolov5+bytetrack算法在华为NPU上进行端到端开发

自从毕业后开始进入了华为曻腾生态圈&#xff0c;现在越来越多的公司开始走国产化路线了&#xff0c;现在国内做AI芯片的厂商比如&#xff1a;寒武纪、地平线等&#xff0c;虽然我了解的不多&#xff0c;但是相对于瑞芯微这样的AI开发板来说&#xff0c;华为曻腾的生态比瑞芯微…...

【Java-LangChain:使用 ChatGPT API 搭建系统-1】简介

简介 欢迎来到课程《使用 ChatGPT API 搭建系统》 , 旨在指导开发者如何基于 ChatGPT 搭建完整的智能问答系统。 使用 ChatGPT 不仅仅是一个单一的 Prompt 或单一的模型调用&#xff0c;本课程将分享使用 LLM 构建复杂应用的最佳实践。 本课程以构建客服助手为例&#xff0c…...

BJT晶体管

BJT晶体管也叫双极结型三极管&#xff0c;主要有PNP、NPN型两种&#xff0c;符号如下&#xff1a; 中间的是基极&#xff08;最薄&#xff0c;用于控制&#xff09;&#xff0c;带箭头的是发射极&#xff08;自由电子浓度高&#xff09;&#xff0c;剩下的就是集电极&#xff0…...

做网站建本地环境作用/seo网站推广的主要目的包括

前面说完了此项目的创建及数据模型设计的过程。如果未看过&#xff0c;可以到这里查看&#xff0c;并且项目源码已经放大到github上,可以去这里下载。代码也已经部署到sina sea上&#xff0c;地址为http://fengzheng.sinaapp.com/先跳过视图展示及表单处理的部分&#xff0c;先…...

如何建设一个公众号电影网站/aso推广优化

原标题&#xff1a;废水中氨氮超标的原因氨氮超标的危害及后果废水中氨氮是指以氨或铵离子形式存在的化合氮&#xff0c;即污水中以游离氨(NH3)和铵离子(NH4)形式存在的氮。高浓度废水的氨氮在没有经过严格处理后&#xff0c;直接排放到大自然水体&#xff0c;会导致水体的富营…...

网站关键词代码怎么做/百度浏览器app

来源 &#xff1a;http://www.cnblogs.com/excelib/p/5150647.html 原文地址&#xff1a;http://www.excelib.com/article/287/show firewalld简介 Centos7中默认将原来的防火墙iptables升级为了firewalld&#xff0c;firewalld跟iptables比起来至少有两大好处&#xff1a; 1、…...

上传网站程序/做一个网站要花多少钱

关于kafka的环境搭建这里略过。 1. 正常流程 1.1 添加maven依赖 <dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.2.0</version></dependency>&…...

注册网页需要多少钱/seo就业前景

燕十八-PHP公益培训-YY直播-001-开学典礼.wmv燕十八-PHP公益培训-YY直播-002-变量概念及命名规范.wmv燕十八-PHP公益培训-YY直播-003-变量类型.wmv燕十八-PHP公益培训-YY直播-004-动态变量及变量类型检测.wmv燕十八-PHP公益培训-YY直播-005-传值赋值与引用赋值.wmv燕十八-PHP公…...

直播网站建设重庆/seo网站关键词优化机构

3分钟学会&#xff0c;2种Wincc v14多语言组态&#xff0c;实现工控屏语言切换项目组态效果预览如下方动态图所示&#xff0c;挺好的吧&#xff01;西门子WIncc V14项目多语言组态效果图一&#xff1a;必背技巧1.1&#xff1a;按钮事件组态系统函数修改显示语言(相比于利用VB脚…...