应急响应事件处置指南

news2024/11/26 4:55:04

注意:以下的事件处置类型是常见的,但安全威胁不断演化,因此可能需要根据具体情况进行调整。

1 Webshell类

1.1常见Webshell类型

1.1.1 一句话木马

特征:

一句话木马代码简短,通常只有一行代码,使用灵活,可以作为单独的文件也可以插入正常文件,通常为了达到隐蔽持续控制的效果,攻击者会对一句话木马进行变形混淆。

1.1.2 小马

特征:

小马一般功能单一(仅支持文件上传操作、命令执行等),文件体积较小,界面简单甚至没有前端界面。由于体积小所以变种多,特征难以统计,攻击者有可能先上传小马之后再通过小马上传大马或其他攻击工具。

1.1.3 大马

特征:

大马体积大,功能全,一般包括了文件管理,命令执行,数据库管理,系统探针,权限提升等功能。由于文件大,特征多,所以容易被发现。并且大马由于编写较为复杂导致变种门槛比小马高。

1.1.4 内存马

特征:

内存马是无文件攻击的一种常用手段。内存马是在内存中写入恶意后门和木马并执行,达到远程控制Web服务器的一类内存马,利用中间件的进程执行某些恶意代码,不会有文件落地。

1.2 文件落地Webshell处置流程

适用范围:一句话木马、小马、大马等

1.2.1 异常排查

常见webshell代码特征:

jsp的一句话并没有一句话那么简单,文件内容没办法做到像其他语言一样简略,这是其语言特性决定的。

确定入侵时间,可通过网站恶意攻击事件事件,webshell文件创建时间,webshell首次被访问时间等线索,判断攻击者实施攻击的时间范围。追踪攻击者IP及攻击途径,从而发现网站漏洞点。

如下图,可以确认该IP地址进行了恶意的目录扫描攻击行为。

确认攻击者IP之后,通过筛选日志,确认攻击者攻击途径,重点关注日志中攻击者发起的POST请求内容,尤其是上传功能页面的请求。

根据日志中分析的疑似存在漏洞的点位,进行漏洞排查分析。对漏洞进行利用复现,还原攻击者的完整攻击路径。

1.2.2 Webshell处置

对网站目录下的所有文件进行排查,查找webshell后门文件。

或者使用D盾扫描工具自动检测

(注意:通常工具是基于特征检测的,恶意攻击者精心构造的免杀马会对特征进行混淆达到绕过检测的目的)

1.2.3 漏洞修复及其他异常处置

(1)根据上述方法清除发现的Webshell文件,并修复发现的漏洞,避免网站系统再次受到攻击。排查服务器是否存在攻击者遗留的工具或其他后门,例如排查计划任务,启动项,进程等。(详情见 三 其他类型后门处置流程)

(2)检查相关业务系统(RDP、SSH、FTP等)是否存在弱口令账号,确认是否存在账号异常登录情况,修改弱口令,并对非必要对外开放的系统进行远程访问限制。

(3)查看系统补丁信息,根据当前系统补丁情况,确认是否存在未修复的系统漏洞。

(4)检查第三方软件漏洞,如果服务器内有运行对外应用软件(WEB、FTP 等),可通过官方公布的漏洞情况及补丁自查相关软件是否存在漏洞。

1.3 无文件落地Webshell处置流程

适用范围:内存马

1.3.1 异常排查

通过对Web日志文件的分析,确定异常访问的IP。

根据异常IP信息对日志进行筛选,进一步分析日志确认攻击者首次攻击时间及攻击行为。

筛选攻击者访问成功的页面,定位攻击者可能利用的漏洞点位页面。并根据日志中分析的可能存在漏洞的点位,排除网站存在的漏洞,并进行分析。对排查发现的漏洞进行利用复现,还原攻击者攻击路径。

对日志进行分析排查,发现攻击者多次对实际不存在的页面进行了请求,数据包返回大小不同,且服务器返回结果为200,此时将需要考虑服务器是否被植入了内存马,需要对服务进程进行分析。

1.3.2 内存马处置
1.3.2.1 JAVA内存马查杀
(1)cop.jar

 只需要将cop.jar工具放在运行tomcat的服务器上运行cop.jar工具会识别你正在运行的应用列举出来由你自己选择ID,运行后会在同目录下生成.copagent目录储存结果result.txt。

