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

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景,只不过此次场景分为两个镜像,本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件

本次需要使用的工具:
volatility_2.6_lin64_standalone
readpst
clamscan
olevba

本次实验使用的映像文件:
win7ecorpoffice2010-36b02ed3.vmem
ecorpwin7-e73257c4.vmem

Q1

File->ecorpoffice
What is the PID the malicious file is running under?
恶意文件运行的PID是什么?
老规矩,先看一下当前映像的系统信息

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem imageinfo 

在这里插入图片描述
这里使用两种方式获取进程列表

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 pslist

在这里插入图片描述
或者

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 psscan

在这里插入图片描述
在 Volatility 2.6 版本中,psscan 指令和 pslist 指令都是用于扫描系统中的 PID(进程标识符) 的指令。但是,它们有一些重要的区别。
1.psscan 指令会一次性扫描系统中的所有 PID,而 pslist 指令只会列出当前正在运行的进程列表。
2.psscan 指令使用默认参数时,会列出所有检测到的进程及其相关信息,包括进程名称、PID、进程所有者、进程类型等。而 pslist 指令则只显示当前正在运行的进程列表。
3.psscan 指令支持使用多个参数,例如 -U 用于指定进程所有者,-o 用于指定输出格式等。而 pslist 指令不支持使用多个参数。
4.psscan 指令的安全性更高,因为它不会直接访问系统资源,而是通过 Volatility 提供的 API 进行进程扫描。这意味着 psscan 指令更加安全,并且不会泄漏敏感信息。

使用getsids命令统计 PID 为 1364 的进程或进程组

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 getsids -p 1364  

在这里插入图片描述
这里其实也可以执行cmdline命令,查看一下该进程,该进程其实是在temp目录下走的,很多病毒也都是在temp目录下走的
在这里插入图片描述

Q2

File->ecorpoffice
What is the C2 server IP address?
C2服务器的IP地址是什么?

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 netscan

在这里插入图片描述

Q3

File->ecorpoffice
What is the Teamviewer version abused by the malicious file?
被恶意文件滥用的Teamviewer版本是什么?

strings win7ecorpoffice2010-36b02ed3.vmem| grep -F "54.174.131.235"

strings 命令用于在内存中查找字符串,而 grep 命令用于在文件中查找指定的字符串。在这里,grep 命令的参数 -F 表示使用正则表达式进行查找,并且指定要查找的字符串是在内存中的行中包含的。 -F加不加都行

Q4

File->ecorpoffice
What password did the malicious file use to enable remote access to the system?
恶意文件使用了什么密码来启用对系统的远程访问

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 editbox

在这里插入图片描述
“editbox” 是该配置文件中与 “Win7SP1x64” 相关的编辑框数据的名称。

Q5

File->ecorpoffice
What was the sender’s email address that delivered the phishing email?
发送钓鱼电子邮件的发件人的电子邮件地址是什么

我们将找到扩展名为*.eml或*.pst的文件(Outlook和Microsoft Exchange文件具有这样的扩展名,它们可以包含信件本身和文件夹,联系人,地址,附件等)。

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 filescan | grep pst$

这段命令是使用 Volatility 工具来读取一个名为 “c74-Team Spy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem” 的虚拟内存文件,并将其中与 “Win7SP1x64” 相关的文件扫描数据输出到标准输出 (stdout) 上,并通过 grep 命令筛选输出结果,只保留以 “pst$” 开头的行。
在这里插入图片描述
或者

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 filescan | grep -F ".pst"

在这里插入图片描述
eml并没有搜索结果,所以结果就是以pst为准
在这里插入图片描述
接下来是将这些文件转储出来,以便于我们取证
首先创建一个名为pst的文件夹
mkdir pst
在这里插入图片描述

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 dumpfiles -n -u -r pst$ -D pst

该命令将 pst相关的文件转储在 pst目录下
dumpfiles:提取内存映射和缓存的文件,包括-n(不覆盖已有的 dump 文件)、-u(只创建新的 dump 文件,不覆盖已有的 dump 文件) 和-r(指定 dump 文件的根目录)。
-D:指定要存储 dump 文件的路径和文件名,是 --dump-dir的简写
在这里插入图片描述
此时使用readpst工具进行读取,该工具需要手动安装

sudo apt-get update

在这里插入图片描述

sudo apt-get install pst-utils  

