20232831 袁思承2023-2024-2 《网络攻防实践》第8次作业

embedded/2024/9/20 6:57:20/ 标签: 网络

目录

  • 20232831 袁思承2023-2024-2 《网络攻防实践》第8次作业
    • 1.实验内容
    • 2.实验过程
      • 一、动手实践任务一
      • 二、动手实践任务二:分析Crackme程序
        • ①crackme1.exe
        • ②crackme2.exe
      • 三、分析实践任务一
      • 四、分析实践任务二
    • 3.学习中遇到的问题及解决
    • 4.学习感悟、思考等
    • 参考资料


20232831 袁思承2023-2024-2 《网络攻防实践》第8次作业

1.实验内容

一、动手实践任务一

对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?

二、动手实践任务二:分析Crackme程序

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

三、分析实践任务一

分析一个自制恶意代码样本rada,并撰写报告,回答以下问题:

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;

2、找出并解释这个二进制文件的目的;

3、识别并说明这个二进制文件所具有的不同特性;

4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;

5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;

6、给出过去已有的具有相似功能的其他工具;

7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

四、分析实践任务二
Windows 2000系统被攻破并加入僵尸网络

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题:

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

2、僵尸网络是什么?僵尸网络通常用于什么?

3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络

5、那些IP地址被用于攻击蜜罐主机?

6、攻击者尝试攻击了那些安全漏洞?

7、那些攻击成功了?是如何成功的?

2.实验过程

一、动手实践任务一

首先,将rada恶意代码的两个文件放入到WinXPattackr虚拟机下
在这里插入图片描述
Win+R,打开cmd,并使用以下命令,找到RaDa.exe文件,并先对RaDa.exe恶意代码文件进行分析,可以看到RaDa.exe文件
是PE32位类型的EXE可执行文件,且带有GUI界面,所处的系统架构为英特尔的80386系列,所处的系统为32位Windows。

cd 桌面
file RaDa.exe

在这里插入图片描述输入以下命令,进行RaDa.exe文件恶意代码字符串的查看,可以看到输出的字符串为一堆乱码,猜测是因为加壳的原因。此外,最后面出现了几个dll文件的名称,查询发现均为Windows操作系统中重要的DLL动态链接库文件,还出现了一些调用的函数 等信息。

strings RaDa.exe

在这里插入图片描述
使用命令查看作者信息,能够发现是以下两个人的作品,脱壳后可以验证是否是这两人,且以下两种查看作者的命令弹出的信息一致:

rada --authors
RaDa.exe --authors