result.txt中记录所有的类及危险等级

在java目录下或class文件夹下会保存木马以及运行的类

还原出内存马

可使用D盾进行扫描检查

(2)arthas-boot.jar

Arthas是一款开源的Java诊断工具,基本使用场景是定位复现一些生产环境比较难以定位问题。可以在线排查问题,以及动态追踪Java代码,实时监控JVM状态等等。

java -jar .\arthas-boot.jar #java应用进程PID

输入Mbean 查看或监控 Mbean 的属性信息,根据哥斯拉内存马的特性,进行筛选出异常组件

mbean | grep "Servlet"    #查看 Mbean 的信息,查看异常Filter/Servlet节点

sc *.Filter    #搜索符合pattern的Filter

jad --source-only org.apache.jsp.memshell_jsp    #反编译指定类

(3)java-memshell-scanner

通过jsp脚本扫描并查杀各类中间件内存马。

只需要将tomcat-memshell-scanner.jsp放在可能被注入内存马的web录下,然后使用浏览器访问即可直接获得扫描结果。

点击kill即可删除内存马,测试扫描结果可查杀servlet型和filter型。

1.3.2.2 ASPX内存马查杀
ASP.NET-Memshell-Scanner

上传aspx-memshell-scanner.aspx到web目录,浏览器访问即可。

默认情况:

存在内存马情况:

其中类名为memoryShell.GodzillaVirtualPathProvider为哥斯拉的内存马

MemShell.SamplePathProvider为蚁剑的内存马

点击kill,提示操作成功,即可删除内存马

1.3.3 漏洞修复及其他异常处置

(1)根据上述方法清除发现的内存马,并修复发现的漏洞,避免网站系统再次受到攻击。排查服务器是否存在攻击者遗留的工具或后门,例如排查计划任务,启动项,进程等。(详情见 三 其他类型后门处置流程)

(2)检查相关业务系统(RDP、SSH、FTP等)是否存在弱口令账号,确认是否存在账号异常登录情况,修改弱口令,并对非必要对外开放的系统进行远程访问限制。

(3)查看系统补丁信息,根据当前系统补丁情况,确认是否存在未修复的系统漏洞。

(4)检查第三方软件漏洞,如果服务器内有运行对外应用软件(WEB、FTP 等),可通过官方公布的漏洞情况及补丁自查相关软件是否存在漏洞。

2 恶意程序类

2.1常见恶意程序类型

2.1.1 勒索病毒

特征:

勒索病毒主要以邮件、程序木马、网页挂马的形式进行传播。该病毒性质恶劣、危害性大,该病毒利用各种加密算法对用户的文件、数据进行加密,被感染者一般无法解密,必须拿到解密的密钥才有可能破解。

2.1.2 挖矿病毒

特征:

挖矿病毒会伪装成一个正常文件进入受害者的电脑,利用主机或者操作系统的高危漏洞,并结合高级攻击技术在局域网内传播,控制电脑进行大量的计算机运算来获取虚拟货币。挖矿病毒会导致计算机长时间执行高性能计算,严重占用CPU和内存,致使电脑性能严重下降。

2.1.3 钓鱼程序

特征:

钓鱼程序入侵事件一般发生于针对个人、企业和组织的网络钓鱼攻击。攻击者通常使用社交软件对指定范围的对象发送钓鱼程序,常见手段有发送钓鱼邮件、文件下载链接、社交软件传输文件等,将钓鱼邮件伪装成文档、工具软件等文件,引诱受害者下载运行钓鱼程序,从而获取受害者主机的控制权限。

2.1.4 后门程序

特征:

后门程序是驻留在计算机系统中,其目的是为攻击者在用户不知情的情况下潜入计算机系统中。它会绕过一般保护措施,植入特定的代码,为黑客提供潜入入口,可以在未被授权的情况下访问被植入后门程序的计算机系统。

2.1.5 提权程序

特征:

提权程序分为本地提权、数据库提权和第三方软件提权。大多数计算机系统设计为可与多个用户一起使用,特权升级意味着用户获得他们无权执行的特权。本地提权能以高权限对更多的文件进行「增删改查」操作,收集主机系统中的敏感信息;数据库提权通常是数据库配置缺陷使黑客恶意利用数据库机制达到命令执行的目的;第三方软件提权是利用第三方软件存在的漏洞来进行获取权限的操作。

2.2处置流程

适用范围:勒索病毒、挖矿病毒、钓鱼程序、后门程序、提权程序

2.2.1 异常排查

根据不同的操作系统,选择对应的方式进行系统异常查找,定位恶意程序的名称及位置,并根据服务器的业务系统开放情况,如web系统、数据库系统、操作系统等,对相关系统进行漏洞排查,分析恶意程序的入侵途径,并修复相关系统的漏洞。

2.2.1.1 排查Windows系统异常
(1)检查是否存在异常进程

使用端口查询命令,定位异常外连的进程PID

netstat -ano


         根据PID找到对应异常程序名称

tasklist | findstr XXXX


         根据异常程序名称找到其对应的位置

wmic process | findstr "wps.exe"

(2)检查是否存在恶意服务

通过 sc query 查看windows 服务状态

发现可疑服务,可通过sc qc <服务名>  查看服务的详细内容

(3)检查是否存在恶意文件

查看各盘下的temp有无异常文件(Windows 产生的临时文件)
         windows/temp


         查看快捷桌面
         %UserProfile%\Recent


         通过查看文件的修改时间,可以快速定位异常文件

2.2.1.2 排查Linux系统异常
(1)检查是否存在异常进程

使用ps、top、htop等命令查看进程情况

使用netstat端口查询命令,定位异常外连的进程PID


         根据PID找到对应异常程序名称

ps aux | grep pid


         根据异常程序名称找到其对应的位置
         方法一:ps -ef | grep 进程名

方法二:lsof -p 进程PID

方法三:使用/proc文件系统查看进程文件位置

Linux系统中的/proc文件系统提供了有关系统进程的详细信息。每个进程都在/proc目录下有一个以其PID命名的子目录。进入该子目录后,可以查看进程的文件位置信息。

(2)检查是否存在恶意文件

敏感目录的文件分析(如/tmp目录,命令目录/usr/bin、/usr/sbin等)

着重关注文件权限、文件时间及可疑文件的内容

2.2.1.3 排查SQL Server数据库异常

SQL Server 的 xp_cmdshell 是一个系统存储过程,用于在 SQL Server 实例上执行操作系统级别的命令。它可以被滥用,因为它允许未经检查和限制地执行任意命令,这可能会导致安全风险。要进行 SQL Server xp_cmdshell 入侵检测,可以采取以下步骤:

(1)检查 xp_cmdshell 是否已启用

运行以下查询来检查 xp_cmdshell 是否可用

EXEC sp_configure 'xp_cmdshell';

如果返回结果中的 "run_value" 为 0,则表示 xp_cmdshell 已禁用。如果未禁用,请继续下一步。

(2)排查日志文件

定期监视 SQL Server 的错误日志和 Windows 事件日志,以检测任何与 xp_cmdshell 相关的异常记录。

(3)检查是否存在未授权的用户或角色

运行以下查询来查找具有高权限的用户或其他不受信任的用户

SELECT * FROM sys.server_principals;

(4)禁用 xp_cmdshell

如果不需要使用 xp_cmdshell,可将其禁用。通过执行以下语句来禁用:

EXEC sp_configure 'xp_cmdshell', 0;

RECONFIGURE;

2.2.1.4 排查MySQL数据库异常

MySQL UDF(用户定义函数)是一种允许用户编写自定义函数并将其加载到 MySQL 服务器中的功能。在特定情况下,恶意用户可能滥用 UDF 功能以获取提权或执行未经授权的操作。要进行MySQL UDF入侵检测,可以采取以下步骤:

(1)检查 MySQL 日志

查看 MySQL 的日志文件,通常位于 MySQL 的数据目录下,具体位置可在mysql的配置文件中查看(windows系统名称:my.ini,linux系统名称:my.cnf)。在日志中搜索与 UDF 或插件相关的错误信息,包括加载、安装或使用 UDF 的问题。

(2)检查已安装的 UDF

运行以下 SQL 查询来获取已安装的 UDF 列表