在这里插入图片描述
为什么说要使用readpst 工具呢,因为我们转储的文件是不便于我们阅读的,我们需要把他们转换成我们可以直接打开的文件格式,大家可以理解为“解压缩”
在这里插入图片描述

我们重点关注一下file.2692.0xfffffa80042dcf10.phillip.price@e-corp.biz.pst.dat数据

readpst -S file.2692.0xfffffa80042dcf10.phillip.price@e-corp.biz.pst.dat

在这里插入图片描述
此处已经成功将邮件解开,我们回到存放目录,发现已经可以阅读了
在这里插入图片描述
而后我们查看最后一个包的文件内容,因为这个带附件了
在这里插入图片描述

其实这里的题我是没答出来的,偷看了一下国外大佬的过程,也是看的云里雾里的,其实在这里是一封钓鱼邮件,按理说这个邮件里应该会显示出邮件的名称,但是我这里却没有
在这里插入图片描述
这里的意思,其实就是尊敬的xxx,这是您的发票 xxx银行
网上大佬的教程里,是有发票的名字的
在这里插入图片描述
但是解出来的文件,确实有个恶意钓鱼文件
在这里插入图片描述
我们去解开另外一个pst文件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
几乎是如出一辙,至于为什么主要关注phillip.price用户,请回看Q1,C2木马运行的用户就是该用户

Q6

File->ecorpoffice
What is the MD5 hash of the malicious document?
恶意文档的MD5哈希是什么?

md5sum 13-bank_statement_088452.doc

在这里插入图片描述
c2dbf24a0dc7276a71dd0824647535c9
在这里插入图片描述

Q7

File->ecorpoffice
What is the bitcoin wallet address that ransomware was demanded?
勒索软件被要求提供的比特币钱包地址是什么
这里可以使用检索的方式,也可以翻垃圾桶哈

grep -r -i bitcoin pst

该命令直接在解出来的邮件里全局所有bitcoin 关键字
在这里插入图片描述
可以看出来,人家威胁你,要不不给我5比特币,我就天天攻击你

Q8

File->ecorpoffice
What is the ID given to the system by the malicious file for remote access?
恶意文件为系统提供的用于远程访问的ID是什么?

strings win7ecorpoffice2010-36b02ed3.vmem| grep "54.174.131.235"

与Q3问题一个玩法
在这里插入图片描述
如果观察细致的朋友,可能在上面看到过这个数字

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 editbox

在这里插入图片描述
好吧,在这里引用一下,其实也可以将以上的 部分流量包导出来

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpoffice/win7ecorpoffice2010-36b02ed3.vmem --profile=Win7SP1x64 memdump -p 1364 -D ./

上述命令其实是使用memdump命令捕获 pid 为 1364的内存状态,生成一个名为1364.dmp的文件,同时将生成的1364.dmp文件保存在当前目录下,以便于后续的分析
在这里插入图片描述

strings -el 1364.dmp | grep -A10 -B10 "54.174.131.235"

这条命令的作用是查找指定文件中包含字符串 “54.174.131.235” 的位置,并输出所有匹配的行。其中,string -el 1364.dmp 的作用是指定要查找的文件,grep -A10 -B10 “54.174.131.235” 的作用是指定要查找的字符串和显示匹配行的位置。
在这里插入图片描述
在这里插入图片描述

Q9

File->ecorpoffice
What is the IPv4 address the actor last connected to the system with the remote access tool?
参与者最后一次使用远程访问工具连接到系统的IPv4地址是什么?

strings 1364.dmp| grep -B10 -A10 -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep "team" -B10 -A10  

可以把 B10 A10 给大点
在这里插入图片描述
验证一下

strings -el 1364.dmp | grep -F '31.6.13.155' -B 10 -A 10

在这里插入图片描述

Q10

File->ecorpoffice
What Public Function in the word document returns the full command string that is eventually run on the system?
word文档中的哪个公共函数返回最终在系统上运行的完整命令字符串?

先安装个工具,用于分析Microsoft OLE2文件(也称为结构化存储,复合文件二进制格式或复合文档文件格式)例如Microsoft Office文档或Outlook消息,主要用于恶意软件分析,取证和调试。它基于olefile解析器

sudo pip3 install -U oletools

在这里插入图片描述
这里需要回过头去分析Q6拿到的恶意文件
13-bank_statement_088452.doc

 olevba -c 13-bank_statement_088452.doc 