在这里插入图片描述
在这里插入图片描述
在WinXPattacker中寻找PEid工具,查看RaDa.exe的加壳信息,可以看到UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo内容,说明加的壳为即为此形式。
在这里插入图片描述
于是,使用WinXPattacker上自带的超级巡警脱壳工具进行脱壳,生成了一个脱壳后的unpacked的exe文件在桌面
在这里插入图片描述
再次使用strings查看字符串的命令,对脱壳后的文件RaDa_unpacked.exe进行字符串分析,可以发现大量的函数调用信息,但是仍然不够详细,需要反汇编来分析,字符串分析是不够的。
在这里插入图片描述
于是,使用IDA Pro Free,选择PE Exe对脱壳后文件RaDa_unpacked.exe进行反汇编分析,结果如下:
在这里插入图片描述
发现String界面仍然是与上述查看字符串的输出相同
在这里插入图片描述
因此,需要修改编码模式,在Sting窗口,右键,选择Setup,然后选Unicode改变编码格式,会发现一片新天地。
在这里插入图片描述
新天地如下:
在这里插入图片描述
找到作者信息
在这里插入图片描述
与上述命令RaDa.exe --authors查看的作者信息相同,均为Raul Siles & David Perez
试验结束!
在这里插入图片描述
回答问题如下:

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;
RaDa.exe文件是PE32位类型的EXE可执行文件,且带有GUI界面,所处的系统架构为英特尔的80386系列,所处的系统为32位Windows(即运行平台,Intel80386架构的32位Windows)。加壳工具为UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理;
见上述实验过程
(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
作者为Raul Siles & David Perez

二、动手实践任务二:分析Crackme程序

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。

①crackme1.exe

打开cmd,进入桌面后,直接输入crackme1.exe+某些指令,进行输入格式的试探

crackme1.exe
crackme1.exe 1
crackme1.exe 1 2
crackme1.exe open
crackme1.exe ysc

在这里插入图片描述
根据它的回复,缺少了输入内容或者是格式有问题,因此直接试探较为困难。于是,直接上工具IDA,与第一个实验一样,选择PE Exe新建一个分析界面,分析后打开如下:
在这里插入图片描述
打开String窗口,发现了它的回复总共有4条,但是上面测试只能发现两条,于是猜测没有出现的两条中,一条就是要寻找的特定输入,一条是对特定输入的回复,这里猜测I know the secret为密码,而另一条为密码正确的回复。
在这里插入图片描述
猜测是不够的,需要进一步探索:
点击打开IDA View窗口,在右上角菜单栏选择view—graphs—function calls,进行流程图的查看,找到它的输出,即printf,能够发现它属于sub_401280,其中sub_401280中的strcmp块就是使用字符串匹配密码的模块,我们来进行查看:
在这里插入图片描述
在这里插入图片描述
于是进行sub_401280块的代码查看:
在这里插入图片描述
再查看它的代码流程图,在Flow chart中查看:
在这里插入图片描述
可以看到,这里是一个条件分支。红色线条代表False,绿色代表True。
在这里插入图片描述
让我们着重读取这部分的汇编代码:

在这里插入图片描述
push offset alKnowTheSecret:"I know the secret"字符串的地址(偏移量)被推入到栈上。offset指令用于获取一个标签或数据的偏移量。
dword ptr [eax];char *:将eax寄存器中的值解释为一个指向char的指针,然后将栈上的地址存储到这个指针指向的内存位置。
call strcmp:调用字符串比较函数strcmp,用于比较两个字符串是否相等。

简单的说就说判断你是否输入“I know the secret”(要带双引号,因为反汇编代码中带了),如果是,就能走绿色分支,得到回复You know how to speak to programs

结束了判断,接下来进行实验,即在cmd中输入指定输入

crackme1.exe “I know the secret”

在这里插入图片描述
实验结束!

②crackme2.exe

实验与①中类似,便不作过多讲解,直接上代码和IDA的反汇编结果如下
crackme2.exe有5条回复
在这里插入图片描述

首先得找到printf所属于的那个代码块,仍然是sub_401280
在这里插入图片描述
查看反汇编代码(比较大)
在这里插入图片描述

着重分析分支语句部分的汇编代码
在这里插入图片描述
可以看到,它比crackme1.exe多了一个分支来判断是否输入正确,它先判断是否输入了“crackmeplease.exe”,再判断是否输入了”I know the secret“,因此是两个参数

由此,输入代码如下:

crackme2.exe “crackmeplease.exe” “I know the secret”

结果发现是错误的
在这里插入图片描述
再次阅读汇编代码,发现原来不是输入两个参数,是需要将第一个参数“crackmeplease.exe”作为文件的命名,即将crackme2.exe重命名为crackmeplease.exe,再输入第二个参数==“I know the secret==”

crackmeplease.exe “I know the secret”

在这里插入图片描述
成功获取指定输入,实验结束!

回答问题如下:

任务:在WinXP Attacker虚拟机中使用IDA Pro静态或动态分析crackme1.exe和crackme2.exe,寻找特定的输入,使其能够输出成功信息。
①crackme1.exe
特定的输入:crackme1.exe “I know the secret”
②crackme2.exe
特定的输入:crackmeplease.exe “I know the secret”

三、分析实践任务一

分析一个自制恶意代码样本rada,并撰写报告,回答问题:

分析具体内容如下:
使用以下命令进行MD5摘要的获取,可得到MD5为:caaa6985a43225a0b3add54f44a0d4c7

md5sum RaDa.exe

在这里插入图片描述
打开自带的Process Explorer软件,用于监听脱壳后的RaDa.exe文件,即RaDa_unpacked.exe(需要启动此脱壳后的恶意代码文件,以实现监听)
在这里插入图片描述
点击它,进行监听查看,打开String,看红框内的监听信息可知,该恶意软件先访问了http://10.10.10.10/RaDa这个网站,将RaDa_commands.html下载到了C:\RaDa\tmp,应该是下载了一个恶意软件或其他东西进行执行,留下了后门。它还判断当前环境是否是在虚拟环境下,如果不是,就进行DDos泛洪攻击,占据目标主机的资源,然后还修改了注册表,用Wscript.Shell对象读写 Wscript.Shell有三个方法,分别是RegWrite、RegRead、RegDelete,这里它均用到了。
在这里插入图片描述
修改注册表后,它应该是将RaDa设置为了开机启动项,最后它还攻击了三大内网,即192.168、172.16、10三个网段。此外,还能在这里看到作者的信息,即Raul Siles & David Perez,于2004年编写了此恶意软件。
在这里插入图片描述

回答问题如下

1、提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息;
摘要为caaa6985a43225a0b3add54f44a0d4c7
2、找出并解释这个二进制文件的目的;
①DDos攻击②连接http://10.10.10.10/RaDa网站,下载并留下后门③修改注册表,设置RaDa开机自启动④攻击了三大内网,即192.168、172.16、10三个网段
3、识别并说明这个二进制文件所具有的不同特性;
①会在初次运行时,下载文件到C盘下,留下后门②启动DDos攻击③初次运行时,修改注册表实现自己的开机自启
4、识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术;
在一、动手实践任务一中得知,使用了这种加壳技术:UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
5、对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由;
该文件通过修改注册表实现开机自启,通过连接网站下载文件,留下后门,并实现DDos攻击可以知道,它的目的是让主机瘫痪,无法提供服务。此外,它不复制感染,不属于病毒和蠕虫,且没有伪装成可用程序欺骗用户运行,因此不属于木马,所以是一个后门程序
6、给出过去已有的具有相似功能的其他工具;
①Bobax-2004年发现的木马,也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
②Setiri及其前辈Gatslag
7、可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
可以,直接命令行输入RaDa -authors就可以知晓作者(一、动手实践任务一),或者直接反编译该脱壳文件也可以发现(一、动手实践任务一),最后就说运行Process Explorer软件进行监听,也能知晓作者(三、分析实践任务一),有三种做法,作者为Raul Siles & David Perez

四、分析实践任务二

Windows 2000系统被攻破并加入僵尸网络

任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。

首先,打开Kali虚拟机,使用Wireshark对学习通上的检测日志文件进行分析:
简单浏览,发现真是群魔乱舞,各种IP地址,各种包,TCP、UDP、HTTP、NBNS、NBSS、DCERPC、SMB等等。
在这里插入图片描述
由于数据过多,只能边回答问题,边进行数据流的查看,因此回答如下:

1、IRC是什么?当IRC客户端申请加入一个IRC网络时将发送那个消息?IRC一般使用那些TCP端口?

IRC(Internet Relay Chat,互联网中继聊天)是一种实时通信协议,于1980年代晚期开发,至今仍广泛应用于各种在线社区、支持频道和社交聚会等场景。

当IRC客户端(连接到IRC网络的程序)想要加入IRC网络时,会向IRC服务器发送一系列命令。初始命令通常包括以下内容,发送这些命令后,客户端等待IRC服务器回应欢迎信息和可用频道列表:

1、NICK 命令:设置客户端在网络上的昵称(用户名)。 例子:NICK 我的昵称
2、USER 命令:设置客户端的用户名和真实姓名。例子:USER 我的用户名 0* : 我的真实姓名
3、MODE 命令:设置客户端的用户模式(例如,+i 隐身模式)。 例子:MODE 我的昵称+i

IRC通常使用以下TCP端口:
6665 - 6669:常规IRC通信端口
6697:IRC连接的备用端口(有时用于SSL/TLS加密连接)
7000:另一个IRC连接的备用端口

2、僵尸网络是什么?僵尸网络通常用于什么?

“僵尸网络”(botnet)是一种恶意网络, 由感染恶意软件的计算机组成。这些计算机可以被攻击者远程控制,而不需要计算机所有者的知情或同意。恶意软件,通常是一种木马程序,允许攻击者访问和控制感染的计算机,将它们变成 “僵尸” 或 “机器人”。

僵尸网络通常用于恶意活动,例如:

1、分布式拒绝服务(DDoS)攻击:从多个感染的计算机对网站或网络进行流量攻击,使其不可用。
2、垃圾邮件和钓鱼:从感染的计算机发送大量垃圾邮件或钓鱼邮件。
3、恶意软件传播:从感染的计算机传播恶意软件、病毒或勒索软件。
4、加密货币挖矿:使用感染的计算机挖矿加密货币,而不需要计算机所有者的知情或同意。
5、数据盗窃和间谍:从感染的计算机窃取敏感信息,如登录凭证、信用卡号或机密数据。

僵尸网络经常在暗网上出租或出售,允许犯罪分子发起攻击或从事其他恶意活动。执法机构和网络安全专家努力破坏和关闭这些网络,但它们仍然对在线安全构成严重威胁。

为了防止计算机成为僵尸网络的一部分,个人和组织必须采取措施,例如:保持软件和操作系统最新、安装反病毒软件并定期扫描恶意软件、避免可疑链接和附件、使用强密码并启用双因素身份验证、实施防火墙和入侵检测系统等等。

3、蜜罐主机(IP地址:172.16.134.191)与那些IRC服务器进行了通信?

由于IRC端口众多,常用的就有6665 - 6669,所以得用以下命令,将IRC服务器的端口和蜜罐主机的ip作为过滤条件,对wireshark日志进行包的筛选

ip.src==172.16.134.191 && tcp.port == 6665
ip.src==172.16.134.191 && tcp.port == 6666
ip.src==172.16.134.191 && tcp.port == 6667
ip.src==172.16.134.191 && tcp.port == 6668
ip.src==172.16.134.191 && tcp.port == 6669
ip.src==172.16.134.191 && tcp.port == 6697
ip.src==172.16.134.191 && tcp.port == 7000

发现,只有6667号端口才有数据,其他均没有
在这里插入图片描述
在这里插入图片描述

其他没有的省略,只给出6667号端口的截图,截图如下
在这里插入图片描述
可知,蜜罐主机与以下IRC服务器进行了通信
209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10和209.196.44.172
且通信最多的是此服务器:209.196.44.172

4、在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络

先使用命令安装TCPflow工具

sudo apt-get install tcpflow  

在这里插入图片描述
首先,使用以下命令进行wireshark日志进行分析,它将生成report.xml文件,这是一个报告文件

sudo tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667"

在这里插入图片描述
使用vim可以查看文件,但是文件较大,数据冗杂,需要用以下命令,使用grep过滤(整个都是命令)从而查看该文件,得到主机数量,即利用管道命令来筛选:

sudo cat 209.196.044.172.06667-172.016.134.191.01152 | grep -a "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' '\n' | tr -d "\15" | grep -v "^$" | sort -u | wc -l

在这里插入图片描述
可以看到总共有3461台主机访问了以209.196.44.172为服务器的僵尸网络

5、那些IP地址被用于攻击蜜罐主机?

使用以下指令,重新利用tcpflow来进行分析,它将生成一个名为IP.txt的文件(文件名自定义),文件中是被用于攻击蜜罐主机的所有IP地址

tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > IP.txt;wc -l IP.txt

在这里插入图片描述
生成的IP.txt文件如下,且输出165表示共有165个IP被用于攻击蜜罐主机
在这里插入图片描述
双击打开:
在这里插入图片描述
在这里插入图片描述
即总共165个IP被用于攻击蜜罐主机。

6、攻击者尝试攻击了那些安全漏洞?

使用以下命令,利用tcpflow工具进行筛选,筛选的是TCP端口和UDP端口

tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniqtcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

在这里插入图片描述
可以看到,TCP端口有135(rpc)、139(netbios-ssn)、25(smtp)、445(smb)、 4899(radmin)、 80(http)被攻击
UDP端口有137(NetBIOS Name Service)号端口被攻击。
这些就是攻击者攻击的安全漏洞。

7、那些攻击成功了?是如何成功的?

只有445端口的PSEXESVC.EXE攻击成功,获取了权限,进行了远程控制。
它首先伪装了一个蠕虫病毒文件PSEXESVC.EXE,并通过开放的445端口将其植入到目标主机,然后逐步拿下了admin、administrator的管理员权限,实现了远程连接,掌控了目标主机。

攻击需要逐个来分析判断是否成功:
①135端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==135

在这里插入图片描述
只发现了一些TCP数据包,只是一些握手连接,没有交互

②139端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==139

在这里插入图片描述
发现了TCP、SMB和NBSS等等数据包,但没有任何下文

③25端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==25

在这里插入图片描述
只发现了一些TCP数据包,只是一些握手连接,没有交互

④445端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==445

在这里插入图片描述
在这里查看到了PSEXESVC.EXE这一可疑的exe可执行文件,百度查询,是一个恶意远控程序,也是蠕虫病毒

PSEXESVC.EXE 是一个服务,在使用 PsExec 连接到远程系统时安装在远程系统上。此服务允许 PsExec 在远程系统上执行过程并与本地系统通信。然而,需要注意的是,恶意作者有时会使用名称 “PSEXESVC.EXE” 作为恶意程序的伪装,以使其看起来像合法程序一样。

可以看到,攻击者逐步拿下权限

拿下admin
在这里插入图片描述
拿下administrator
在这里插入图片描述
该攻击成功,被攻击者拿下了权限,导致被远程控制。

⑤4899端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==4899

在这里插入图片描述
只发现了一些TCP数据包,只是一些握手连接,没有交互
但是发现了一条cmd命令,是http包,但尚未知道是干什么的。查询百度,猜测也是远程连接的操作,但没有下文。应该攻击没有成功。
在这里插入图片描述

⑥80端口
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && tcp.port ==80

在这里插入图片描述
又发现了cmd,与上述4899端口出现的一致。
在这里插入图片描述
又发现了CCCCC等填充数据,于是明白,这是在做缓冲区溢出
在这里插入图片描述
跟踪数据流发现,一切正常。如果缓冲区溢出攻击成功,将被拿下shell,而这里没有出现,因此攻击失败。
在这里插入图片描述

⑦137端口(UDP)
使用以下命令在wireshark中查询

ip.addr == 172.16.134.191 && udp.port ==137

在这里插入图片描述
只发现一系列的NBNS包,这是一种网络基本输入/输出系统(NetBIOS)名称服务器的交互。

因此,只有445端口的PSEXESVC.EXE攻击成功,获取了权限,进行了远程控制。

3.学习中遇到的问题及解决

  • 问题1:对于逆向、反汇编、监听等等工具的使用不熟练
  • 问题1解决方案:观看课程视频、多学习学习通上的资料,查看诸葛建伟老师课件、参考他人博客等等。

4.学习感悟、思考等

通过本次实验,我对恶意软件、恶意代码的理解更深,了解了什么是木马,什么是蠕虫,什么是病毒、什么是后门等等,以及它们之间有什么区别和联系。此外,我学会使用很多不同的逆向工具和监听工具,让我对网络安全的学习更加深入。最后就是我的网安技术确实比较薄弱,不观看视频查阅资料,甚至询问ChatGPT,根本不知道下一步该如何进行。这是需要加强的。

参考资料

  • 北京大学网络攻防技术与实践课程作业-诸葛建伟
  • ChatGPT(请科学上网)

http://www.ppmy.cn/embedded/34571.html

相关文章

linux高性能服务器--Ngix内存池简单实现

文章目录 内存模型:流程图内存对齐code 内存模型: 流程图 内存对齐 对齐计算 要分配一个以指定大小对齐的内存,可以使用如下公式: 假设要分配大小为n,对齐方式为x,那么 size(n(x-1)) & (~(x-1))。 举个…

概念解析 | 互补学习系统

注1:本文系"概念解析"系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:互补学习系统(Complementary Learning Systems) 概念解析:互补学习系统 Paper Summary - “Complementary Learning Systems Theory Updated” | Rylan Schaeffer…

第十二章 案例二:配置Trunk,实现相同VLAN的跨交换机通信

1、实验环境 公司的员工人数已达到 100 人,其网络设备如图12.13所示,现在的网络环境导致广播较多网速慢,并且也不安全,公司希望按照部门划分网络,并且能够保证一定的网络安全性 图12.13 实验案例二拓扑图 其网络规划…

Linux的基本指令(下)

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 这篇博客续博主的上篇博客Linux基本指令。 07 …

数据库的乐观锁和悲观锁是什么?怎么实现的?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技…

冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort)是一种简单直观的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 以下是冒泡排序的基本步骤: 比较相邻元素:从数组的第…

