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

利用XLL文件投递Qbot银行木马的钓鱼活动分析

1概述

近期,安天CERT发现了一起利用恶意Microsoft
Excel加载项(XLL)文件投递Qbot银行木马的恶意活动。攻击者通过发送垃圾邮件来诱导用户打开附件中的XLL文件,一旦用户安装并激活Microsoft
Excel加载项,恶意代码将被执行。随后,恶意代码会在用户主机上进行层层解密,最终释放出Qbot银行木马。

自2023年2月微软宣布默认阻止Office文档中的宏之后,攻击者尝试使用其他类型的文件作为传播恶意软件的新型媒介。利用XLL文件传播恶意文件的网络钓鱼活动于2021年底开始增多,目前已有Dridex、Qbot、Formbook、AgentTesla等多个恶意代码家族利用XLL文件进行传播,受害者打开XLL文件时,将启动Excel,并将XLL文件作为Excel加载项加载执行,绕过了Office宏文档的限制。

Qbot银行木马于2008年出现,自2020年4月开始进入活跃状态,主要通过垃圾邮件进行传播。2021年2月,安天CERT发布《Qbot银行木马2020年活动分析报告》[1]。该银行木马在执行过程中多次解密,利用加载器加载执行恶意功能躲避反病毒软件的静态查杀,利用计划任务实现自启动,能够在受害主机上获取屏幕截图、收集目标系统信息和获取浏览器Cookie信息等。攻击者还能够利用从用户处窃取的数据实施后续的攻击活动。

经验证,安天智甲终端防御系统(简称IEP)可实现对该银行木马的有效查杀。# 2事件对应的ATT&CK映射图谱

针对攻击者投递银行木马的完整过程,安天梳理本次攻击事件对应的ATT&CK映射图谱如下图所示:

图 2‑1技术特点对应ATT&CK的映射

攻击者使用的技术点如下表所示:

表 2‑1事件对应的ATT&CK技术行为描述表

ATT &CK 阶段 / 类别

|

具体行为

|

注释—|—|— 初始访问

|

网络钓鱼

|

通过钓鱼邮件传播 执行

|

利用命令和脚本解释器

|

利用命令执行XLL文件诱导用户执行

|

诱导用户执行恶意文件 持久化

|

利用自动启动执行引导或登录

|

添加注册表自启动项利用计划任务/工作

|

创建计划任务实现持久化 防御规避

|

反混淆/解码文件或信息

|

解码多层载荷信息删除主机中的信标

|

删除创建的远程服务和共享文件夹下的样本执行流程劫持

|

劫持系统进程进程注入

|

注入最终的银行木马规避调试器

|

判断是否存在调试器 凭证访问

|

不安全的凭证

|

获取不安全的应用软件、注册表中的凭证 发现

|

规避调试器

|

发现调试器工具进程发现文件和目录

|

在指定目录中发现应用软件发现系统信息

|

发现系统信息发现系统时间

|

发现系统时间 横向移动

|

利用远程服务

|

在远程计算机上启动服务污染共享内容

|

将自身复制到共享文件夹中 收集

|

收集本地系统数据

|

收集本地系统数据获取屏幕截图

|

获取屏幕截图 命令与控制

|

使用应用层协议

|

使用HTTPS协议 数据渗出

|

使用C2信道回传

|

使用C2信道回传数据## 3防护建议

为有效防御此类攻击事件,提升安全防护水平,安天建议企业采取如下防护措施:

3.1识别钓鱼邮件* 查看邮件发件人:警惕发送“公务邮件”的非组织的发件人;* 看收件人地址:警惕群发邮件,可联系发件人确认;* 看发件时间:警惕非工作时间发送的邮件;* 看邮件标题:警惕具备“订单”、“票据”、“工资补贴”、“采购”等关键词的标题的邮件;* 看正文措辞:警惕以“亲”、“亲爱的用户”、“亲爱的同事”等较为泛化问候的邮件;* 看正文目的:警惕以“系统升级”、“系统维护”、“安全设置”等名义索取邮箱账号密码的邮件;* 看正文内容:警惕其中附带的网页链接,特别是短链接;* 看附件内容:查看前,须使用防毒软件对附件进行病毒扫描监测。

