.NET 分享一款Web打包和解压缩工具

01本文概要

在.NET部署环境中,利用IIS中间件开启对ASP的支持,可以实现许多强大的文件操作功能。特别是在一些需要进行预编译的情况下,通过上传ASP脚本,可以获得WebShell,从而方便地进行各种操作。本文将介绍一个名为Sharp4ASPWebPack工具,该工具提供了在线打包和解包文件的功能,并详细解析其实现方式。该工具经过订正后可正常运行。

图片

图片

图片

02实现打包功能

自定义实现的CCPack类是一个用于ASP环境下文件打包和解包的类。

Class CCPack
Dim Files, packname, rootpath, fso
Private Sub Class_Initialize
Randomize
Dim ranNum
ranNum = Int(90000 * Rnd) + 10000
packname = Year(Now)&Month(Now)&Day(Now)&Hour(Now)&Minute(Now)&Second(Now)&ranNum&".asp"&Year(Now)
rootpath = Server.MapPath("./")
Set Files = server.CreateObject("Scripting.Dictionary")
Set fso = Server.CreateObject("Scripting.FileSystemObject")
End Sub
Private Sub Class_Terminate
Set fso = Nothing
Set Files = Nothing
End Sub

通过该类,可以方便地将文件夹及其下的文件打包成一个文件,并可以在需要时解包这些文件。详细介绍CCPack类的实现代码使用方法如下所示

'添加该文件夹下的所有文件夹及文件
Public Sub AddDir(byval obj)
Dim f, subf
If fso.FolderExists(obj) Then
Set f = fso.GetFolder(obj)
'添加本文件夹
Add(f.Path)
'遍历子文件夹
For Each subf in f.SubFolders
AddDir(subf.Path)
Next
Set subf = Nothing
Set f = Nothing
End If
End Sub

AddDir方法,递归地添加文件夹及其下所有文件。检查文件夹是否存在,存在则添加该文件夹,并遍历其子文件夹递归调用AddDir方法。Pack方法:创建两个流对象,一个用于读取文件,一个用于写入打包文件。代码如下所示