select * from mysql.func;

检查返回的结果是否包含未知或可疑的 UDF。如果存在不明来源的 UDF,可能是一个潜在的后门。

(3)排查mysql 插件目录

运行以下 SQL 查询来获取插件目录

show variables like '%plugin_dir%';

通过排查插件目录寻找可疑文件,如高权限的文件夹和文件、近期创建的可疑文件。

(4)MySQL安全检查

检查用户口令强度

检查 MySQL 的用户和权限设置,确保只有授权的用户能创建UDF函数。

检查MySQL用户的读写权限(secure_file_priv权限)

(5)UDF提权清除

使用 drop function <name> 命令删除恶意UDF函数

删除恶意动态链接库文件

2.2.2 恶意程序分析

通过系统的异常排查定位到恶意程序文件,但仅通过系统层面排查无法确认恶意程序外连信息及操作行为时,则需要使用更为专业的监控工具对恶意程序进一步分析,必要时需要使用反汇编工具对恶意程序进行逆向分析,从而获取恶意程序的操作行为,分析其造成的影响,甚至可以获取到定位攻击者身份的关键信息。

常见分析思路:

  1. 静态恶意程序分析

静态恶意程序分析在不主动运行恶意程序代码的情况下查找可能损害系统的文件,使其成为暴露恶意库或打包文件的安全工具。静态恶意程序分析可以发现有关恶意程序性质的线索,例如文件名、哈希、IP 地址、域和文件头数据。可以使用各种工具(例如网络分析器)观察恶意程序。

  1. 动态恶意程序分析

动态恶意程序分析使用沙盒,沙盒是一个安全、隔离的虚拟环境,您可以在其中运行可疑的危险代码。安全专业人员可以密切监视沙箱中的恶意程序,而不必担心感染系统或网络的其余部分,从而使他们能够收集有关恶意程序的更多信息。

  1. 混合恶意程序分析

混合恶意程序分析结合了静态和动态技术。例如,如果恶意代码对计算机的内存进行更改,则动态分析可以检测到该活动。然后,静态分析可以准确确定进行了哪些更改。

(1)网络行为分析
  1. NetLimiter

通过此工具可监测程序的网络通讯信息,以方便进一步分析。

  1. CurrPorts

通过此工具可显示本地计算机上所有当前打开的TCP/IP和UDP端口的列表。对于列表中的每个端口,还显示打开该端口的进程的信息,包括进程名称、进程的完整路径、进程的版本信息(产品名称、文件描述等)、进程的创建时间以及创建该进程的用户。此外,CurrPorts允许你关闭不需要的TCP连接,杀死打开端口的进程,并将TCP/UDP端口信息保存到HTML文件、XML文件或以制表符分隔的文本文件中。

(2)程序行为监控分析
  1. DiffView

此工具可追踪一个程序在你系统上所做的修改或一些操作进行监控

  1. LISTDLLS

"LISTDLLS" 可列出当前运行的 Windows 进程所加载的动态链接库(DLL)信息。这个工具可以在 Windows 操作系统上帮助用户查看正在运行的进程所依赖的 DLL 文件,以及 DLL 的加载地址和状态。

  1. Process Explorer

Process Explorer是Windows操作系统的任务管理器的增强版本。Process Explorer提供了更丰富的功能和更详细的信息,用于管理和监视正在运行的进程、线程、以及系统的资源使用情况。

  1. Process Monitor

Process Monitor用于在Windows操作系统上监控进程、文件系统、注册表和网络活动。它提供了实时的、详细的日志记录,帮助用户深入了解系统中正在发生的操作和活动。特点是可监控进程写入文件,访问网络,注册表写入等细节。

(3)恶意程序逆向分析

使用监控工具对恶意程序网络行为和操作行为监控没有发现时,可使用相关工具对恶意程序进行逆向分析。通过对程序的逆向分析,可从反汇编的程序代码中获取恶意程序的外连信息、操作行为逻辑等,甚至可以获取确认攻击者身份的关键信息。逆向分析需要使用反编译工具,如IDA Pro、x64dbg等,Linux平台可使用objdump。

  1. x64dbg

x64dbg是一款功能强大的动态反汇编调试器,它能够在windows平台上进行应用程序的反汇编、调试和分析工作。

  1. objdump

objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息。

常用参数说明:

-f 显示文件头信息

-D 反汇编所有section (-d反汇编特定section)

-h 显示目标文件各个section的头部摘要信息

-x 显示所有可用的头信息,包括符号表、重定位入口。-x 等价于 -a -f -h -r -t 同时指定。

-i 显示对于 -b 或者 -m 选项可用的架构和目标格式列表。

-r 显示文件的重定位入口。如果和-d或者-D一起使用,重定位部分以反汇编后的格式显示出来。

-R 显示文件的动态重定位入口,仅仅对于动态目标文件有意义,比如某些共享库。

-S 尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。

-t 显示文件的符号表入口。类似于nm -s提供的信息

2.2.3 恶意程序清除

根据对服务器的安全排查找到恶意程序之后,需要对恶意程序进行清除。

1直接删除恶意程序

排查定位到恶意程序的位置,根据恶意程序执行逻辑删除恶意程序及其衍生文件。

2杀毒扫描工具查杀

使用杀毒软件、GScan等工具,自动查杀恶意程序。该方法适用于特征明显的恶意程序,对于特征隐藏的免杀恶意程序,则需要人工排查定位恶意程序进行清除。

Windows平台可使用Windows Defender安全软件查杀。

Linux平台可使用GScan工具进行主机安全扫描:

2.2.4 漏洞修复及其他异常处置

(1)检查相关业务系统(RDP、SSH、FTP等)是否存在弱口令账号,确认是否存在账号异常登录情况,修改弱口令,并对非必要对外开放的系统进行远程访问限制。

(2)查看系统补丁信息,根据当前系统补丁情况,确认是否存在未修复的系统漏洞

(3)检查第三方软件漏洞,如果服务器内有运行对外应用软件(WEB、FTP 等),可通过官方公布的漏洞情况及补丁自查相关软件是否存在漏洞。

3 其他类型后门处置流程

当发生安全事件并完成对Webshell、恶意程序的处置工作之后,为了避免攻击者通过其他形式在系统中留下后门,还需要对服务器进行安全检查。

3.1 Windows系统

3.1.1 查看计划任务

compmgmt.msc

排查是否存在恶意的计划任务并执行删除动作,若关联了恶意脚本则同步清除。

清除命令:schtasks /delete /tn "计划任务名称" /f

3.1.2 查看进程

清除命令:

taskkill /f /t /pid "进程PID"

使用tasklist命令,排查是否存在恶意进程,查询进程文件位置,执行恶意文件删除及恶意进程清除。

3.1.3 查看启动项

使用msconfig命令或打开任务管理器,排查清除下列目录中的恶意自启动文件:

%appdata%\Microsoft\Windows\Start Menu\Programs\Startup

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

3.1.4 查看服务

services.msc

排查是否存在恶意服务,执行删除动作。

3.1.5 查看事件日志

eventvwr.msc

排查系统日志是否存在异常事件

3.1.6 查看隐藏用户

清除命令:

net user test$ /del

使用net user命令查看有哪些用户,然后在输入net localgroup administrators 或者 net localgroup users或使用regedit打开注册表编辑器找到:[HKEY_LOCAL_MACHINE]——[SAM]——[SAM]——[Domains]——[Account]——[Users]

这里下面的数字和字母组合的子键是你计算机中所有用户帐户的SAM项。子分支[Names]下是用户名,每个对应上面的SAM项。

还可以使用D盾工具检测隐藏用户

3.1.7 查看注册表

运行键是注册表的一种开机运行机制:当用户登录或机器启动时,可以在Windows系统上执行一些程序。

通过以下命令查找注册表运行键:

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce"

reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunServices"

Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce"

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce"

reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices"

Reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce"

删除运行键:

reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v <name>  /f

3.2 Linux系统

3.2.1 查看计划任务

使用crontab命令查看

常用参数:

-u 指定一个用户

-l 列出某个用户的任务计划

-r 删除某个用户的任务

-e 编辑某个用户的任务

(编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件)

排查是否存在恶意计划任务并执行删除动作,若关联了恶意脚本则同步清除。

3.2.2 查看进程

清除命令:

kill -9 "进程PID"