在这里插入图片描述
我虽然上学的时候学过VB,但是早就忘光了,这里我确实没本事解密,但是此处执行的其实是一条powershell加密过的命令

Q11

File->ecorpwin7
What is the MD5 hash of the malicious document?
恶意文档的MD5哈希是什么? 从此题开始进入到下一个映像

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem imageinfo

在这里插入图片描述

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 filescan | grep pst$

在这里插入图片描述
创建新的存放路径
在这里插入图片描述
导出

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 dumpfiles -n -u -r pst$ -D pst2

在这里插入图片描述

readpst -S file.2496.0xfffffa80034e9850.Outlscott.knowles@e-corp.biz-00000004.pst.dat 

解压邮件文件
在这里插入图片描述
在这里插入图片描述
但是导出来的时候,该RTF文件损坏了,我是看不出来的

xxd 10-Important_ECORP_Lawsuit_Washington_Leak.rtf

在这里插入图片描述
全是GGG

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 filescan | grep rtf$ 

我们去重新筛选一下该文件,通过获取内存地址的方式进行导出,这样就不会损坏文件了
在这里插入图片描述

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d6b3850 -u -n -D pst2

在这里插入图片描述
其实就是加了一个-Q,用来指定文件的内存地址
在这里插入图片描述
这个时候依然不能直接用,文件末尾很多0
在这里插入图片描述
这段命令行的作用是将文件 xxxLeak.rtf.dat 中的特定字节删除,并将文件中的特定字符串替换为另一个字符串,最后将修改后的二进制文件写入新文件 xxxLeak.rtf。

xxd -p file.None.0xfffffa80040b3260.Important_ECORP_Lawsuit_Washington_Leak.rtf.dat | sed '/000000000000000000000000000000000000000000000000000000000000/d' | sed '/0000000000000000000000000000000000000000000000000000/d' | sed 's/6131376136616631303365316533616437657d7d7d7d0000000000000000/6131376136616631303365316533616437657d7d7d7d/g' | xxd -r -p > Important_ECORP_Lawsuit_Washington_Leak.rtf 

或者
使用 Sed 命令将文件中的任意空字符 (0x0) 替换为空字符串 (即删除所有空字符)。

sed 's/\x0//g' file.None.0xfffffa80040b3260.Important_ECORP_Lawsuit_Washington_Leak.rtf.dat > Important_ECORP_Lawsuit_Washington_Leak.rtf

在这里插入图片描述
计算MD5
在这里插入图片描述

md5sum Important_ECORP_Lawsuit_Washington_Leak.rtf

在这里插入图片描述
在这里插入图片描述
使用clamscan工具扫一下,也是告诉我们,别人利用的是CVE_2010_3333-5 Microsoft RTF栈溢出漏洞
在这里插入图片描述

Q12

File->ecorpwin7
What is the common name of the malicious file that gets loaded?"
被加载的恶意文件的通用名称是什么?
首先我们看一下网络连接状态

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 netscan

在这里插入图片描述
这个其实就挺可疑的

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 pstree | grep 288

我们查看一下该进程的进程树
在这里插入图片描述

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 cmdline | grep "rundll" -A 10 -B 10

在这里插入图片描述
转储 test.dll

mkdir dll

在这里插入图片描述

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 dumpfiles -n -i -r test.dll -D dll 

在这里插入图片描述
在这里插入图片描述
使用clamscan 进行扫描
Clamscan 是一个免费的开源杀毒软件,它使用 clamav 软件包来检测文件是否包含恶意软件。Clamscan 最初是由加州大学伯克利分校开发的,并在其 BSD 授权条款下免费提供。它支持多种文件格式和平台,并且可以在多个平台上运行。Clamscan 可以用于扫描本地计算机或远程服务器上的文件,并且可以自动检测和清除恶意软件。

clamscan -r .      

在这里插入图片描述

md5sum file.288.0xfffffa8003791f10.test.DLL.dat  

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Malpedia 是一个在线的恶意软件数据库,提供有关各种恶意软件、病毒、黑客攻击和网络犯罪的信息。Malpedia 官网是
链接: https://malpedia.caad.fkie.fraunhofer.de/library 。在该网站上,您可以找到有关各种恶意软件和攻击的详细信息,包括它们的特征、传播方式、攻击目标、预防和应对措施等。Malpedia 是由 OpenDNS 和安全公司 ESET 共同开发的,旨在为网络安全专业人士和普通人提供有关恶意软件的详细信息。
在这里插入图片描述