'打包
Public Sub Pack()
Dim Str, ObjPack, ObjRead, a, b, buf, bf, FileDB, FDBLen
Set ObjPack = server.CreateObject("ADODB.Stream") 
Set ObjRead = server.CreateObject("ADODB.Stream")
ObjPack.Open 
ObjRead.Open
ObjPack.Type = 1
ObjRead.Type = 1
a = Files.Keys
b = Files.Items
bf = ( (Files.Count) + 1) / 100
For i = 0 To Files.Count - 1
If b(i) > 0 Then
ObjPack.LoadFromFile(a(i))
If Not ObjPack.EOS Then ObjRead.Write(ObjPack.Read)
End If
If b(i) = -1 Then a(i) = a(i) & "\"
a(i) = replace(a(i), rootpath, "\", 1, -1, 1) 
a(i) = replace(a(i), "\\", "\", 1, -1, 1) 
FileDB = FileDB & b(i) & ">" & a(i) & "*"
Echo "<script language=""javascript"" >"
Echo "f.innerText='" & Replace(a(i), "\", "\\") & "';"
Echo "p.innerText='" & clng(i / bf) & "%';"
Echo "n.innerText='" & (i+1) & "/" & Files.Count & "';"
Echo "</script>"
Response.Flush
If Not Response.IsClientConnected Then Exit For
Next
FDBLen = LenB(FileDB)
Str = CStr(Strright("000000000" & FDBLen, 10)) & FileDB
buf = TextToStream(Str)
ObjPack.Position = 0
ObjPack.Write buf
ObjRead.Position = 0
Do While Not ObjRead.EOS
ObjPack.Write ObjRead.Read(1024 * 64)
If Not Response.IsClientConnected Then Exit Do 
Loop
ObjPack.SetEOS
ObjPack.SaveToFile(packname), 2
Set buf = Nothing
Set ObjRead = Nothing
Set ObjPack = Nothing
End Sub

遍历所有文件,将其内容写入打包文件,同时记录文件路径和大小信息。生成文件目录信息字符串并写入打包文件。UnPack方法:打开打包文件,读取文件目录信息并解析,逐个将文件内容写入目标路径。确保解压过程中路径和文件夹存在。代码如下所示。

'解压
Public Sub UnPack()
Dim Size, ObjPack, ObjWrite, arr, i, buf, bf
If Not fso.FolderExists(rootpath) Then
fso.CreateFolder(rootpath)
End If
Set ObjPack = server.CreateObject("ADODB.Stream")
Set ObjWrite = server.CreateObject("ADODB.Stream")
ObjPack.Open 
ObjWrite.Open
ObjPack.Type = 1
ObjWrite.Type = 1
ObjPack.LoadFromFile(packname)
ObjPack.Position = 0
If Not IsNumeric(StreamToText(ObjPack.Read(22))) Then
Echo("<script>alert('文件格式不正确,系统无法解压!');</script>")
response.End
Else
ObjPack.Position = 0
End If
Size = Clng(StreamToText(ObjPack.Read(22)))
arr = Split(StreamToText(ObjPack.Read(Size)), "*")
bf = ( (UBound(arr)) + 1) / 100
For i = 0 To UBound(arr) - 1
arrFile = Split(arr(i), ">")
If arrFile(0) < 0 Then
myfind(rootpath & arrFile(1)) '确保文件存在
ElseIf arrFile(0) >= 0 Then
ObjWrite.Position = 0
buf = ObjPack.Read(arrFile(0))
If Not IsNull(buf) Then ObjWrite.Write(buf)
ObjWrite.SetEOS
ObjWrite.SaveToFile(rootpath & arrFile(1)), 2
End If
Echo "<script>"
Echo "f.innerText='" & Replace(rootpath & arrFile(1), "\", "\\") & "';"
Echo "p.innerText='" & clng(i / bf) & "%';"
Echo "n.innerText='" & (i+1) & "/" & UBound(arr) & "';"
Echo "</script>"
Echo vbcrlf
Response.Flush
If Not Response.IsClientConnected Then Exit For
Next
Set buf = Nothing
Set ObjWrite = Nothing
Set ObjPack = Nothing
End Sub

因此CCPack类非常适合在支持ASP运行环境下的.NET应用中进行文件打包和解包操作,特别是在需要通过Web接口进行文件传输和管理的应用场景下。为了达到更好的免杀,工具已混淆发表于星球,师傅们可自行查阅资料。

图片

03推荐阅读

从漏洞分析到安全攻防,我们涵盖了.NET安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!

图片

图片

图片

图片

图片

04.NET安全知识库

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。只需199元就可以加入我们。

    星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,从Web应用到PC端软件应用,无论您是初学者还是经验丰富的开发人员,都能在这里找到对应的安全指南和最佳实践。

    星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。

图片

星球文化始终认为授人以鱼不如授人以渔!加入星球后可以跟星主和嘉宾们一对一提问交流,20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。

图片

    我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

图片

    我们还有一个会员专属的星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。

图片

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂车载系统开发学习路线

前言 随着汽车技术的快速发展和智能化趋势的加强&#xff0c;车载信息娱乐系统已经成为现代汽车不可或缺的一部分。因此&#xff0c;车载软件市场正在迅速增长&#xff0c;这为Android应用开发提供了新的机会。恰好近年来大环境不是很理想&#xff0c;车载开发不失为Android应…

概率论统计——大数定律

大数定律 弱大数定律&#xff08;辛钦大数定律&#xff09; 利用切比雪夫不等式&#xff0c;证明弱大数定律 应用 伯努利大数定理&#xff0c;&#xff08;辛钦大数定理的推论&#xff09; 证明伯努利大数定理 注意&#xff1a;这里将二项分布转化成0,1分布来表示&#xff0c;…

电能表抄表软件是什么?

1.电能表抄表软件简述 电能表抄表软件是当代电力系统中不可或缺的一部分&#xff0c;它通过大数据技术性完成了远程控制抄表、数据库管理及其电费测算等服务&#xff0c;大大提高了工作效能并降低了人为失误。这类软件的诞生&#xff0c;促使供电公司可以实时监控系统与分析电…

【Uniapp】图片修复对比组件

效果图 不废话&#xff0c;直接上源码&#xff01; 组件直接用 <template><viewclass"img-comparison-container":style"width: width rpx;height: height rpx"><view class"before-image" :style"width: x rpx&quo…

【MATLAB】fminsearchbnd()函数安装包下载

fminsearchbnd()函数 链接&#xff1a;https://pan.baidu.com/s/1apc6_f92rDnV_NwHpZZpDQ?pwdxul8 提取码&#xff1a;xul8 fminsearchbnd, fminsearchcon - File Exchange - MATLAB Central (mathworks.cn) 若链接失效&#xff0c;可以自行注册下载&#xff0c;操作也很简…

一键解锁!贸易行业实现银行与财务系统秒级对接,效率飙升!

客户介绍 某贸易有限公司是一家实力雄厚的工贸一体跨国集团企业。作为行业内的佼佼者&#xff0c;该公司以出口家纺产品和生产销售建材洁具为核心业务。公司始终坚持以市场为导向&#xff0c;不断创新和优化产品和服务&#xff0c;以满足不断变化的市场需求。 客户痛点 以往&…

文本三剑客-awk

一、awk的介绍 1.1awk的简介 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具 可以在无交互的模式下实现复杂的文本操作 相较于sed常作用于一整个行的处理&#xff0c;awk则比较倾向于一行当中分成数个字段来处理&#xff0c;因为awk相当适合小型的文本…

Winform自定义控件 —— 开关

在开始阅读本文之前&#xff0c;如果您有学习创建自定义控件库并在其他项目中引用的需求&#xff0c;请参考&#xff1a;在Visual Studio中创建自定义Winform控件库并在其他解决方案中引用https://blog.csdn.net/YMGogre/article/details/126508042 0、引言 由于 Winform 框架并…

C++ 程序员常用的VScode的插件

vscode中好用的插件 Better CommentsBookmarksC/C ThemeChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeclangdClang-FormatCodeLLDBCMakeCMake ToolsCode RunnerCode Spell CheckerCodeSnapColor Highlightvscode-mindmapDraw.io IntegrationError Len…

推荐一款实用的便捷工具:windows输入法删除工具

这是一款输入法删除的工具&#xff0c;能够辅助个人来彻底的删除你电脑上面的输入法&#xff0c;以极为完整的方式来进行卸载&#xff0c;在你找不到卸载的方式之时这款软件极为的适用&#xff0c;能够帮助你面对这个场景&#xff0c;满足个人对于卸载上面的需求! 目录 一、下…

低功耗音频编解码器CJC8990

由工采网代理的CJC8990是一款低功耗音频编解码器&#xff0c;拥有先进的功能并提供高质量音频&#xff0c;非常适合于便携式数字音频应用&#xff0c;支持多种音频数据格式&#xff0c;包括I2S, DSP模式。 产品介绍&#xff1a; 该芯片工作电压&#xff1a;1.5V&#xff5e;3…

【EasyExcel】EasyExcel合并指定列单元格导出详解设置导出样式

【EasyExcel】EasyExcel合并指定列单元格导出&设置导出样式 需求分析 需求背景 许多报表需要对相同数据的单元格进行合并&#xff0c;以提高数据的可读性和美观性。例如&#xff0c;在销售报表中&#xff0c;将相同客户的订单合并在一起。同时&#xff0c;报表中的标题和内…

MySQL中order by排序时,数据存在null,排序在最前面

order by排序是最常用的功能&#xff0c;但是排序有时会遇到数据为空null的情况&#xff0c;这样排序就会乱了&#xff0c;这里以MySQL为例&#xff0c;记录我遇到的问题和解决思路。 sql 排序为 null 值问题&#xff1a; 排序时我们用 receive_date(一个统计的时间&#xff…

物业水电抄表系统的全面解析

1.系统概述 物业水电抄表系统是现代物业管理中的重要组成部分&#xff0c;它通过自动化的方式&#xff0c;实时监控和记录居民或企业的水电使用情况&#xff0c;极大地提高了工作效率&#xff0c;降低了人工抄表的错误率。该系统通常包括数据采集、数据传输、数据分析和数据展…

python创建新环境并安装pytorch

python创建新环境并安装pytorch 一、创建新环境1、准备工作2、创建虚拟环境并命名3、激活虚拟环境 二、安装pytorch1、pytorch官网2、选择与你的系统相对应的版本3、安装成功 一、创建新环境 1、准备工作 本次创建的环境是在anaconda环境下&#xff0c;否则需要在纯净环境下创…

centOS忘记密码的处理办法

1、开机后在出现内核选项时&#xff0c;按 e&#xff1b; 2、在Linux 开头的这行&#xff0c;输入 rd.break 如下图&#xff1b; 3、然后&#xff0c;执行&#xff1a;CtrlX&#xff1b; 4、进入之后是 switch_root:/#输入 mount -o rw,remount /sysroot 以读写方式重新挂载 /s…

初讲树,二叉数(搜索二叉树,实现的方法<链式,顺序>)

目录 1.树的概念及其结构 1.1树的概念 1.2树相关的概念 1.3树的表示 2.二叉树概念及其结构 2.1概念 2.2现实中的二叉树 2.3特殊的二叉树 2.4二叉树的性质 2.5二叉树存储结构 2.5.1链式存储 2.5.2顺序存储 3.搜索二叉树 1.树的概念及其结构 1.1树的概念 树是一种非…

从零入门激光SLAM(十六)——卡尔曼滤波基础

一、卡尔曼滤波简介KF 卡尔曼滤波器&#xff08;Kalman Filter&#xff09;是一种用于估计动态系统状态的递归算法。它通过结合系统的动态模型和噪声观测数据&#xff0c;提供对系统状态的最优估计。卡尔曼滤波器广泛应用于信号处理、控制系统、导航、计算机视觉等领域。 卡尔…

无人机超强教程!无人机图像拼接、航拍植被动态定量化研究、激光雷达地形测量与河网水系提取

查看原文>>>无人机生态环境监测、图像处理与GIS数据分析综合实践技术应用 目录 一、无人机航拍基本流程、航线规划与飞行实践 二、无人机图像拼接软件的学习与操作实践 三、无人机图像拼接典型案例详解 四、无人机图像拼接数据在GIS中的处理与分析 五、无人机图…

Leaflet【二】图层绘制——UI图层【点线面】 矢量图层【img、svg】

layer图层 在leaflet当中使用图层比OL当中简便一点&#xff0c;我们创建的layer图层可以直接通过 addTo 方法加到地图上&#xff0c;不需要通过layer、source再去做一些区分&#xff0c; 图标 Icon 创建Marker时提供的一个Icon 详细配置–>go // 导入一张图片作为图标imp…