20232407 2025-2026-1 《网络与系统攻防技术》 实验四实验报告

1.实验内容

一、恶意代码文件类型标识、脱壳与字符串提取

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息。

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

四、取证分析实践

2.实验过程

一、恶意代码文件类型标识、脱壳与字符串提取

(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具

在Kali虚拟机中使用file RaDa.exe命令分析目标文件的类型和结构

1

结果表明RaDa.exe是一个32位Windows GUI可执行文件,是一个带有图形用户界面的应用程序。它是针对Intel x86处理器设计的,内部包含3个段。

接着,在Windows主机中使用软件PEiD对目标文件进行分析

2

结果表明,该文件使用了UPX加壳,且Markus & Laszlo是该UPX的开发者

(2)使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理

3

屏幕截图 2025-11-04 185134

(3)使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁

使用IDA Pro分析我们脱壳后的RaDa_unpacked.exe,查看IDA View-A,在地址为00403F7A处可以知道RaDa文件的作者信息,为Raul Siles&&David Perez;在地址为00403FD4处可以看到RaDa文件的创作时间,为2004年9月

4

二、使用IDA Pro静态或动态分析crackme1.exe与crakeme2.exe,寻找特定输入,使其能够输出成功信息

(1)crackme1.exe

在Windows主机的PowerShell中运行此文件,简单输入几个参数

5

可以看到发现当输入额外的参数不唯一时,文件给出提示“I think you are missing something.”,当输入1个参数时,文件提示“Pardon? What did you say?”

可以推测,该文件需要我们输入一个正确的参数

在IDA Pro中打开文件crackme1.exe,选择View→Graphs→Function calls,打开该文件的函数调用图

6

在函数调用图中,发现函数sub_401280会调用strcmp用于字符串比较的库函数以及fprintf、printf等涉及IO的库函数,说明sub_401280函数可能会对接收的参数进行比较判断,并输出相应语句

7

打开函数管理工具,在函数管理窗口中,双击需分析的函数sub_401280,打开该函数的流程图

8

9

从函数流程图中分析可知,输入的参数不为2时,该程序将给出输出“I think you are missing something.”。当程序得到两个输入时,如果第二个输入为“I know the secret”,则程序给出输出“You know how to speak to programs, Mr. Reverse-Engineer”;否则输出“Pardon? What did you say?”。因此,我们需要输入的第二个参数为字符串“I know the secret”

在Windows主机的PowerShell中再次运行此文件,输入额外参数“I know the secret”

10

(2)crackme2.exe

在Windows主机的PowerShell中运行此文件,发现返回情况大体与crackme1.exe相似.但输入额外参数为“I know the secret”时,仍然无法验证通过,说明还需寻找适合文件二的正确参数

11

我们查看函数调用图,发现函数sub_401280会调用strcmp、fprintf、puts、putchar等可疑的库函数,说明sub_401280函数可能仍是对接收的参数进行比较判断的函数

12

在IDA Pro中找到函数管理窗口,双击需分析的函数sub_401280查看详细情况:

13

可以看到,除crackme1所具有的比较内容外,crackme2还对输入的第一个参数进行了比较,要求其为“crackmeplease.exe”

所以我们需要将该文件的文件名修改为crackmeplease.exe再运行即可。

14

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

(1)分析文件的基本信息

在kali中输入以下命令获取基本信息,包括运行平台、md5校验和以及时间戳

file RaDa.exe

md5sum RaDa.exe

exiftool RaDa.exe | grep "Time Stamp"

15

从返回值中可以看出RaDa.exe是一个32位Windows GUI程序,其md5摘要值为caaa6985a43225a0b3add54f44a0d4c7,且在2004年10月30日编译的

(2)找出并解释这个二进制文件的目的

在IDA Pro中分析脱壳后的RaDa文件。打开函数调用图,发现函数sub_404FB0下有很多的子函数,可以分析该函数的流程图以获取更多信息

16

命令mov edx, offset aHttp10_10_10_1;"http://10.10.10.10/RaDa",是将地址http://10.10.10.10/RaDa 加载到edx寄存器。而IP地址10.10.10.10很可能是攻击者的命令控制服务器。后续所有的下载指令、上传数据都会与这个服务器通信

17

对于四条命令

mov edx, offset aRada_commands_ ; "RaDa_commands.html"

mov edx, offset aCgiBin ; "cgi-bin"

mov edx, offset aDownload_cgi ; "download.cgi"

mov edx, offset aUpload_cgi ; "upload.cgi"

它们连续调用了字符串拼接函数,分别将四个字符串复制到内存中。其中RaDa_commands.html可能是攻击者用来下发指令的网页文件。cgi-bin可能是Web服务器上存放脚本的通用目录。download.cgi可能是用于下载新指令或恶意模块的脚本。upload.cgi可能是用于上传窃取数据的脚本。使得这个恶意文件具备了接收命令与回传数据的双向通信能力

18

命令mov edx, offset aCRadaTmp ; "C:\\RaDa\\tmp"表示恶意软件在C盘根目录下创建一个名为RaDa的文件夹,并在其中创建一个名为tmp的子文件夹,存放下载的临时文件或窃取的数据

19

命令offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersion",表示该文件通过HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run修改注册表路径,将自身添加为开机自启动项,确保每次开机自动运行

20

命令mov edx, offset aCRadaBin ; "C:\\RaDa\\bin",是将"C:\RaDa\bin"复制到内存。随后连续调用两次字符串拼接函数,得到完整的可执行文件路径“C:\RaDa\bin\RaDa.exe”。这个路径将被用于保存自身的文件,并完成开机自启动配置

21

(3)回答问题

问题1:提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息
问题1回答:它的md5摘要为caaa6985a43225a0b3add54f44a0d4c7。其他的基本信息包括:RaDa.exe是一个32位Windows GUI可执行文件,是一个带有图形用户界面的应用程序。它是针对Intel x86处理器设计的,内部包含3个段。

问题2:找出并解释这个二进制文件的目的
问题2回答:这个程序是一个为了维持远程持久控制而制作的后门程序。它会开机自启动,同时有窃取数据、下载新的恶意指令等功能。

问题3:识别并说明这个二进制文件所具有的不同特性
问题3回答:这个二进制文件被运行之后会在目的主机上创建文件夹,并将自己加入自启动项,然后会通过访问指定的地址在目的主机上上传或者是下载一些文件及数据,并且可以在目的主机上执行其他的指令对目的主机进行操控。

问题4:识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术
问题4回答:该文件采用了UPX加壳技术,它通过压缩原始代码和劫持入口点隐藏程序逻辑

问题5:对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由
问题5回答:属于一个远程控制软件(后门程序)。这个程序不能进行自我复制和自我传播,所以肯定不是病毒或者是蠕虫程序,但是这个程序可以通过在目的主机上执行来获取目的主机的Shell,所以猜测这个程序很有可能就是后门程序、木马程序或者是僵尸程序

问题6:给出过去已有的具有相似功能的其他工具
问题6回答:灰鸽子

问题7:可能调查处这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?
问题7回答:可以,该二进制文件的开发者是Raul Siles && David Perez。在IDA Pro中可以找到开发作者的信息。能够获取该信息需要作者在创作时就留下此类信息,同时该文件还需要以明文的形式展示(若加壳则需脱壳),此外还需要有一些专门的分析工具,比如此处的IDA Pro

问题8:给出至少5种检测该恶意软件的方法,例如基于特征码的方法,需要详细介绍每种方法
问题8回答:

  1. 基于特征码的检测方法
  • 原理:提取已知恶意软件的唯一特征,如特定的文件哈希值(MD5、SHA256)、关键代码片段、特定字符串(如恶意指令、配置信息),将这些特征存入特征库。检测时,扫描目标文件并与特征库比对,若匹配则判定为恶意。
  • 优势:技术成熟、检测速度快、误报率极低,对已知恶意软件的识别准确率接近 100%。
  • 劣势:无法检测未知恶意软件(零日攻击),且恶意软件可通过加壳、混淆、修改代码等方式改变特征,绕过检测。
  • 应用场景:杀毒软件的基础检测模块、企业终端常规扫描。
  1. 基于行为的检测方法
  • 原理:预先定义 “正常行为基线”(如程序正常的文件操作、网络连接、注册表修改范围),检测时实时监控目标程序的动态行为,若出现超出基线的操作(如擅自修改系统关键文件、静默创建后门进程、向陌生 IP 发送大量数据),则触发警报。
  • 关键监控维度:
    进程行为:如注入其他进程、创建悬浮进程、修改进程权限。
    文件操作:如删除系统日志、加密用户文件(勒索软件典型行为)、篡改可执行文件。
    网络行为:如建立可疑 TCP/UDP 连接、使用非标准端口通信、传输加密数据且无合理解释。
    系统交互:如修改注册表启动项、禁用安全软件服务、获取敏感权限(如管理员权限)。
  • 优势:可检测未知恶意软件,不受代码混淆、加壳等伪装手段影响。
  • 劣势:对 “正常行为基线” 的定义要求高,可能因基线过严导致误报(如合法程序的特殊操作被判定为恶意),且需要持续监控,对系统资源有一定占用。
  • 应用场景:终端检测与响应(EDR)工具、沙箱动态分析、服务器安全监控。
  1. 基于启发式的检测方法
  • 原理:不依赖具体特征或实时行为,而是分析程序的静态结构(如代码逻辑、功能模块),并基于安全专家总结的 “恶意特征规则” 进行推理。例如,若一个程序包含 “自我复制代码 + 修改其他文件的逻辑 + 隐藏自身进程的模块”,即使没有匹配的特征码,也会被判定为高风险(可能是新病毒或蠕虫)。
  • 常见启发式规则:
    代码层面:包含加密 / 解密模块但无合理用途(如非压缩软件却有强加密代码)、存在直接操作内存的底层指令。
    功能层面:程序体积极小但包含复杂的系统调用、无需用户交互即可自动运行并修改系统设置。
    结构层面:文件格式异常(如伪装成文档的可执行文件)、代码段与数据段混淆。
  • 优势:可提前识别未知恶意软件的变种,弥补特征码检测的盲区。
  • 劣势:启发式规则的准确性依赖专家经验,规则过松可能漏报,过严则容易误报(如某些正常的工具软件可能触发规则)。
  • 应用场景:杀毒软件的 “深度扫描” 模式、未知威胁预警系统。
  1. 基于机器学习的检测方法
  • 原理:分为 “训练” 和 “检测” 两个阶段。
    训练阶段:收集海量标注数据(包括恶意软件样本和正常软件样本),提取数据的特征(如静态的文件结构特征、动态的 API 调用序列特征),使用算法(如决策树、支持向量机、神经网络)训练检测模型,让模型学会区分 “恶意” 和 “正常”。
    检测阶段:将待检测文件的特征输入训练好的模型,模型输出 “恶意概率” 或 “分类结果”,以此判断文件是否为恶意软件。
  • 常见特征类型:
    静态特征:文件大小、PE 文件头信息、导入的 API 函数列表、字符串熵值(恶意软件通常熵值更高,因包含加密代码)。
    动态特征:API 调用次数、进程创建数量、网络连接频率等行为统计数据。
  • 优势:能自动学习新的恶意模式,适应恶意软件的快速变异,检测效率高,可处理海量数据。
  • 劣势:依赖高质量的标注样本(样本不足或标注错误会影响模型 accuracy),模型可能被 “对抗样本”(恶意软件通过微调特征欺骗模型)绕过,且对普通用户而言 “黑箱性” 强,难以解释检测结果。
  • 应用场景:云安全检测平台(如邮件网关、Web 应用防火墙)、大规模终端安全管理系统。
  1. 基于沙箱的检测方法
  • 原理:
    环境搭建:创建与真实系统相似但隔离的虚拟环境(如虚拟机、容器),屏蔽与真实硬件、网络的直接交互(如限制对外网络连接、禁止修改真实系统文件)。
    样本执行:将待检测的可疑程序放入沙箱,模拟用户正常操作(如双击运行、打开文档),让程序充分执行。
    行为捕获:记录程序在沙箱内的所有行为,包括文件创建 / 修改、注册表操作、进程活动、网络请求、内存操作等,并生成详细的行为报告。
    恶意判定:根据行为报告,结合预设规则(如是否出现加密文件、创建后门、窃取敏感信息)或机器学习模型,判断程序是否为恶意软件。
  • 优势:可安全地分析未知恶意软件,避免其对真实系统造成破坏;能捕获程序的完整行为,减少 “表面无害、后台作恶” 的漏报情况。
  • 劣势:检测耗时较长(需等待程序充分执行,通常需要几分钟到几十分钟),资源占用高(每个沙箱需独立分配计算资源),可能被 “沙箱检测技术” 绕过(恶意软件通过检测虚拟环境特征,发现处于沙箱时不执行恶意行为)。
  • 应用场景:可疑文件深度分析(如邮件附件、下载的未知文件)、零日恶意软件样本取证、安全研究机构的恶意软件分析。

四、取证分析实践

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

  • IRC(Internet Relay Chat)是一种基于文本的实时通信协议,允许用户通过服务器连接形成的网络进行群聊或私聊。
  • 客户端申请加入IRC网络时发送的核心消息是 NICK(设置昵称)和 USER(设置用户信息)。
  • 常用TCP端口:默认未加密端口 6667,加密(SSL/TLS)端口 6697,部分服务器也使用6660-6669等端口范围。

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

  • 僵尸网络是由攻击者通过恶意软件控制的大量受感染设备(如电脑、手机)组成的远程操控网络,这些设备被称为“僵尸机”。
  • 僵尸网络通常用于三类活动:
    1. 发起网络攻击,如分布式拒绝服务(DDoS)攻击,瘫痪目标服务器。
    2. 进行恶意活动,如发送垃圾邮件、传播恶意软件、窃取用户敏感信息(账号、密码)。
    3. 利用资源牟利,如占用僵尸机算力进行非法挖矿,或出租网络资源给其他攻击者。

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

  • 蜜罐主机与IP地址为209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10的IRC服务器进行了通信

在Wireshark中打开botnet_pcap_file.dat文件,通过命令ip.src172.16.134.191 and tcp.dstport6667,筛选源IP为172.16.134.191,目的端口为6667的数据包

22

经过图可知,蜜罐主机与4台IRC服务器进行通信,IRC服务器的IP分别是209.126.161.29、66.33.65.58、63.241.174.144、217.199.175.10

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

  • 有3461个不同的主机访问了这一僵尸网络

通过命令tcpflow -r botnet_pcap_file.dat “host 209.196.44.172 and port 6667”。使用tcpflow,从botnet_pcap_file.dat文件中,筛选出与IP为209.196.44.172且端口为6667的主机相关的所有TCP流量数据

23

执行后,tcpflow会生成report.xml报告文件,包含了TCP流量的统计信息。此外还会生成独立的TCP连接流文件

在僵尸网络场景中,受感染的主机会主动去连接服务器。因此,此处需要查找源IP为209.196.44.172的文件,使用命令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,精确统计访问僵尸网络服务器的不同客户端数量

24

从返回数据可知,共有3461台不同的主机访问了以209.196.44.172为服务器的僵尸网络

(5)哪些IP地址被用于攻击蜜罐主机?

  • 共有165个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 > 20232407.txt;wc -l 20232407.txt
查看输出的20232407.txt文件,即可查看详细数据,可以看到共有165个IP地址被用于攻击蜜罐主机。

25

26

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

在Wireshark中打开将botnet_pcap_file.dat文件,选择统计-->协议分级统计,分析网络流量中各种协议的分布情况和层次结构

27

可以看到攻击者大部分使用了TCP数据包(占比约99.7%),也有使用少量的UDP数据包(占比约0.3%)

输入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 | uniq

筛选主机172.16.134.191发起的所有TCP连接的源端口号如下

28

输入tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq

筛选主机172.16.134.191发送的所有UDP数据包的源端口号如下

29

对于TCP的分析结果可知,使用的端口有135(RPC,Windows远程过程调用)、139/445(SMB,Windows文件共享)、25(SMTP,简单邮件传输协议)、4899(Remote Administrator,远程控制软件)、80(HTTP,网页服务)。对于UDP的分析结果可知,使用的端口为137(NetBIOS,Windows网络邻居功能)

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

  • TCP连接的445端口、4899端口、80端口成功了
1.TCP连接135端口

输入ip.addr==172.16.134.191 and tcp.port==135

30

经分析可知,对于TCP连接的135端口,只有三次握手的数据包,而没有后续的恶意数据包,且客户端很快发送FIN请求断开连接。因此135端口虽被成功连接,但未被成功利用

2.TCP连接139端口

输入ip.addr==172.16.134.191 and tcp.port==139

31

139端口建立了完整的三次握手,且攻击者尝试访问共享目录\PC0191\c,但服务器返回RST拒绝。通过观察发现后续也没有恶意数据包的传输。所以可以判断139端口未被利用。

3.TCP连接25端口

输入ip.addr==172.16.134.191 and tcp.port==25

32

经分析可知,对于TCP连接的25端口,具有三次握手的数据包。但接建立后,没有后续的恶意数据包,且服务器很快发送FIN,ACK请求断开连接。因此25端口虽然被成功连接,但未被成功利用。

4.TCP连接445端口

输入ip.addr==172.16.134.191 and tcp.port==445

33

外部主机195.36.247.77向172.16.134.191:445发起TCP三次握手,进行了NTLMSSP认证协商且通过认证,发起Tree Connect请求以访问共享资源。

此外,多个源IP向目标172.16.134.191:445发起大量SMB请求,其中包含了重复的NTLMSSP认证、Tree Connect到不同路径以及大量的SAMR/DCE/RPC操作,这可能是横向移动或扫描行为。

34

最后,攻击者通过445端口的SMB协议,成功删除了目标主机172.16.134.191上路径为C:\System32\PSEXESVC.EXE的文件。

而PSEXESVC.EXE是Windows系统中PsExec工具用于远程执行命令的服务端组件,删除该文件会导致PsExec无法正常工作,可能是攻击者为清除痕迹或阻止后续检测而采取的行动。

说明TCP连接的445端口,已被攻击者成功利用。

5.TCP连接4899端口

输入ip.addr==172.16.134.191 and tcp.port==4899

35

外部主机向172.16.134.191:4899发起TCP三次握手,随后发送了大量rbakcupl > radmin-port [PSH,ACK]数据包,表示攻击者通过4899端口持续传输数据。而PSH表示“紧急需要立即处理的数据”,说明攻击者已建立稳定的通信通道

36

最后,攻击者通过HTTP请求,发送目录遍历攻击HEAD /cgi/../../../../../winnt/system32/cmd.exe?/c+dir

37

说明TCP连接的4899端口,已被攻击者成功利用。

6.TCP连接80端口

输入ip.addr==172.16.134.191 and tcp.port==80

38

在正常的TCP三次握手后,攻击者向80端口发送了由大量字符“c”组成的数据包,这是一个缓冲区溢出的攻击载荷。且在攻击包发送后,服务器没有返回任何RST或ICMP错误信息,说明服务器接收并处理了这个恶意请求。同时,在攻击之后,客户端和服务器之间还有正常的HTTP通信,虽然此次攻击没有导致服务崩溃,但攻击者可能已在服务器中植入后门或维持了访问权限,使得服务器被控制。

39

说明对于TCP连接的80端口,已被攻击者成功利用

7.UDP连接137端口

输入ip.addr==172.16.134.191 and udp.port==137

40

经分析可知,对于UDP连接的137端口,虽然具有大量的NetBIOS服务扫描活动,但数据包内容均为正常的名称查询与响应,未包含任何攻击载荷,应当未被攻击者成功利用。

3.问题及解决方案

  • 问题1:我的电脑(Win11)无法下载学习通提供的IDA Pro
  • 问题1解决方案:以管理员身份运行即可

4.学习感悟、思考等

通过本次实验,主要是对于恶意代码的认识上升了一个等次。本次实验涉及到了后门程序、木马程序、僵尸网络、蠕虫病毒等一系列恶意代码程序,可以说是为我之后的学习打下了良好的基础。但是在本次实验中也暴露出了对于恶意代码分析所需要使用的各种工具的不熟练,在各个工具进行操作的时候,可能会出现找不到功能,或者是看不懂页面等等一系列的问题,但是最后都通过自己的努力进行了解决。总的来说,我对于各种恶意代码之间的分别以及如何识别不同的恶意代码都有了很深的体会,现在如果给我一个恶意的软件或者是程序,我也能按照一定的方法对其进行分析,虽然没有特别的深入,但是基本的信息也是都能获得到,对于其目的、特性等等的掌握也都有所心得。

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

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

相关文章

怎么设计一个好的Selenium/Appium 自动化框架? 需要考虑哪些问题

架构原则:分层(Test / PageObjects / Services/API / Utils / Drivers / Data),单一职责,易扩展、易维护。测试用例组织:小而独立、幂等、可重跑。按功能/模块/标签分组,支持并行与分布式执行。抽象驱动层:统一…

AIChatManager 应用功能总结

AIChatManager 应用功能总结 概述Qoder生成的应用,浏览器打开html即可使用,无服务无后台,部分功能不太完善,欢迎自行补充完善AIChatManager 是一个功能完整的AI聊天应用,采用纯前端架构,支持多种AI模型提供商(O…

[Doris] 度言软件:复杂查询响应速度提升10+倍,基于 Apache Doris 实时数仓建设实践 [转]

0 序原始作者 | 杭州度言软件大数据团队 发布时间 | 2022.12.27杭州度言软件有限公司(度言软件)成立于2014年,是信贷不良资产处置技术服务供应商,以“智能科技赋能不良资产处置,推动贷后行业合规高效发展”为使命…

第15天(中等题 滑动窗口)

打卡第十五天 2道中等题恰好型滑动窗口:耗时≈一小时 明天继续

Rust-闭包

一、Rust 闭包基础 1. 什么是闭包 闭包是能捕获其定义环境中变量的匿名函数。 // 基本语法 let closure = |x: i32| x + 1; let result = closure(5); // 6// 多参数 let add = |x, y| x + y; let sum = add(3, 4); //…

[docker note]

# ==== Docker 傻瓜式笔记 ==== # 一句话总结:Docker 是用来"装程序的盒子",让程序在任何电脑上都能一模一样地运行 # 核心概念: # 1. 镜像(Image):"盒子的模板",包含程序和运行环境(比如一…

数据加工1

一、数据连接 1. 数据库连接 2. 上传数据文件 3. 管理数据源:左上角项目名 → 右键 → 返回项目列表 → 数据源 二、数据导入(将数据库下的物理表导入为数据模型) 新建 → 数据库表模型 → 搜索 → 导入目录 → 连接…

异常介绍

如果代码没有语法问题,可以运行,但会出运行时的错误,例如除零错误,下标越界等问题,这种在运行期间检测到的错误被称为异常。 出现了异常必须处理,否则程序会终止执行,用户体验会很差。 Phthon 支持程序员自己处…

AE学习

AE学习 1. 音乐时间调整 合成设置再把图层向右拖拽即可

微服务的挑战与优势,什么时候上微服务?

我不排除微服务,但是我想说不要为微服务而微服务。曾经在一个公司做一个物流系统,每天的单都不到100 200单,直接上微服务,除了高大上和给公司带来更大的支出外,别无好处,这个量直接单体应用都撑得住。有时候简单…

利用 chrome-devtools MCP 让 AI 操作便携版浏览器(可指定 Data)

利用 chrome-devtools MCP 让 AI 操作便携版浏览器(可指定 Data)说明:文中出现的具体视频链接、演示路径、用户名、端口号等均为示例,读者需按需替换。 1. 需求 (1)使用 chrome-devtools-mcp 打开 https://www.b…

[OLAP] 技术选型对比:Clickhouse vs Doris

0 序Doris和ClickHouse是两款热门的OLAP数据库,它们在架构、功能、性能和易用性等方面存在差异1 架构设计Doris:采用MPP架构,分为Frontend(FE)和Backend(BE)节点。FE 负责元数据管理和查询规划,BE 负责数据存储…

计算天数

程序示例: # date = input(Enter a date: ) # 2024-12-21 # year = int(date[0:4]) # month = int(date[5:7]) # day = int(date[8:]) date = input(Enter a date: ).split("-") year = int(date[0]) month…

「学习笔记」正则表达式

正则表达式 正则表达式(Regular Expression,简称 Regex 或 RegExp)是一种用来匹配字符串中字符组合的模式。 正则表达式是一种用于模式匹配和搜索文本的工具。 正则表达式提供了一种灵活且强大的方式来查找、替换、…

11月4日日记

1.今天工程实训学习了铁道的基本知识 2.明天先学习离散数学,然后是马哲 3.数据库连接如何通过 Java Bean 封装实现 “配置与代码分离”?

三、字符设备驱动(基于北京迅为电子)

一、概述 字符设备的驱动包括设备号、字符设备结构体、自动创建设备节点、fops结构体 二、知识点设备号:一个32bit的数据,高12bit表示主设备号,低20bit表示次设备号 宏定义:MAJOR(dev),MINOR(dev),MKDEV(ma,mi) 分…

使用1panel一键建站

摘要 文章最初发布于:使用1panel一键建站 使用宝塔建站时,因为测试用的SSL证书迟迟无法申请成功。偶然发现1Panel可以丝滑申请泛域名证书,并且能自动续签。果断尝试以下,以下是一些踩坑记录。 坑1、SSL。宝塔泛域名…

React 中 useCallback 的基本使用和原理解析

React 中 useCallback 的基本使用方法 useCallback 是 React 的一个核心 Hook,用于​缓存函数定义​,避免组件重新渲染时重复创建函数实例。以下是其基本使用方法: 1. 基本语法 const memoizedCallback = useCallba…

SpringCloud和K8s实现的微服务各有什么优缺点

Spring Cloud 强调应用层解决方案,开发友好,适合 JVM 业务逻辑集中的团队;Kubernetes 原生(配合 Service/Ingress、Envoy/istio 等)倾向平台化、基础设施侧解决,适合容器化、跨语言、大规模生产环境。1. 核心理念…

Zabbix告警:value cache working in low memory mode

随着监测主机的增加,Zabbix 在使用一段时间后告警提示 value cache working in low memory mode(值缓存处于低内存模式下运行)。Value cache(值缓存) 是用于存储监控项最近取值的内存区域,它能加快趋势计算、触发…