【电路笔记】-容抗

容抗 文章目录 容抗1、概述2、容抗示例13、容抗示例 24、容抗示例 35、分压器修订6、总结1、概述 容抗是电容器的复阻抗,其值随应用频率而变化。 与不依赖于频率的电阻不同,在交流电路中,电抗受电源频率的影响,并且其行为方式与电阻类似,两者都以欧姆为单位测量。 电抗会…

MATLAB 数据输出

MATLAB 数据输出 数据导出(或输出)在 MATLAB 的意思是写入文件。MATLAB 允许您在另一个读取 ASCII 文件的应用程序中使用您的数据。为此,MATLAB 提供了几个数据导出选项。 您可以创建以下类型的文件- 数组中的矩形、分隔的ASCII数据文件。 击键的日记&#xff08…

leecode每日一练

打家劫舍 我一开始的思路也是dp&#xff0c;但是转移方程想错了&#xff0c;这个题目转移方程应该是dp[i] max(dp[i-2]nums[i],dp[i-1]) class Solution { public:int rob(vector<int>& nums) {int len nums.size();vector<int> dp(len);int ans 0;if(len&g…

腾讯云服务器之ssh远程连接登录

一、创建密钥绑定实例 创建密钥会自动下载一个私钥&#xff0c;把这个私钥复制到c盘 二、设置私钥权限 1、删除所有用户权限 2、添加当前用户权限 查看当前用户名 echo %USERNAME%三、ssh远程连接到服务器 ssh ubuntu175.xxx.xxx.112 -i C:\Crack\cs2.pem四、修改root密码 s…