3.2日常邮箱安全使用防护* 安装终端防护软件:安装终端防护软件,开启防护软件中对邮件附件的扫描检测功能,定期对系统进行安全检测,修复系统漏洞。* 邮箱登录口令:邮箱登录口令设置时确保具备一定复杂性(包含三种字符元素),确保口令不记录于办公区明显位置,定期修改登录口令。* 邮箱账号要绑定手机:邮箱账号绑定手机后,不仅可以找回密码,还可以接收“异常登录”的提示短信,即时处置。* 重要文件要做好防护:1. 及时清空收件箱、发件箱和垃圾箱内不再使用的重要邮件;2. 备份重要文件,防止被攻击后文件丢失;3. 重要邮件或附件应加密发送,且正文中不能附带解密密码。* 敏感信息要保护:不要将敏感信息发布到互联网上,用户发布到互联网上的信息和数据会被攻击者收集。攻击者可以通过分析这些信息和数据,有针对性的向用户发送钓鱼邮件。

3.3政企机构防护* 安装终端防护软件:安装反病毒软件,建议安装安天智甲终端防御系统;* 加强口令强度:避免使用弱口令,建议使用16位或更长的口令,包括大小写字母、数字和符号在内的组合,同时避免多个服务器使用相同口令;* 关闭PowerShell:若一定时间内不使用PowerShell命令行工具,建议将其关闭;* 部署入侵检测系统(IDS):部署流量监控类软件或设备,便于对恶意代码的发现与追踪溯源。安天探海威胁检测系统(PTD)以网络流量为检测分析对象,能精准检测出已知海量恶意代码和网络攻击活动,有效发现网络可疑行为、资产和各类未知威胁;* 安天服务:若遭受恶意软件攻击,建议及时隔离被攻击主机,并保护现场等待安全工程师对计算机进行排查;安天7*24小时服务热线:400-840-9234。

经验证,安天智甲终端防御系统(简称IEP)可实现对该银行木马的有效查杀。

图 3‑1安天智甲实现对用户系统的有效查杀# 4攻击流程

4.1攻击流程图