Q13

File->ecorpwin7
What password does the attacker use to stage the compressed file for exfil?
攻击者使用什么密码来暂存压缩文件以进行exfil?

 ./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 memdump -p 288 -D ./  

继续上一题,我们把svchost 进程的内存镜像导出来
在这里插入图片描述
在这里插入图片描述
一发定魂

strings -el 288.dmp| grep "password" -A10 -B10

在这里插入图片描述
但是东西总是少一节,我们再次精确一下

strings -el  ecorpwin7-e73257c4.vmem| egrep -A5 -B5 "password1234"

egrep是筛选 password1234的字符串,而不是当做正则来筛选
在这里插入图片描述

strings -el  ecorpwin7-e73257c4.vmem| egrep "reports.rar"

我们发现 reports.rar用过之后就被删除了
在这里插入图片描述

Q14

File->ecorpwin7
What is the IP address of the c2 server for the malicious file?
恶意文件的c2服务器的IP地址是什么?

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 netscan

回归到Q12问题,我们的所有推断都是没问题的,所以C2地址应该就是下图所示了
在这里插入图片描述
在这里插入图片描述

Q15

File->ecorpwin7
What is the email address that sent the phishing email?
发送钓鱼电子邮件的电子邮件地址是什么?
回顾Q11 ,我们发现了rtf恶意文件,发件人也在其中
在这里插入图片描述
或者

./volatility_2.6_lin64_standalone -f c74-TeamSpy/ecorpwin7/ecorpwin7-e73257c4.vmem --profile=Win7SP1x64 yarascan -Y "From:" | grep "@" -B3 -A3  

这段命令行的目的是扫描指定的内存文件,并使用 Yarascan 扫描内存以查找可能的病毒或恶意软件,-Y "From::`在 Yarascan 扫描期间,忽略扫描指定字符串的内存块
在这里插入图片描述

Q16

File->ecorpwin7
What is the name of the deb package the attacker staged to infect the E Coin Servers?
攻击者用来感染E Coin服务器的deb包的名称是什么?

strings -el ecorpwin7-e73257c4.vmem | grep -F '.deb'

在这里插入图片描述其实我也不知道是不是,但是这下的都是一个,还是用wget下载的

最难受的就是我想导出来看一下,但是并没有成功,导出来的时候是一大堆乱七八糟的文件。。。。。。

此次演示就告一段落了,因为此次篇幅较长,难度较高,建议大家多实践多操作,下期将会为大家介绍一下linux的内存取证的基础文章,敬请期待

如果觉得学到东西了,请转发,蟹蟹​

相关文章:

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景,只不过此次场景分为两个镜像,本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件 本次需要使用的工具: volatility_2.6_lin64_standalone readpst clams…...

JAVA语言中的代理模式

代理可以进一步划分为静态代理和动态代理,代理模式在实际的生活中场景很多,例如中介、律师、代购等行业,都是简单的代理逻辑,在这个模式下存在两个关键角色: 目标对象角色:即代理对象所代表的对象。 代理…...

最后一步:渲染和绘制

浏览器的工作步骤如下: URL>字符流>词(token)流>DOM树(不含样式信息的 DOM)>DOM树CSS规则(含样式信息的 DOM)>根据样式信息,计算了每个元素的位置和大小>根据这些…...

C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

文章目录💐专栏导读💐文章导读🌷友元🌺概念🌺友元函数🍁友元函数的重要性质🌺友元类🍁友元类的重要性质🌷内部类(不常用)🌺内部类的性…...

拼多多按关键字搜索商品 API

一、拼多多平台优势: 1、独创拼团模式 拼团拼单是拼多多独创的营销模式,其特点是基于人脉社交的裂变传播,非常具有传播性。 由于本身走低价路线,加上拼单折扣,商品的分享和人群裂变效果非常明显,电商前期…...

全链路日志追踪

背景 最近线上的日志全局追踪 traceId 不好使了,不同请求经常出现重复的 traceId,或者通过某个请求的 traceId 追踪搜索,检索出了与该请求完全不相干的日志。我领导叫我去排查解决这个问题,这里我把我排查的过程思路以及如何解决…...

ZYNQ:【1】深入理解PS端的TTC定时器(Part1:原理+官方案例讲解)