[C++] 小游戏 斗破苍穹2.11.1 版本 zty出品

前言 大家好&#xff0c;&#xff0c;今天zty带来的是新版本 2.11.1 &#xff0c;这个版本的主要内容是合成系统&#xff0c;在2.11.5版本时还会加入新的UI界面和声音系统&#xff08;Beep函数&#xff09;&#xff0c;这次也不要很多赞&#xff0c;就要20个吧&#xff01; 先…

微信小程序 【关键部分】

1. 动机 最近在开发小程序&#xff0c;小程序既需兼顾针对新用户的内容预览&#xff0c;又要为注册用户提供服务&#xff0c;简单梳理下&#xff0c;基本需求如下&#xff1a; 小程序共三个tab页&#xff0c;所有用户都可以浏览首页内容&#xff0c;了解我们可以提供的优质服…

2024年Q1季度果酒行业线上市场数据分析:女性消费力量强劲!

随着短视频推广和健康饮酒理念的盛行&#xff0c;果酒凭借酒精度数低、口味丰富、富含多种营养成分等优势逐渐受到了消费者的青睐。 Q1季度&#xff0c;消费者对果酒需求依旧旺盛。根据鲸参谋数据显示&#xff0c;今年Q1季度&#xff0c;线上电商平台&#xff08;某猫&#xf…