攻击者传播垃圾邮件,诱导用户打开附件中的XLL文件(Agreement_487989a_Mar4.xll),Excel执行包含恶意代码的导出函数xlAutoOpen,恶意代码解密出后续的载荷并执行,创建进程执行cmd命令将从资源中解密的XLL文件写入目标文件3.dat中,创建计划任务自动化执行最终样本,最终样本将自身注入到wermgr.exe进程,劫持执行流程实现获取系统信息、获取磁盘驱动信息、获取屏幕截图、创建管道监视连接、反调试、判断环境中是否存在调试工具和杀毒软件进程等功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FNho09SB-1691676868472)(https://image.3001.net/images/20230427/1682566169_6449ec19e4ff3fe78b1fc.png!small)]

图 4‑1攻击流程图### 4.2利用XLL文件传播恶意文件

攻击者向用户发送垃圾邮件,诱导用户打开附件中的XLL文件。

图 4‑2 携带恶意代码的XLL文件用户打开XLL文件后,Windows资源管理器将自动启动Excel打开XLL文件,在加载XLL文件之前,Excel会显示一条警告,指出可能包含恶意代码并提示用户安装和激活加载项。

图 4‑3 打开XLL文档就文件类型而言,XLL文件是标准的Windows动态加载库(dll)。为了使Excel加载项管理器成功加载XLL文件,XLL文件必须实现至少一个导出函数(称为xlAutoOpen),以便在Excel加载XLL文件时调用代码。攻击者通常将恶意代码置于xlAutoOpen函数中,该函数会在加载项被激活时立即触发执行。这意味着,与要求用户启用宏的VBA宏不同,受害者只要打开XLL文件就会执行恶意代码[2]。

图 4‑4 xlAutoOpen函数# 5样本分析

攻击者通过发送垃圾邮件来诱导用户打开附件中的XLL文件,一旦用户安装并激活Microsoft
Excel加载项,恶意代码将被执行。随后,恶意代码会在用户主机上进行层层解密,最终释放出Qbot银行木马。

Qbot银行木马具有在受害主机上获取屏幕截图、获取目标系统信息、获取浏览器Cookie信息等功能。银行木马在执行过程中通过多层解密、利用加载器加载解密文件躲避反病毒软件的静态查杀、利用计划任务实现自启动、最终实现搜集和监控等恶意行为,将敏感数据按照攻击者的需求进行传输,攻击者还能够利用从用户处窃取的数据实施后续的攻击活动。

5.1样本标签

表 5‑1样本标签

恶意代码名称

|

Trojan[Spy]/Win64.Qbot—|— 原始文件名

|

Agreement_487989a_Mar4.xll MD5

|

20746C3BB01AA4DEEA993824F947194D 处理器架构

|

Advanced Micro Devices X86-64 文件大小

|

2.28 MB (239,1552 字节) 文件格式

|

BinExecute/Microsoft.EXE[:X64] 时间戳

|

2023-03-15 00:10:15 数字签名

|

加壳类型

|

编译语言

|

Microsoft Visual C++ VT 首次上传时间

|

2023-03-14 20:20:02 VT 检测结果

|

47/69###

5.2第一层代码-解密Shellcode

Agreement_487989a_Mar4.xll文件执行后会从内存中循环解密出加载器和一个dll文件,解密算法如下图。

图 5‑1 xlAutoOpen函数解密执行加载器加载器在内存中加载执行dll文件。

图 5‑2加载器执行dll### 5.3第二层代码-dll文件

dll文件搜索资源数据并加载到内存中解密,创建1.dat、2.dat文件,将解密出的数据前400字节写入1.dat文件,剩余字节写入2.dat文件。

图 5‑3解密数据写入文件dll文件解密并拼接出命令,创建进程执行命令。其功能为读取1.dat、2.dat文件内容写入到3.dat中,利用rundll32.exe执行3.dat文件导出函数xlAutoOpen。根据导出函数可知3.dat文件也是XLL文件。

图 5‑4释放文件3.dat并执行dll文件获取系统时间,解密并拼接出命令,创建进程执行命令。其功能为使用schtasks.exe将3.dat添加到计划任务,任务名设置为QQQ。

图 5‑5创建计划任务实现自启动### 5.4第三层代码-3.dat

3.dat文件是XLL文件,通过rundll32.exe调用xlAutoOpen函数执行,与Agreement_487989a_Mar4.xll相似,xlAutoOpen函数都利用多次循环异或解密出加载器和一个dll文件,加载器将dll文件在内存中展开,修改重定位表,修改导出表,跳转到dll导出函数执行,与原始样本不同的是,原始样本的加载器存在大量混淆。将解密出的pe文件dump下来命名Qbot.dll,后续分析报告中都使用此命名。

图 5‑6执行解密出的dll文件### 5.5第四层代码-Qbot.dll

Qbot.dll文件主要执行以下几个功能:反调试、获取系统信息、查询杀毒软件进程、重启进程、将自身代码注入到wermgr.exe进程执行核心模块。

通过NtCurrentPeb获取peb,利用BeingDebugged成员进行反调试。如果存在调试器则修改key,影响样本的解密函数。

图 5‑7利用BeingDebugged反调试Qbot银行木马获取访问令牌中的组成员身份。

图 5‑8获取访问令牌中的组成员身份Qbot银行木马判断当前进程是否为管理员权限。

图 5‑9判断当前进程是否为管理员权限Qbot银行木马获取进程的RID信息,如果RID<0x2000,含义为不受信任或低完整性。

图 5‑10获取RID图当RID<0x2000时,Qbot银行木马获取版本信息、环境变量信息、计算机名等系统信息。

图5‑11获取系统信息图Qbot银行木马枚举当前系统进程,查询是否有诸如ccSvcHst.exe、NortonSecurity.exe、nsWscSvc.exe、avgcsrvx.exe、avgsvcx.exe等杀毒软件进程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AClDVfrI-1691676868476)(https://image.3001.net/images/20230427/1682565920_6449eb2093d7d3bc41d8c.png!small)]

图 5‑12查询杀毒软件进程Qbot银行木马解密出杀毒软件进程字符串。

图 5‑13杀毒软件进程字符串Qbot银行木马检测自身运行权限,获取一个管理员权限的当前窗口的句柄,以管理员权限重启进程。

图 5‑14检测自身运行权限Qbot银行木马以挂起的方式创建wermgr.exe进程。

图 5‑15挂起的方式创建wermgr.exe进程Qbot银行木马将自身注入到wermgr.exe进程中,修改重定位表,调用GetThreadContext函数获取入口函数地址。

图 5‑16获取Context结构体wermgr.exe进程主要实现以下几个功能:获取磁盘驱动信息、创建多个子线程并将这些子线程的优先级设置为低于正常、反调试、动态获取加密相关函数、屏幕截图、创建命名管道并监视、与C2服务器建立连接回传数据等功能。

wermgr.exe进程获取磁盘驱动信息。

图 5‑17获取磁盘驱动信息wermgr.exe进程获取系统所有账户名称。

图 5‑18获取系统所有账户名称wermgr.exe进程 创建子线程,当子线程启动时,将线程优先级设置为低于正常值。

图 5‑19创建子线程wermgr.exe进程枚举当前系统进程,查询是否有诸如Fiddler.exe、Autoruns.exe等分析工具。判断是否存在调试器,若判断存在调试器则对解密算法的KEY进行异或操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSc20kOc-1691676868478)(https://image.3001.net/images/20230427/1682565735_6449ea67ed242a9ae4fc2.png!small)]

图 5‑20查询分析工具进程、反调试wermgr.exe进程解密出分析工具进程字符串。

图 5‑21分析工具进程字符串wermgr.exe进程利用BitBlt等API获取屏幕截图。

图 5‑22获取屏幕截图wermgr.exe进程创建命名管道\\\\.\\pipe\%ssp,当此管道被连接时,创建子线程来监视和处理数据。

图 5‑23创建命名管道wermgr.exe进程从资源中解密得到以下IP地址和端口,用于构建通信隧道。

表 5‑1解密后的IP地址和端口

IP 地址

|

IP 地址

|

IP 地址—|—|—92.239.81.124:443

|

176.202.46.81:443

|

2.49.58.47:222274.66.134.24:443

|

213.31.90.183:2222

|

12.172.173.82:5000170.53.96.223:995

|

92.154.45.81:2222

|

186.64.67.54:443190.191.35.122:443

|

68.173.170.110:8443

|

12.172.173.82:99312.172.173.82:22

|

37.186.55.60:2222

|

84.216.198.124:688194.30.98.134:32100

|

78.196.246.32:443

|

12.172.173.82:995173.18.126.3:443

|

201.244.108.183:995

|

24.178.201.230:2222151.65.134.135:443

|

197.14.148.149:443

|

197.244.108.123:44386.130.9.213:2222

|

190.75.139.66:2222

|

213.67.255.57:2222189.222.53.217:443

|

122.184.143.84:443

|

92.159.173.52:222291.68.227.219:443

|

86.236.114.212:2222

|

80.12.88.148:222273.36.196.11:443

|

47.196.225.236:443

|

65.95.49.237:2222184.176.35.223:2222

|

186.48.181.17:995

|

2.14.105.160:2222190.218.125.145:443

|

109.11.175.42:2222

|

23.251.92.171:222275.156.125.215:995

|

184.189.41.80:443

|

31.48.18.52:44370.51.152.61:2222

|

47.203.229.168:443

|

104.35.24.154:44392.154.17.149:2222

|

103.169.83.89:443

|

86.169.103.3:44392.1.170.110:995

|

183.87.163.165:443

|

85.241.180.94:44392.20.204.198:2222

|

103.141.50.102:995

|

81.229.117.95:222247.34.30.133:443

|

173.178.151.233:443

|

47.16.77.194:222276.80.180.154:995

|

67.70.23.222:2222

|

24.117.237.157:44387.202.101.164:50000

|

64.237.245.195:443

|

103.231.216.238:443103.71.21.107:443

|

71.65.145.108:443

|

12.172.173.82:465184.153.132.82:443

|

86.178.33.20:2222

|

94.200.183.66:222298.159.33.25:443

|

136.35.241.159:443

|

24.187.145.201:222265.94.87.200:2222

|

184.176.110.61:61202

|

49.245.82.178:222246.10.198.134:443

|

84.35.26.14:995

|

103.252.7.231:443139.5.239.14:443

|

202.142.98.62:443

|

27.109.19.90:207875.143.236.149:443

|

50.68.204.71:993

|

91.169.12.198:3210024.239.69.244:443

|

12.172.173.82:21

|

174.104.184.149:44386.225.214.138:2222

|

202.187.87.178:995

|

81.158.112.20:222298.145.23.67:443

|

73.161.176.218:443

|

88.122.133.88:3210076.27.40.189:443

|

201.137.185.109:443

|

90.104.22.28:2222178.175.187.254:443

|

12.172.173.82:2087

|

208.180.17.32:2222196.70.212.80:443

|

103.12.133.134:2222

|

190.28.116.106:44392.27.86.48:2222

|

76.170.252.153:995

|

50.68.204.71:99583.92.85.93:443

|

35.143.97.145:995

|

74.93.148.97:99572.80.7.6:50003

|

70.55.187.152:2222

|

72.88.245.71:44312.172.173.82:32101

|

187.199.103.21:32103

|

86.190.223.11:222288.126.94.4:50000

|

116.72.250.18:443

|## 6总结

自2023年2月微软宣布默认阻止Office文档中的宏之后,攻击者转变投递恶意文件的方式,将XLL文件作为一种传播恶意文件的新型媒介。攻击者向用户发送垃圾邮件,诱导用户打开附件中的XLL文件执行恶意代码,从而在用户主机上运行银行木马、远控木马等恶意软件。

在此建议用户不要轻易相信未知邮件中的内容,对邮件的来源进行确认,并警惕邮件中具有诱导性的内容。安天CERT将持续关注攻击者的新型攻击手段,并对相关攻击活动进行深入分析与研究。

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

一些我收集的网络安全自学入门书籍

一些我白嫖到的不错的视频教程:

上述资料【扫下方二维码】就可以领取了,无偿分享

相关文章:

利用XLL文件投递Qbot银行木马的钓鱼活动分析

1概述 近期&#xff0c;安天CERT发现了一起利用恶意Microsoft Excel加载项&#xff08;XLL&#xff09;文件投递Qbot银行木马的恶意活动。攻击者通过发送垃圾邮件来诱导用户打开附件中的XLL文件&#xff0c;一旦用户安装并激活Microsoft Excel加载项&#xff0c;恶意代码将被执…...

2023CNSS——WEB题解(持续更新)

[Baby] SignIn 进来看到 按钮点击不了&#xff0c;想到去修改代码&#xff0c;要“检查“&#xff0c;但这里的右键和F12都不可用 还好还有其他方法 检查的各种方法 选用一种后进入检查页面 删掉这里的disabled即可 点击后得到flag [Baby] Backdoor 进入&#xff0c…...

Unity之ShaderGraph 节点介绍 数学节点

数学 高级Absolute&#xff08;绝对值&#xff09;Exponential&#xff08;幂&#xff09;Length&#xff08;长度&#xff09;Log&#xff08;对数&#xff09;Modulo&#xff08;余数&#xff09;Negate&#xff08;相反数&#xff09;Normalize&#xff08;标准化矢量&…...

springboot mongo 使用

nosql对我来说&#xff0c;就是用它的变动列&#xff0c;如果列是固定的&#xff0c;我为什么不用mysql这种关系型数据库呢&#xff1f; 所以&#xff0c;现在网上搜出来的大部分&#xff0c;用实体类去接的做法&#xff0c;并不适合我的需求。 所以&#xff0c;整理记录一下…...

如何使用appuploader制作apple证书​

转载&#xff1a;如何使用appuploader制作apple证书​ 如何使用appuploader制作apple证书​ 一.证书管理​ 点击首页的证书管理 二.新建证书​ 点击“添加”&#xff0c;新建一个证书文件 免费账号制作证书只有7天有效期&#xff0c;没有推送消息功能&#xff0c;推送证书…...

Promise详细版

promise基础原理到难点分析 常见的Promise的方法解读 扩展async和await深入分析 逐步分析Promise底层逻辑代码 一、Promise基础 1.什么是promise 为了解决回调地狱&#xff1a; //2.设置点击事件btn.onclick function() {//3.创建ajax实例化对象let xhr new XMLHttpRe…...

v-for循环生成的盒子只改变当前选中的盒子的样式

1.给盒子添加动态属性:class"[index isActive?active-box:choose-box]" <div v-for"(item,index) in zyList" :key"item.sid" :class"[index isActive?active-box:choose-box]" click"getKmList(item,index)"…...

Spring Data JPA源码

导读: 什么是Spring Data JPA? 要解释这个问题,我们先将Spring Data JPA拆成两个部分&#xff0c;即Sping Data和JPA。 从这两个部分来解释。 Spring Data是什么? 摘自: https://spring.io/projects/spring-data Spring Data’s mission is to provide a familiar and cons…...

如何防止CSRF攻击

背景 随着互联网的高速发展&#xff0c;信息安全问题已经成为企业最为关注的焦点之一&#xff0c;而前端又是引发企业安全问题的高危据点。在移动互联网时代&#xff0c;前端人员除了传统的 XSS、CSRF 等安全问题之外&#xff0c;又时常遭遇网络劫持、非法调用 Hybrid API 等新…...

linuxARM裸机学习笔记(7)----RTC实时时钟实验

基础概念&#xff1a; I.MX6U 内部也有个RTC 模块&#xff0c;但是不叫作“ RTC ”&#xff0c;而是叫做“ SNVS ”。 SNVS 直译过来就是安全的非易性存储&#xff0c; SNVS 里面主要是一些低功耗的外设&#xff0c;包括一个 安全的实时计数器 (RTC) 、一个单调计数器 (mo…...

NSS [UUCTF 2022 新生赛]ez_upload

NSS [UUCTF 2022 新生赛]ez_upload 考点&#xff1a;Apache解析漏洞 开题就是标准的上传框 起手式就是传入一个php文件&#xff0c;非常正常的有过滤。 .txt、.user.ini、.txxx都被过滤了&#xff0c;应该是白名单或者黑名单加MIME过滤&#xff0c;只允许.jpg、.png。 猜测二…...

【操作系统】操作系统知识点总结(秋招篇)

文章目录 前言操作系统主要做了哪些工作&#xff1f;进程 线程 协程之间的区别进程的组成部分介绍一下进程的PCB讲一下进程的五态 以及它们的状态转移用户态和内核态是什么&#xff1f;进程在用户态和内核态之间是如何切换的讲一下进程之间的通信方式讲一下进程调度的三个层次介…...

篇十九:迭代器模式:遍历集合

篇十九&#xff1a;"迭代器模式&#xff1a;遍历集合" 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...

浅谈JVM中的即时编译器(Just-In-Time compiler, JIT)

Java虚拟机&#xff08;JVM&#xff09;中的即时编译器&#xff08;Just-In-Time compiler, JIT&#xff09;是一个非常重要的组件&#xff0c;它负责将字节码转换为本地机器代码。在不使用JIT的情况下&#xff0c;JVM通过解释字节码来执行程序&#xff0c;这意味着它会为每个字…...

Android 13 Launcher——长按图标弹窗内容修改以及小组件等隐藏起来

目录 一.背景 二.实现思路 三.布局文件修改 四.隐藏代码中原先的view 一.背景 由于定制化开发需要将原先的长按图标原生弹窗界面隐藏,然后显示自定义的弹窗界面,如下就是我们来实现自定义的弹窗界面...

又一个不可错过的编程大模型来了让你惊呼“码农人生”不虚此行

继Stable Diffusion爆火之后&#xff0c;StabilityAI近期又放大招&#xff0c;推出了号称是革命性的编程大模型StableCode。StableCode是其首款用于编码的LLM生成式AI产品&#xff0c;该产品旨在帮助程序员完成日常工作。目前已发布的版本为StableCode-Completion-Alpha-3B&…...

【Express.js】集成SocketIO

集成SocketIO 本节我们介绍在如何在 express 中集成 Socket.IO Socket.IO 算是 WebSocket 的一个超集&#xff0c;进行了一些封装和拓展。 准备工作 创建一个 express.js 项目&#xff08;本文基于evp-express-cli&#xff09;安装socket.io.js: npm i socket.io创建代理 …...

为树莓派Pico配置交叉编译环境和工具链arm-none-eabi-gcc时可能会遇到的错误以及解决方案

本文是一个类似手册的文章&#xff0c;用来记录可能遇到的错误。你可以通过侧栏选择遇到的错误来查看详细信息。 No install step for ‘ELF2UF2Build’ 遇到这种错误有两种原因&#xff1a; 安装了版本不对或者不完整的arm-none-eabi-gcc&#xff1b;没有使用正确的 C/C 的…...

Yum 部署K8S集群

目录 1、准备环境 &#xff08;温馨提示&#xff1a;尽量一次完成集群&#xff09; 2.安装master节点 3、安装k8s-master上的node 4、安装配置k8s-node1节点 5、安装k8s-node2节点 6、为所有node节点配置flannel网络 7、配置docker开启加载防火墙规则允许转发数据 一. 环…...

初阶C语言-操作符详解(下)

&#x1f31e; “等春风得意&#xff0c;等时间嘉许&#xff01;” 接下来&#xff0c;我们把操作符没学完的继续学完&#xff01; 操作符详解 6.2sizeof和数组 7.关系操作符8.逻辑操作符9.条件操作符10.逗号表达式11.下标引用、函数调用和结构成员12.表达式求值12.1隐式类型转…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文通过代码驱动的方式&#xff0c;系统讲解PyTorch核心概念和实战技巧&#xff0c;涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...