使用ps命令查看进程,排查是否存在恶意进程并执行清除,若关联了恶意文件则同步清除。

3.2.3 查看启动项

ls -alt /etc/init.d/

排查删除下列目录中的恶意自启动文件

3.2.4 查看异常用户

查看/etc/passwd文件,这个文件是保存着这个linux系统所有用户的信息,通过查看这个文件,我们就可以尝试查找有没有攻击者所创建的用户,或者存在异常的用户。

3.2.5 查看历史命令

使用history命令或者查看~/.bash_history文件,分析攻击者相关操作。

3.2.6 查看登录日志

使用last、lastb、lastlog命令查看系统用户登录相关日志,排查是否存在账号异常登录并修改相关账号口令。

修改密码命令:passwd 用户名

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

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

相关文章

【大厂AI课学习笔记】1.4 算法的进步(1)

2006年以来&#xff0c;以深度学习为代表的机器学习算法的发展&#xff0c;启发了人工智能的发展。 MORE&#xff1a; 自2006年以来&#xff0c;深度学习成为了机器学习领域的一个重要分支&#xff0c;引领了人工智能的飞速发展。作为人工智能专家&#xff0c;我将阐述这一时期…

J-Link:STM32使用J-LINK烧录程序,其他MCU也通用

说明&#xff1a;本文记录使用J-LINK烧录STM32程序的过程。 1. J-LINK驱动、软件下载 1、首先拥有硬件J-Link烧录器。 2、安装J-Link驱动程序SEGGER 下载地址如下 https://www.segger.com 直接下载就可以了。 2.如何使用J-LINK向STM32烧写程序 1、安装好以后打开J-LINK Fl…

废品上门回收小程序搭建全过程

随着人们对环境保护意识的不断增强&#xff0c;废品回收成为了一项重要的社会活动。为了方便废品回收的顾客和回收者之间的联系&#xff0c;废品上门回收小程序成为了一种流行的解决方案。然而&#xff0c;如何选择一款合适的废品上门回收小程序搭建平台呢&#xff1f;下面将为…

网络协议与攻击模拟_13缓存DNS与DNS报文

一、缓存DNS服务器 1、引入缓存DNS 缓存域名服务器需要与外网连接 一台windows作为Client 一台Windows server作为缓存DNS 桥接网络 DHCP自动获取IP地址 Client 192.168.183.133 Windows server 192.168.183.138 ipconfig /all查看下Client的DNS&#xff0c;设置让Cl…

【论文阅读笔记】Advances in 3D Generation: A Survey

Advances in 3D Generation: A Survey 挖个坑&#xff0c;近期填完摘要 time&#xff1a;2024年1月31日 paper&#xff1a;arxiv 机构&#xff1a;腾讯 挖个坑&#xff0c;近期填完 摘要 生成 3D 模型位于计算机图形学的核心&#xff0c;一直是几十年研究的重点。随着高级神经…

深入了解c语言字符串 2

深入了解c语言字符串 2 一 使用 scanf进行字符串的输入&#xff1a;1.1输入单词&#xff08;不包含空格&#xff09;&#xff1a;1.2 输入带空格的整行文本&#xff1a;1.3 处理输入缓冲区&#xff1a;1.4 注意安全性&#xff1a; 二 使用 printf 字符串的输出&#xff1a;三 输…

数据结构之动态查找表

数据结构之动态查找表 1、二叉排序树1.1、二排序树的定义1.2、二叉排序树的查找过程1.3、在二叉排序树中插入结点的操作1.4、在二叉排序树中删除结点的操作 2、平衡二叉树2.1、平衡二叉树上的插入操作2.2、平衡二叉树上的删除操作 3、B_树 数据结构是程序设计的重要基础&#x…

js新增的操作元素类名的方法

Element.classList是一个只读属性&#xff0c;返回一个元素 class 属性的动态 DOMTokenList 集合。这可以用于操作 class 集合。 尽管 classList 属性自身是只读的&#xff0c;但是你可以使用 add()、remove()、replace() 和 toggle() 方法修改其关联的 DOMTokenList。 兼容性…

移动机器人激光SLAM导航(二):运动控制与传感器篇