UE5(射线检测)学习笔记

这一篇会讲解射线检测点击事件、离开悬停、进入悬停事件的检测&#xff0c;以及关闭射线检测的事件&#xff0c;和射线检测蓝图的基础讲解。 创建一个简单的第三人称模板 创建一个射线检测的文件夹RadiationInspection&#xff0c;并且右键蓝图-场景组件-命名为BPC_Radiation…

RK3568 学习笔记 : 精简 u-boot env 默认复杂的多种引导启动设置

前言 环境&#xff1a; 正点原子 Atompi-CA1 RK3568 开发板、正点原子 DLRK3568 开发板&#xff0c;&#xff08;一时脑热买了两块 RK3568 开发板&#xff09;&#xff0c;Atompi-CA1 RK3568 开发板比较小巧&#xff0c;利于一些前期的嵌入式 Linux 开发学习与实践。 RK3568 开…

【C】67 二进制求和

给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 #include <stdio.h> #include <stdlib.h> #include <string.h>char* addBinary(char* a, char* b) {if (a NULL || b NULL) {return NULL;}int len_a strlen(a);int len_b …

shamefully-hoist = true

在根目录下创建npm的配置文件.npmrc&#xff0c;增加配置项 shamefully-hoist true 是一个在 pnpm&#xff08;一个快速的、磁盘效率高的包管理器&#xff09;中使用的配置选项。pnpm 的主要特点之一是它使用硬链接和符号链接来避免复制相同的包到每个项目的 node_modules 文件…

数据结构===树

文章目录 概要概念相关概念 有哪些常用的树小结 概要 树是一种新的数据结构&#xff0c;不同于数组&#xff0c;链表。就像大自然中的树&#xff0c;看下这个数据结构&#xff0c;很有意思&#xff0c;有一个主干&#xff0c;然后还有很多树叉&#xff0c;即支干。不错&#xf…

uniapp 应用闪退、崩溃异常日志捕获插件(可对接网络上报)插件 Ba-Crash

应用闪退、崩溃异常日志捕获插件&#xff08;可对接网络上报&#xff09; Ba-Crash 简介&#xff08;下载地址&#xff09; Ba-Crash 是一款uniapp应用闪退、崩溃异常日志捕获插件&#xff0c;支持对接网络上报、设置提示等等&#xff0c;方便对一些远程问题、原生问题进行分…

影响外汇交易盈利的因素有哪些?

外汇交易就是通过汇率的差价来赚取相应的利润。在外汇交易中&#xff0c;投资者是否可以盈利&#xff0c;主要取决于是否正确的判断了市场趋势和行情。投资者在交易过程中受到主观和客观的因素影响&#xff0c;具体包含这些内容。 影响外汇交易盈利的因素有哪些&#xff1f; 1、…