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

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

借助 Amazon GuardDuty,您可以监控自己的 AWS 账户和工作负载以检测恶意活动。我们于近日在 GuardDuty 中增加了检测恶意软件的功能。恶意软件用于危害工作负载、重新调整资源用途或未经授权访问数据。启用 GuardDuty 恶意软件保护之后,当 GuardDuty 检测到您在 EC2 上运行的 EC2 实例或容器工作负载之一正在执行可疑操作时,就会启动恶意软件扫描。例如,当 EC2 实例与已知恶意的命令和控制服务器进行通信时,或者正在对其他 EC2 实例执行拒绝服务 (DoS) 或蛮力破解攻击时,就会触发恶意软件扫描。

GuardDuty 支持许多文件系统类型,该工具会扫描已知用于传播或包含恶意软件的文件格式,包括 Windows 和 Linux 可执行文件、PDF 文件、存档、二进制文件、脚本、安装程序、电子邮件数据库和普通电子邮件。

识别出潜在的恶意软件后,将生成可操作的安全调查结果,其中包含威胁和文件名、文件路径、EC2 实例 ID、资源标签以及(如果是容器)容器 ID 和使用的容器映像等信息。GuardDuty 支持在 EC2 上运行的容器工作负载,包括客户管理的 Kubernetes 集群或个别 Docker 容器。如果容器由 Amazon Elastic Kubernetes Service (EKS) or Amazon Elastic Container Service (Amazon ECS) 管理,则调查结果还包括集群名称和任务pod ID,因此应用程序安全团队可以快速找到受影响的容器资源。

与所有其他 GuardDuty 调查结果一样,恶意软件检测将发送到 GuardDuty 控制台,通过 Amazon EventBridge 推送,路由到 AWS Security Hub,然后在 Amazon Detective 中提供以开展事件调查。

++GuardDuty 恶意软件保护的工作原理++

启用恶意软件保护后,您将设置一个 Amazon Identity and Access Management (IAM) 服务相关角色,该角色授予 GuardDuty 执行恶意软件扫描的权限。对 EC2 实例启动恶意软件扫描时,GuardDuty 恶意软件保护使用这些权限拍摄小于 1 TB 的附加 Amazon Elastic Block Store (EBS) 卷快照,然后在同一 Amazon 区域内的 Amazon 服务账户中恢复 EBS 卷,以对它们进行恶意软件扫描。您可以使用标记,从这些权限和扫描中包括或排除 EC2 实例。这样,您无需部署安全软件或代理来监控恶意软件,扫描卷的操作也不会影响正在运行的工作负载。扫描完成后,将删除服务账户中的 EBS 卷和您账户中的快照。或者,您可以在检测到恶意软件时保留快照。

服务相关角色授予 GuardDuty 访问用于加密 EBS 卷的 Amazon Key Management Service (Amazon KMS) 密钥的权限。如果对附加到可能遭到入侵的 EC2 实例的 EBS 卷使用客户托管式密钥进行加密,则 GuardDuty 恶意软件保护也会使用相同的密钥来加密副本 EBS 卷。如果这些卷未加密,GuardDuty 将使用自己的密钥来加密副本 EBS 卷并确保隐私。不支持使用 EBS 托管式密钥加密的卷。

云中的安全是您与 Amazon 共同承担的责任。作为防护机制,GuardDuty 恶意软件保护使用的服务相关角色如果具有 GuardDutyExcluded 标签,则无法对您的资源(例如 EBS 快照和卷、EC2 实例和 KMS 密钥)执行任何操作。在将 GuardDutyExcluded设置为 true 的情况下标记快照后,GuardDuty 服务将无法访问这些快照。GuardDutyExclud 标签将取代任何包含标记。权限还会限制 GuardDuty 修改快照的方式,以便在与 GuardDuty 服务账户共享时无法将其公开。

由 GuardDuty 创建的 EBS 卷始终是加密的。GuardDuty 只能在具有 GuardDuty 扫描 ID 标签的 EBS 快照上使用 KMS 密钥。在获得 EC2 检测结果后创建快照时,GuardDuty 会添加扫描 ID 标签。无法从除 Amazon EBS 服务之外的任何其他上下文调用与 GuardDuty 服务账户共享的 KMS 密钥。扫描成功完成后,将撤销 KMS 密钥授予并删除 GuardDuty 服务账户中的卷副本,从而确保 GuardDuty 服务在完成扫描操作后无法访问您的数据。