参考引用 机器人工匠阿杰wpr_simulation 1. 机器人运动控制 1.1 测试环境安装 wpr_simulation 安装$ mkdir -p catkin_ws/src $ cd catkin_ws/src $ git clone https://github.com/6-robot/wpr_simulation.git $ cd wpr_simulation/scripts/ $ ./install_for_melodic.sh # 自…

【2023地理设计组一等奖】基于机器学习的地下水仿真与时空分析

作品介绍 1 设计思想 1.1 作品背景 华北平原是我国最重要的粮棉产地之一,然而近年来农业的低效用水以及过度压采正逐步加剧其地下水资源的紧张性,为经济可持续发展带来重大风险。而地下水动态变化与人为干预、全球气候波动呈现出高度相关性,因此,地下水的仿真模拟对保障粮…

使用阿里云的IDaaS实现知行之桥EDI系统的单点登录

&#xff0c;在开始测试之前&#xff0c;需要确定用哪个信息作为“登陆用户的ID字段”。 这个字段用来在完成SSO登陆之后&#xff0c;用哪个信息将阿里云IDaaS的用户和知行之桥EDI系统的用户做对应。这里我们使用了 phonenumber 这个自定义属性。需要在阿里云做如下配置&#x…

Qt实现类似ToDesk顶层窗口 不规则按钮

先看效果&#xff1a; 在进行多进程开发时&#xff0c;可能会遇到需要进行全局弹窗的需求。 因为平时会使用ToDesk进行远程桌面控制&#xff0c;在电脑被控时&#xff0c;ToDesk会在右下角进行一个顶层窗口的提示&#xff0c;效果如下&#xff1a; 其实要实现顶层窗口&#xf…

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c

文章目录 openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c概述学到的知识点笔记PEM证书可以拼接实验 pkcs12 - pkwrite.c用win10的证书管理器安装P12证书是成功的END openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c 概述 openssl3.2 - 官方demo学习 - 索引贴 上次PKCS12的…

【Qt】Json在Qt中的使用

Json JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;广泛用于互联网应用程序之间的数据传输。JSON基于JavaScript中的对象语法&#xff0c;但它是独立于语言的&#xff0c;因此在许多编程语言中都有对JSON的解析和生成支持。…

[opencvsharp]C#基于Fast算法实现角点检测

角点检测算法有很多&#xff0c;比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等&#xff0c;今天我们使用C#的opencvsharp库实现Fast角点检测 【算法介绍】 fast算法 Fast(全称Features from accelerated segment test)是一种用于角…

集合问题(并查集)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例1&#xff1a; 输入 4 5 9 2 3 4 5 输出 YES 0 0 1 1 样例2&#xff1a; 输入 3 3 4 1 2 4 输出 NO 思路&#xff1a; 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时…

(杂项笔记)腾讯文档设置隔行换色

文档小技巧 一、在表格工具栏中选择“数据”栏二、选择新建条件格式三、进行以下设置1. 应用范围2. 条件设置3. 这是表格颜色 四、样例展示1. 隔行换色2. 隔3行换色 最近在使用某家的文档进行多人协同办公&#xff0c;遇到的一些小技巧&#xff0c;在这里分享给大家&#xff1b…

无广告iOS获取设备UDID 简单方便快捷

ps&#xff1a; 为啥不用蒲公英了&#xff0c;就是因为有广告了&#xff0c;获取个UDID还安装游戏&#xff0c;真恶心?&#xff0c;所以找了新的获取UDID都方法&#xff0c;网页直接获取就可以&#xff0c;不会安装软件。 UDID 是一种 iOS 设备的特殊识别码。除序号之外&…

Java多线程--解决单例模式中的懒汉式的线程安全问题

文章目录 一、单例设计模式的线程安全问题&#xff08;1&#xff09;饿汉式没有线程安全问题&#xff08;2&#xff09;懒汉式线程安全问题1、案例2、方式1-同步方法3、方式2-同步代码块4、优化 二、代码&#xff08;1&#xff09;实现线程安全的懒汉式&#xff08;2&#xff0…

【力扣白嫖日记】SQL

前言 练习SQL语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1387.使用唯一标识码替代员工ID 表&#xff1a;Employees 列名类型idintnamevarchar 在 SQL 中&#xff0c…