碎碎念:好久不见,甚是想念!本期带来的是有关ZYNQ7020的内容,我们知道ZYNQ作为一款具有硬核的SOC,PS端很强大,可以更加便捷地实现一些算法验证。本文具体讲解一下里面的TTC定时器,之后发布的Part…...

蓝牙设备如何自定义UUID

如何自定义UUID 所有 BLE 自定义服务和特性必须使用 128 位 UUID 来识别,并且要确保基本 UUID 与 BLE 定义的基本 UUID(00000000-0000-1000-8000-00805F9B34FB)不一样。基本 UUID 是一个 128 位的数值,根据该值可定义标准UUID&am…...

好看的html登录界面,

界面效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head><title>Login Page</title><style>body {background-color: #f2f2f2;font-family: Arial, sans-serif;}form {background-color: #fff;border-radius: 5px;box-shado…...

Java模拟星空

目录 前言 JavaFX基础 1. GraphicsContext 2. AnimationTimer 代码实现 完整代码 前言 看了Python模拟星空很漂亮&#xff0c;Java也应该必须有一个&#xff01; 环境&#xff1a;只需要JDK1.8就好&#xff01;不需要外部包&#xff01;&#xff01;&#xff01; Jav…...

YGG 代表 Web3 Gaming 参加 2023 年游戏开发者大会

Yield Guild Games&#xff08;YGG&#xff09;在 2023 年 3 月 20 日至 24 日在加州旧金山举行的游戏开发者大会&#xff08;GDC&#xff09;上大显身手&#xff0c;这是游戏开发者的重要交流学习活动。虽然 GDC 本身提供了多种多样的活动&#xff0c;包括讲座、小组讨论、圆桌…...

水库安全运行智慧管理平台解决方案筑牢防汛“安全墙”

解决方案 水库安全运行智慧管理系统解决方案&#xff0c;系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成&#xff0c;同时建立规范、统一的监测平台&#xff0c;集数据传输、信息共享、数据储存于一体&a…...

Exchange升级部署方案

目录 前言 一、需求分析 二、升级前准备 1.备份当前 Exchange Server 数据...

AE开发之图层渲染20210603

AE开发之图层渲染比例符号化地图的整饰唯一值符号的符号化过程点符号设置&#xff0c;线符号设置标注图层&#xff0c;&#xff08;写得不好&#xff0c;不推荐看) 唯一值符号化&#xff0c;字段进行设置&#xff0c;这里用到了UniqueValueRenderer接口&#xff0c;这里面有一…...

需要了解的过滤器

过滤器 1. 概念 过滤器&#xff1a; 从名字上理解就是对于事件的过滤操作&#xff0c;在web 中的过滤器&#xff0c;就是对于请求进行过滤操作&#xff0c;我们使用过滤器&#xff0c;就可以对于请求进行拦截操作&#xff0c;然后进行响应的处理操作&#xff0c;实现很多的特殊…...

VUE3的setup函数

文章目录 目录 文章目录 前言 一、setup函数是什么&#xff1f; 二、使用步骤 三、vue3中文文档和面向vue3的组件库 总结 前言 Vue3是一个面向数据驱动的渐进式JavaScript框架&#xff0c;其的设计理念包括简洁、灵活和高效。相比Vue2&#xff0c;Vue3的架构设计有很大的不同&…...

停车场管理系统文件录入(C++版)

❤️作者主页&#xff1a;微凉秋意 ✅作者简介&#xff1a;后端领域优质创作者&#x1f3c6;&#xff0c;CSDN内容合伙人&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3c6; 文章目录一、案例需求描述1.1、汽车信息模块1.2、普通用户模块1.3、管理员用户模块二、案例分析三…...

线程(Thread)的三种等待唤醒机制详解

1、为什么需要线程的等待和唤醒 线程的等待唤醒机制是一种经典的“生产者和消费者”模型。例如食品加工厂&#xff0c;食品加工人员和原料补给人员&#xff0c;在有充足原料时&#xff0c;补给人员是在等待&#xff0c;等到原料不够时&#xff0c;食品加工人员通知补给人员&am…...

从零学习python - 13模块的导入与使用(实现单例模式)

模块基础知识 # 项目 > 包 > 模块 > 变量\方法\类 # 在python中,模块是代码组织的一种方式,把功能相近的函数或类放到一个文件中,一个文件(.py)就是一个模块,模块名就是文件名去掉py后缀. # 好处:提高代码可复用性和可维护性,一个模块编写完成后,很方便在其他项目中导…...

国产SSD、内存卷哭国外大厂,三星宣布减产涨价在路上了

PC 圈有一句话是这么说的&#xff1a;论价格屠夫还得看国产品牌&#xff01; 可不是嘛&#xff0c;国产长鑫、长江算是彻底将全球存储芯片市场搅局者这一「骂名」坐实了&#xff01; 不说特别早期&#xff0c;前几年吧&#xff0c;普通单条 8G DDR4 内存都能卖到六七百元&…...

数据库管理-第六十六期 SQL Domain(20230413)

数据库管理 2023-04-13第六十六期 SQL Domain1 基本介绍2 Domain的表达式和条件3 语法4 语义5 示例总结第六十六期 SQL Domain 上一期一笔带过了部分Oracle 23c的新特性&#xff0c;这一期重点讲一下SQL Domain新特性。 【https://docs.oracle.com/en/database/oracle/oracle-…...

《Vue3实战》 第一章 nods/npm安装、配置

1、nods.js安装&#xff08;Windows&#xff09; 1.1、下载并安装node https://nodejs.org/en/ , 安装到d盘nodejs目录 1.2、配置环境变量 path配置 1.3、配置全局包存放目录和缓存目录 在根目录下创建node_global&#xff08;全局包存放目录&#xff09;和node_cache&…...

JAVA练习104-四数相加 II

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、题目-四数相加 II 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 4月10日练…...

【C++基础】引用(引用的概念;引用的特性;常引用;使用场景:做输出型参数、大对象传参、做输出型返回值、返回大对象的引用);引用和指针的区别)