++为 Amazon 账户启用恶意软件保护++

如果您尚未使用 GuardDuty,则在为自己的账户激活 GuardDuty 时,默认情况下会启用恶意软件保护。我已经在使用 GuardDuty,因此需要从控制台启用恶意软件保护。如果您正在使用 Amazon Organizations,您的代理管理员账户可以为现有成员账户启用此功能,并配置是否应自动注册组织中的新 Amazon 账户。

在 GuardDuty 控制台中,我选择导航窗格中 Settings(设置)下的 Malware Protection(恶意软件保护)。在其中,我选择 Enable(启用),然后选择 Enable Malware Protection(启用恶意软件保护)。

屏幕截图在扫描后会自动删除。在 General settings(常规设置)中,我可以选择将检测到恶意软件的屏幕截图保留在我的 Amazon 账户中,并将其用于进一步分析。

Scan options(扫描选项)中,我可以配置包含标签的列表,以便只扫描带有这些标签的 EC2 实例;或者排除标签,以便跳过列表中包含标签的 EC2 实例。

++测试恶意软件保护 GuardDuty 检测结果++

为了生成几个 Amazon GuardDuty 检测结果,包括新的恶意软件保护检测结果,我克隆了 Amazon GuardDuty Tester 存储库:

$ git clone https://github.com/awslabs/amazon-guardduty-tester

首先,我使用 guardduty-tester.template 文件创建一个 Amazon CloudFormation 堆栈。堆栈准备就绪后,我会按照说明将 SSH 客户端配置为通过堡垒主机登录到测试器实例。然后,我连接到测试器实例:

$ ssh tester

从测试器实例中,我启动guardduty_tester.sh 脚本来生成检测结果:

$ ./guardduty_tester.sh *********************************************************************
* Test #1 - Internal port scanning                                    *
* This simulates internal reconaissance by an internal actor or an   *
* external actor after an initial compromise.This is considered a    *
* low priority finding for GuardDuty because its not a clear indicator*
* of malicious intent on its own.                                     *
*********************************************************************Starting Nmap 6.40 ( http://nmap.org ) at 2022-05-19 09:36 UTC
Nmap scan report for ip-172-16-0-20.us-west-2.compute.internal (172.16.0.20)
Host is up (0.00032s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http
5050/tcp closed mmcc
MAC Address: 06:25:CB:F4:E0:51 (Unknown)Nmap done: 1 IP address (1 host up) scanned in 4.96 seconds-----------------------------------------------------------------------*********************************************************************
* Test #2 - SSH Brute Force with Compromised Keys                     *
* This simulates an SSH brute force attack on an SSH port that we    *
* can access from this instance.It uses (phony) compromised keys in  *
* many subsequent attempts to see if one works.This is a common      *
* techique where the bad actors will harvest keys from the web in     *
* places like source code repositories where people accidentally leave*
* keys and credentials (This attempt will not actually succeed in     *
* obtaining access to the target linux instance in this subnet)       *
*********************************************************************2022-05-19 09:36:29 START
2022-05-19 09:36:29 Crowbar v0.4.3-dev
2022-05-19 09:36:29 Trying 172.16.0.20:22
2022-05-19 09:36:33 STOP
2022-05-19 09:36:33 No results found...
2022-05-19 09:36:33 START
2022-05-19 09:36:33 Crowbar v0.4.3-dev
2022-05-19 09:36:33 Trying 172.16.0.20:22
2022-05-19 09:36:37 STOP
2022-05-19 09:36:37 No results found...
2022-05-19 09:36:37 START
2022-05-19 09:36:37 Crowbar v0.4.3-dev
2022-05-19 09:36:37 Trying 172.16.0.20:22
2022-05-19 09:36:41 STOP
2022-05-19 09:36:41 No results found...
2022-05-19 09:36:41 START
2022-05-19 09:36:41 Crowbar v0.4.3-dev
2022-05-19 09:36:41 Trying 172.16.0.20:22
2022-05-19 09:36:45 STOP
2022-05-19 09:36:45 No results found...
2022-05-19 09:36:45 START
2022-05-19 09:36:45 Crowbar v0.4.3-dev
2022-05-19 09:36:45 Trying 172.16.0.20:22
2022-05-19 09:36:48 STOP
2022-05-19 09:36:48 No results found...
2022-05-19 09:36:49 START
2022-05-19 09:36:49 Crowbar v0.4.3-dev
2022-05-19 09:36:49 Trying 172.16.0.20:22
2022-05-19 09:36:52 STOP
2022-05-19 09:36:52 No results found...
2022-05-19 09:36:52 START
2022-05-19 09:36:52 Crowbar v0.4.3-dev
2022-05-19 09:36:52 Trying 172.16.0.20:22
2022-05-19 09:36:56 STOP
2022-05-19 09:36:56 No results found...
2022-05-19 09:36:56 START
2022-05-19 09:36:56 Crowbar v0.4.3-dev
2022-05-19 09:36:56 Trying 172.16.0.20:22
2022-05-19 09:37:00 STOP
2022-05-19 09:37:00 No results found...
2022-05-19 09:37:00 START
2022-05-19 09:37:00 Crowbar v0.4.3-dev
2022-05-19 09:37:00 Trying 172.16.0.20:22
2022-05-19 09:37:04 STOP
2022-05-19 09:37:04 No results found...
2022-05-19 09:37:04 START
2022-05-19 09:37:04 Crowbar v0.4.3-dev
2022-05-19 09:37:04 Trying 172.16.0.20:22
2022-05-19 09:37:08 STOP
2022-05-19 09:37:08 No results found...
2022-05-19 09:37:08 START
2022-05-19 09:37:08 Crowbar v0.4.3-dev
2022-05-19 09:37:08 Trying 172.16.0.20:22
2022-05-19 09:37:12 STOP
2022-05-19 09:37:12 No results found...
2022-05-19 09:37:12 START
2022-05-19 09:37:12 Crowbar v0.4.3-dev
2022-05-19 09:37:12 Trying 172.16.0.20:22
2022-05-19 09:37:16 STOP
2022-05-19 09:37:16 No results found...
2022-05-19 09:37:16 START
2022-05-19 09:37:16 Crowbar v0.4.3-dev
2022-05-19 09:37:16 Trying 172.16.0.20:22
2022-05-19 09:37:20 STOP
2022-05-19 09:37:20 No results found...
2022-05-19 09:37:20 START
2022-05-19 09:37:20 Crowbar v0.4.3-dev
2022-05-19 09:37:20 Trying 172.16.0.20:22
2022-05-19 09:37:23 STOP
2022-05-19 09:37:23 No results found...
2022-05-19 09:37:23 START
2022-05-19 09:37:23 Crowbar v0.4.3-dev
2022-05-19 09:37:23 Trying 172.16.0.20:22
2022-05-19 09:37:27 STOP
2022-05-19 09:37:27 No results found...
2022-05-19 09:37:27 START
2022-05-19 09:37:27 Crowbar v0.4.3-dev
2022-05-19 09:37:27 Trying 172.16.0.20:22
2022-05-19 09:37:31 STOP
2022-05-19 09:37:31 No results found...
2022-05-19 09:37:31 START
2022-05-19 09:37:31 Crowbar v0.4.3-dev
2022-05-19 09:37:31 Trying 172.16.0.20:22
2022-05-19 09:37:34 STOP
2022-05-19 09:37:34 No results found...
2022-05-19 09:37:35 START
2022-05-19 09:37:35 Crowbar v0.4.3-dev
2022-05-19 09:37:35 Trying 172.16.0.20:22
2022-05-19 09:37:38 STOP
2022-05-19 09:37:38 No results found...
2022-05-19 09:37:38 START
2022-05-19 09:37:38 Crowbar v0.4.3-dev
2022-05-19 09:37:38 Trying 172.16.0.20:22
2022-05-19 09:37:42 STOP
2022-05-19 09:37:42 No results found...
2022-05-19 09:37:42 START
2022-05-19 09:37:42 Crowbar v0.4.3-dev
2022-05-19 09:37:42 Trying 172.16.0.20:22
2022-05-19 09:37:46 STOP
2022-05-19 09:37:46 No results found...-----------------------------------------------------------------------*********************************************************************
* Test #3 - RDP Brute Force with Password List                        *
* This simulates an RDP brute force attack on the internal RDP port  *
* of the windows server that we installed in the environment. It uses*
* a list of common passwords that can be found on the web.This test  *
* will trigger a detection, but will fail to get into the target      *
* windows instance.                                                   *
*********************************************************************Sending 250 password attempts at the windows server...
Hydra v9.4-dev (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-05-19 09:37:46
[WARNING] rdp servers often don't like many connections, use -t 1 or -t 4 to reduce the number of parallel connections and -W 1 or -W 3 to wait between connection to allow the server to recover
[INFO] Reduced number of tasks to 4 (rdp does not like many parallel connections)
[WARNING] the rdp module is experimental.Please test, report - and if possible, fix.
[DATA] max 4 tasks per 1 server, overall 4 tasks, 1792 login tries (l:7/p:256), ~448 tries per task
[DATA] attacking rdp://172.16.0.24:3389/
[STATUS] 1099.00 tries/min, 1099 tries in 00:01h, 693 to do in 00:01h, 4 active
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-05-19 09:39:23-----------------------------------------------------------------------*********************************************************************
* Test #4 - CryptoCurrency Mining Activity                            *
* This simulates interaction with a cryptocurrency mining pool which *
* can be an indication of an instance compromise.In this case, we are*
* only interacting with the URL of the pool, but not downloading      *
* any files.This will trigger a threat intel based detection.        *
*********************************************************************Calling bitcoin wallets to download mining toolkits-----------------------------------------------------------------------*********************************************************************
* Test #5 - DNS Exfiltration                                          *
* A common exfiltration technique is to tunnel data out over DNS      *
* to a fake domain. Its an effective technique because most hosts    *
* have outbound DNS ports open. This test wont exfiltrate any data,  *
* but it will generate enough unusual DNS activity to trigger the     *
* detection.                                                          *
*********************************************************************Calling large numbers of large domains to simulate tunneling via DNS*********************************************************************
* Test #6 - Fake domain to prove that GuardDuty is working            *
* This is a permanent fake domain that customers can use to prove that*
* GuardDuty is working. Calling this domain will always generate the *
* Backdoor:EC2/C&CActivity.B!DNS finding type                         *
*********************************************************************Calling a well known fake domain that is used to generate a known finding; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.5.2 <<>> GuardDutyC2ActivityB.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11495
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;GuardDutyC2ActivityB.com.    IN    ANY;; ANSWER SECTION:
GuardDutyC2ActivityB.com.6943    IN    SOA    ns1.markmonitor.com. hostmaster.markmonitor.com.2018091906 86400 3600 2592000 172800
GuardDutyC2ActivityB.com.6943    IN    NS    ns3.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns5.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns7.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns2.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns4.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns6.markmonitor.com.
GuardDutyC2ActivityB.com.6943    IN    NS    ns1.markmonitor.com.;; Query time: 27 msec
;; SERVER: 172.16.0.2#53(172.16.0.2)
;; WHEN: Thu May 19 09:39:23 UTC 2022
;; MSG SIZE  rcvd: 238*****************************************************************************************************
预期的 GuardDuty 检测结果测试 1:内部端口扫描
预期的检测结果:EC2 实例 i-011e73af27562827b 正在对远程主机执行出站端口扫描。172.16.0.20
检测结果类型:Recon:EC2/Portscan测试 2:使用泄露密钥的 SSH 蛮力攻击
预期有两个检测结果 - 一个用于出站检测,另一个用于入站检测
出站:i-011e73af27562827b 正在对 172.16.0.20 进行 SSH 蛮力攻击
入站:172.16.0.25 正在对 i-0bada13e0aa12d383 进行 SSH 蛮力攻击
检测结果类型:UnauthorizedAccess:EC2/SSHBruteForce测试 3:使用密码列表的 RDP 蛮力攻击
预期有两个检测结果 - 一个用于出站检测,另一个用于入站检测
出站:i-011e73af27562827b 正在对 172.16.0.24 进行 RDP 蛮力攻击
入站:172.16.0.25 正在对 i-0191573dec3b66924 进行 RDP 蛮力攻击
检测结果类型:UnauthorizedAccess:EC2/RDPBruteForce测试 4:加密货币活动
预期的检测结果:EC2 实例 i-011e73af27562827b 正在查询与比特币活动相关的域名
检测结果类型:CryptoCurrency:EC2/BitcoinTool.B!DNS测试 5:DNS 渗透
预期的检测结果:EC2 实例 i-011e73af27562827b 正在尝试查询与泄露数据相似的域名
检测结果类型:Trojan:EC2/DNSDataExfiltration测试 6:C&C 活动
预期检测结果:EC2 实例 i-011e73af27562827b 正在查询与已知命令与控制服务器关联的域名。
检测结果类型:Backdoor:EC2/C&CActivity.B!DNS

几分钟后,检测结果将显示在 GuardDuty 控制台中。在顶部,我看到了新的恶意软件保护功能发现的恶意文件。其中一个检测结果与 EC2 实例相关,另一个与 ECS 集群相关。

首先,我选择与 EC2 实例相关的检测结果。在面板中,我看到有关实例和恶意文件的信息,例如文件名和路径。在 Malware scan details(恶意软件扫描详细信息)部分中,Trigger finding ID(触发检测结果 ID)指向触发恶意软件扫描的原始 GuardDuty 检测结果。就我而言,最初的检测结果是此 EC2 实例正在对另一个 EC2 实例执行 RDP 蛮力攻击。

在此处,我选择 Investigate with Detective(使用 Detective 调查),然后直接从 GuardDuty 控制台转到 Detective 控制台,从中可视化 EC2 实例、Amazon 账户和受检测结果影响的 IP 地址的 Amazon CloudTrailAmazon Virtual Private Cloud (Amazon VPC) 流数据。使用 Detective,我可以分析、调查和确定 GuardDuty 发现的可疑活动的根本原因。

选择与 ECS 群集相关的检测结果时,我将获得有关受影响资源的更多信息,例如 ECS 集群、任务、容器和容器映像的详细信息。

使用 GuardDuty 测试器脚本可以更轻松地测试 GuardDuty 与您使用的其他安全框架的整体集成,以便在检测到真正的威胁时做好准备。

++将 GuardDuty 恶意软件防护保护与 Amazon Inspector 进行比较++

此时,您可能会问自己 GuardDuty 恶意软件保护与 Amazon Inspector 有何关系,Amazon Inspector 是一项扫描 AWS 工作负载的软件漏洞和意外网络暴露的服务。这两种服务相辅相成,提供不同的保护层:

  • Amazon Inspector 通过识别和修复已知软件和应用程序漏洞提供主动防护,这些漏洞是攻击者入侵资源和安装恶意软件的入口点。

  • GuardDuty 恶意软件保护可检测到活跃运行的工作负载中存在的恶意软件。此时,系统已经受损,但是 GuardDuty 可以限制感染的时间,并在系统受损导致影响业务的事件之前采取措施。

++可用性和定价++

Amazon GuardDuty 恶意软件保护现已在所有提供 GuardDuty 的 Amazon 区域推出,不包括 AWS 中国(北京)、Amazon 中国(宁夏)、Amazon GovCloud(美国东部)和 Amazon GovCloud(美国西部)区域。

在发布时,GuardDuty 恶意软件保护已与以下合作伙伴产品集成:

  • BitDefender

  • CloudHesive

  • Crowdstrike

  • Fortinet

  • Palo Alto Networks

  • Rapid7

  • Sophos

  • Sysdig

  • Trellix

使用 GuardDuty,您无需部署安全软件或代理来监控恶意软件。您只需为文件系统中扫描的 GB 量(而不是 EBS 卷的大小)和 EBS 快照保存在您账户中的时间付费。除非您在发现恶意软件时启用快照保留功能,否则 GuardDuty 创建的所有 EBS 快照都会在扫描后自动删除。有关更多信息,请参阅 GuardDuty 定价EBS 定价。请注意,GuardDuty 仅扫描小于 1 TB 的 EBS 卷。为了帮助您控制成本并避免重复警报,同一卷的扫描频率不会超过每 24 小时一次。

使用 Amazon GuardDuty 检测恶意活动并保护您的应用程序免受恶意软件侵害。

Danilo

相关文章:

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏…...

YOLOv7 pytorch

yolov7主干部分结构图&#xff1a;yolov7主干 yolov7数据集处理代码&#xff1a;yolov7数据集处理代码 yolov7训练参数解释&#xff1a;yolov7训练参数【与本文代码有区别】 yolov7训练代码详解&#xff1a;yolov7训练代码详解 目录 训练自己的训练集 训练自己的训练集 此…...

JDK自带JVM分析工具

一、JDK自带工具盘点&#xff1a; jstat&#xff1a;性能分析-查看gc情况&#xff1b; jmap&#xff1a;内存分析-堆信息&#xff1b; jstack&#xff1a;线程分析-栈信息&#xff1b; jinfo&#xff1a;参数查看及配置&#xff1b; jstatd&#xff1a;启动jvm监控服务。它…...

IO多路复用--[select | poll | epoll | Reactor]

因为在简历上写了netty的项目&#xff0c;因此还是将网络底层的那点东西搞清楚。 首先希望明确的是&#xff0c;BIO、NIO、IO多路复用这是不同的东西&#xff0c; 我会在本文中详细讲出来。 本文参考资料&#xff1a; JAVA IO模型 IO多路复用 select poll epoll介绍 从BIO到epo…...

pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas

前言 环境&#xff1a;k8s-v1.22.17 docker-20.10.9 centos-7.9 目录前言什么是可计算资源CPU、Memory计量单位pod资源请求、限额方式pod定义requests、limits查看节点资源情况pod使用request、limits示例LimitRange限制命名空间下的pod的资源配额Qos服务质量等级资源配额管理…...

R语言基础(六):函数

R语言基础(一)&#xff1a;注释、变量 R语言基础(二)&#xff1a;常用函数 R语言基础(三)&#xff1a;运算 R语言基础(四)&#xff1a;数据类型 R语言基础(五)&#xff1a;流程控制语句 7. 函数 函数是一组完成特定功能的语句。 7.1 内置函数 R语言系统中提供许多内置函数&…...

[C++] 简单序列化

前言 序列化(Serialization) 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间&#xff0c;对象将其当前状态写入到临时或持久性存储区。以后&#xff0c;可以通过从存储区中读取或反序列化对象的状态&#xff0c;重新创建该对象。 使用 序列化 std::array&…...

Autosar Configuration(十三)SomeIP之配置TCP/IP

本系列教程是根据实际项目开发中总结的经验所得,如发现有不对的地方,还请指正。 目录Autosar Configuration(一)Davinci Developer-工具介绍 Autosar Configuration(二)Davinci Developer-SWC配置 Autosar Configuration(三) Security之Crypto配置 Autosar Configurat…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现

文章目录简介UKF滤波1. 概述和流程2. Python代码第一个版本a. KF滤波b. UKF滤波第二个版本简介 上一篇文章&#xff0c;我们介绍了UKF滤波公式及其MATLAB代码。在做视觉测量的过程中&#xff0c;基于OpenCV的开发包比较多&#xff0c;因此我们将UKF的MATLAB代码转到python中&a…...

IMU 积分的误差状态空间方程推导

文章目录0. 前言1. 离散时间的IMU运动学方程2. 状态变量定义3. 补充公式4. IMU误差状态空间方程推导4.1. 旋转误差 δr^i1\delta\hat{\mathbf{r}}_{i1}δr^i1​4.2. 速度误差 δv^i1\delta\hat{\mathbf{v}}_{i1}δv^i1​4.3. 平移误差 δpi1\delta \mathbf{p}_{i1}δpi1​4.4. …...

VirtualBox的克隆与复制

快照太多&#xff0c;想整合成1个文件怎么办&#xff1f; 最近&#xff0c;我就遇到一个问题。快照太多了。比较占用空间怎么办&#xff1f; 错误做法 一开始&#xff0c;我是这么操作的&#xff0c;选中某个快照&#xff0c;然后选择删除…然后我登录虚拟机后&#xff0c;发…...

每天5分钟玩转机器学习算法:逆向概率的问题是什么?贝叶斯公式是如何解决的?

本文重点 前面我们已经知道了贝叶斯公式,以及贝叶斯公式在机器学习中的应用,那么贝叶斯公式究竟解决了一个什么样的问题呢?贝叶斯是为了解决逆向概率的问题。 正向的概率和逆向的概率 正向概率:假设袋子里面有N个白球,有M个黑球,你伸手一摸,那么问题就是你摸出黑球的概…...

游戏闲聊之游戏是怎么赚钱的

其实一般情况下不太爱写这种文章&#xff0c;简单说就一点&#xff0c;这个行业的人我惹不起。 1、外挂 所谓外挂&#xff0c;是指通过技术手段&#xff0c;提供辅助游戏的工具&#xff0c;方便玩家获得一些额外的能力&#xff1b; 这事我特意咨询过律师&#xff0c;外挂分两…...

Redis高频面试题汇总(下)

目录 1.Redis中什么是Big Key(大key) 2.Big Key会导致什么问题 3.如何发现 bigkey&#xff1f; 4.为什么redis生产环境慎用keys *命令 5.如何处理大量 key 集中过期问题 6.使用批量操作减少网络传输 7.缓存穿透 8.缓存击穿 9.缓存雪崩 10.缓存污染&#xff08;或满了…...

Windows修改Docker安装目录修改Docker镜像目录,镜像默认存储位置存放到其它盘

Windows安装Docker&#xff0c;默认是安装在C盘&#xff0c;下载镜像后会占用大量空间&#xff0c;这时需要调整镜像目录&#xff1b;场景&#xff1a;不想连服务器或者没有服务器&#xff0c;想在本地调试服务&#xff0c;该需求就非常重要。基于WSL2安装docker后&#xff0c;…...

376. 摆动序列——【Leetcode每日刷题】

376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7, 4, 9, 2, 5] 是一个…...

mgre实验

实验思路 1、首先根据拓扑结构合理分配IP地址&#xff0c;并对各个路由器的IP地址和R5环回接口的IP地址进行配置。 2、让私网中的边界路由器对ISP路由器做缺省路由。 3、根据实验要求&#xff0c;对需要配置不同类型认证的路由器进行认证配置&#xff0c;和需要不同封装的协议…...

一文彻底了解Zookeeper(介绍篇)

zookeeper 是什么&#xff1f; zookeeper是一个分布式协作框架&#xff0c;提供高可用&#xff0c;高性能&#xff0c;强一致等特性 zookeeper 有哪些应用场景&#xff1f; 分布式锁&#xff1a;分布式锁是指在分布式环境中&#xff0c;多个进程或线程需要互斥地访问某个共享…...

1. ELK Stack 理论篇之什么是ELK Stack?

ELK Stack 理论篇之什么是ELK Stack?1.1 什么是 ELK Stack&#xff1f;1.2 ELK Stack的发展史1.2.1 Elasticsearch1.2.2 引入 Logstash 和 Kibana&#xff0c;产品更强大1.2.3 社区越来越壮大&#xff0c;用例越来越丰富1.2.4 然后我们向 ELK 中加入了 Beats1.2.5 那么&#x…...

两道有关链表的练习

目录 一、分割链表 二、奇偶链表 一、分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1&#xff1a; 输…...

Python uiautomator2安卓自动化测试

一、前言 uiautomator2是Python对Android设备进行UI自动化的库&#xff0c;支持USB和WIFI链接&#xff0c;可以实现获取屏幕上任意一个APP的任意一个控件属性&#xff0c;并对其进行任意操作。 重点是它可以实现安卓自动化采集&#xff0c;甚至是群控采集&#xff0c;且安装和…...

Leetcode. 160相交链表

文章目录指针解法指针解法 核心思路 &#xff1a; 先 分别求两个链表的长度 然后长的链表先走 差距步&#xff08;长-短&#xff09; 最后长链表和短链表同时走 &#xff0c;第一地址相同的就是交点 &#xff0c;注意一定是地址相同 不可能出现上图这种情况 &#xff0c;因为C1…...

MDPs —— 马尔可夫决策定义与算法

文章目录MDPs 定义——由实例开始时序决策问题给游戏增点乐子*为什么要有折扣游戏的解——原则所以&#xff0c;什么是 MDPs&#xff1f;MDPs 的基本原理、表示光环原理效用的求解是反向传播的原则不变条件MDPs 的表示MDPs 求解效用迭代法缺点原则迭代法MDPs 定义——由实例开始…...

【C++】图

本文包含了图的基本概念 1.相关概念 1.1 无/有向 无向图&#xff1a;每一个顶点之间的连线没有方向 有向图&#xff1a;连线有方向&#xff08;类似离散数学的二元关系 <A,B>代表从A到B的边&#xff0c;有方向&#xff09; <A,B>中A为始点&#xff0c;B为终点在…...

尾递归优化

文章目录1. 前言2. 什么尾调用&#xff08;Tail Call&#xff09;&#xff1f;3. 尾调用优化4. Linux内核下的尾递归优化使用5. 参考资料1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;对此给读者带来的损失&#xff0c;作者不错任何承诺。 2. 什么尾调用…...

P1120 小木棍(搜索+剪枝)

题目链接&#xff1a;P1120 小木棍 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例输入&#xff1a; 9 5 2 1 5 2 1 5 2 1 样例输出&#xff1a; 6 分析&#xff1a;这道题一看数据范围就知道是搜索&#xff0c;但关键是需要剪枝。 首先我们求出所有木棍的长度和&am…...

【专项训练】动态规划-3

动态规划:状态转移方程、找重复性和最优子结构 分治 + 记忆化搜索,可以过度到动态规划(动态递推) function DP():# DP状态定义# 需要经验,需把现实问题定义为一个数组,一维、二维、三维……dp =[][] # 二维情况for i = 0...M:...

【Linux】信号+再谈进程地址空间

目录 一、Linux中的信号 1、Linux中的信号 2、进程对信号的处理 3、信号的释义 二、信号的捕捉 1、信号的捕捉signal() 2、信号的捕捉sigaction() 三、信号如何产生&#xff1f; 1、kill()用户调用kill向操作系统发送信号 通过命令行参数模仿写一个kill命令 2、rais…...

C++回顾(二十一)—— list容器

21.1 list概述 list是一个双向链表容器&#xff0c;可高效地进行插入删除元素。list不可以随机存取元素&#xff0c;所以不支持at.(pos)函数与[]操作符。It(ok) it5(err)需要添加头文件&#xff1a;#include <list> 21.2 list构造 &#xff08;1&#xff09;默认构造…...

爱国者一体机电脑蓝屏怎么U盘重装系统教学?

爱国者一体机电脑蓝屏怎么U盘重装系统教学&#xff1f;有用户使用的爱国者一体机电脑开机了之后突然变成了蓝屏的了。而且无法继续使用了&#xff0c;那么遇到这样的蓝屏问题怎么去进行系统的重装呢&#xff1f;一起来看看以下的U盘重装系统教学吧。 准备工作&#xff1a; 1、U…...

推广平台软件/南宁seo推广优化

一、原型 任何对象都有一个原型对象&#xff0c;这个原型对象由对象的内置属性_proto_指向它的构造函数的prototype指向的对象 即任何对象都是由一个构造函数创建的&#xff0c;但是&#xff0c;不是每一个对象都有prototype&#xff0c;只有方法才有prototype。 function Per…...

wordpress添加文章分类二级/网页搜索快捷键是什么

...

可以看电视剧的网站/如何做google推广

这是阿信的第458篇原创文章有朋友问&#xff1a;什么是博弈论&#xff1f;诺贝尔经济学奖得主奥曼精炼的定义道&#xff1a;所谓博弈论&#xff0c;其实就是互动的决策论。一我们首先了解一个基本概念&#xff1a;经济人假设。其实很简单&#xff0c;就是我们经常会提到的聪明的…...

怎么在百度上面做网站/网店无货源怎么做

今天我们来讨论几个没有太大关联的内容&#xff0c;如果在这几个问题方面有人有自己独特的见解&#xff0c;或已经知道了这方面的技术&#xff0c;那么还请您在评论中提出来&#xff0c;供大家探讨&#xff0c;下面我们就来探讨一下吧……一、这几天忙着测试和修改GIS系统&…...

网站ui设计师招聘/seo关键词排名技巧

1&#xff0c;技术的可行性&#xff1a;教学辅助系统可以由个人的电脑配置即可满足开发要求&#xff0c;然而在程序设计方面我们可以选择Javascript,HTML,CSS等来编写前台网页&#xff0c;同时可以用MySQL来写后台的数据库。 2&#xff0c; 经济的可行性&#xff1a;因为这个项…...

wordpress+怎么迁移/落实20条优化措施

文章目录1、打开VMware虚拟机软件2、选择Linux系统的ISO安装镜像。3、开启虚拟机&#xff08;1&#xff09;进入Linux系统安装界面&#xff08;2&#xff09;硬件检测&#xff08;3&#xff09;检测光盘&#xff08;4&#xff09;Linxu系统安装的欢迎界面&#xff0c;直接下一步…...