六、引用 6.1 引用的概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。&#xff08;语法上&#xff09; 格式&#xff1a;类型& 引用变量名(对象名) …...

Redis只用来做缓存?来认识一下它其他强大的能力吧。

当今互联网应用中&#xff0c;随着业务的发展&#xff0c;数据量越来越大&#xff0c;查询效率越来越高&#xff0c;对于时序数据的存储、查询和分析需求也越来越强烈&#xff0c;这时候 Redis 就成为了首选的方案之一。 Redis 提供了多种数据结构&#xff0c;如字符串、哈希表…...

【ES】数据同步集群

【ES】数据同步&集群3.数据同步3.1.思路分析3.1.1.同步调用3.1.2.异步通知3.1.3.监听binlog3.1.4.选择3.2.实现数据同步3.2.1.思路3.2.2.导入demo3.2.3.声明交换机、队列1&#xff09;引入依赖2&#xff09;声明队列交换机名称3&#xff09;声明队列交换机3.2.4.发送MQ消息…...

37岁男子不愿熬夜,回乡养鸡每天准时下班,青山绿水中养鸡,直播间里卖鸡蛋...

37岁男子不愿熬夜&#xff0c;回乡养鸡每天准时下班&#xff0c;青山绿水中养鸡&#xff0c;直播间里卖鸡蛋。今天和大家分享一个创业案例&#xff0c;他叫胡铭浩&#xff0c;来自安徽省旌德县&#xff0c;今年37岁&#xff0c;曾做过车床操作工&#xff0c;开过婚纱摄影店&…...

深度学习和人工智能之间是什么样的关系?

深度学习与人工智能概念的潜在联系&#xff0c;我们依然借助维恩图来说明&#xff0c;如图4.1所示。 1、人工智能 “人工智能”这个概念新鲜时髦但又含混模糊&#xff0c;同时包罗万象。尽管如此,我们仍尝试对 人工智能进行定义:用一台机器处理来自其周围环境的信息,然后将这些…...

实战打靶集锦-016-lampiao

提示&#xff1a;本文记录了博主打靶过程中一次曲折的提权经历 文章1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 80端口探查4.2 1898端口探查4.3 EXP搜索4.3.1 exploit/unix/webapp/drupal_coder_exec4.3.2 exploit/unix/webapp/drupal_drupalgeddon25. 提权5.1 系统信息…...

《Web前端应用开发》考试试卷(模拟题)

一、产品搜索页面 打开“考试文件夹”中的input.html&#xff0c;完成以下步骤&#xff1a; 注意&#xff1a;本题仅能在input.html的&#xff08;1&#xff09;为产品名称所在的div添加样式属性&#xff0c;使得产品名称保持在文本框的左边&#xff1b; &#xff08;2&#xf…...