<%@ Language="VBScript" %> <% ' ************************************************* ' 张自然博客ASP探针 V1.93 20060602 ' 张自然博客http://www.zhangziran.com ' ************************************************* ' 不使用输出缓冲区,直接将运行结果显示在客户端 Response.Buffer = true ' 网页立即超时,防止缓存导致测速失败。 Response.Expires = -1 ' 将检测的组件的列表 Dim OtT(3,15,1) ' 服务器变量 dim okCPUS, okCPU, okOS ' 检测组件变量 dim isobj,VerObj,TestObj T = Request("T") if T="" then T="ABGH" %> ASP探针 - 找免费资源就来zhangziran.com

ASP探针 - 找免费资源就来zhangziran.com

 

返回张自然博客 | 返回空间演示

 

<% call mmenu() for qq=1 to len(T) call BodyGo(mid(T,qq,1)) next call mmenu() %>

Copyright © zhangziran.com All Rights Reserved.


张自然博客版权所有


<% ' ******************************************************************************* '   [ A ] 是否支持ASP ' ******************************************************************************* sub aspyes() %>

是否支持ASP

出现以下情况即表示您的空间不支持ASP:
1、访问本文件时提示下载。
2、访问本文件时看到类似“<%@ Language="VBScript" %>”的文字。
<% end sub ' ******************************************************************************* '   [ B ] 服务器概况 ' ******************************************************************************* sub servinfo() %>

服务器概况

<% tnow = now():oknow = cstr(tnow) if oknow <> year(tnow) & "-" & month(tnow) & "-" & day(tnow) & " " & hour(tnow) & ":" & right(FormatNumber(minute(tnow)/100,2),2) & ":" & right(FormatNumber(second(tnow)/100,2),2) then oknow = oknow & " (日期格式不规范)" %> <%getsysinfo() '获得服务器数据%> <% call ObjTest("WScript.Shell") if isobj then set WSshell=server.CreateObject("WScript.Shell") %> <% end if %>
服务器地址名称 <%=Request.ServerVariables("SERVER_NAME")%>(IP:<%=Request.ServerVariables("LOCAL_ADDR")%>) 端口:<%=Request.ServerVariables("SERVER_PORT")%>
服务器时间<%=oknow%>
IIS版本<%=Request.ServerVariables("SERVER_SOFTWARE")%>
脚本超时时间<%=Server.ScriptTimeout%> 秒
本文件路径<%=Request.ServerVariables("PATH_TRANSLATED")%>
服务器脚本引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %> , <%="JScript/" & getjver()%>
服务器操作系统<%=okOS%>
全局和会话变量Application 变量 <%=Application.Contents.count%> 个<%if Application.Contents.count>0 then Response.Write "[列表]"%>, Session 变量 <%=Session.Contents.count%> 个 <%if Session.Contents.count>0 then Response.Write "[列表]"%>
ServerVariables<%=Request.ServerVariables.Count%> 个 <%if Request.ServerVariables.Count>0 then Response.Write "[Request.ServerVariables 列表]"%>
服务器CPU通道数<%=okCPUS%> 个
服务器CPU详情<%=okCPU%>
全部服务器环境<%=WSshell.Environment.count%> 个 <%if WSshell.Environment.count>0 then Response.Write "[WSshell.Environment 列表]"%>
<% end sub %> <% ' 获取服务器常用参数 sub getsysinfo() on error resume next Set WshShell = server.CreateObject("WScript.Shell") Set WshSysEnv = WshShell.Environment("SYSTEM") okOS = cstr(WshSysEnv("OS")) okCPUS = cstr(WshSysEnv("NUMBER_OF_PROCESSORS")) okCPU = cstr(WshSysEnv("PROCESSOR_IDENTIFIER")) if isempty(okCPUS) then okCPUS = Request.ServerVariables("NUMBER_OF_PROCESSORS") end if if okCPUS & "" = "" then okCPUS = "(未知)" end if if okOS & "" = "" then okOS = "(未知)" end if end sub ' ******************************************************************************* '   [ C ] Application 变量列表 ' ******************************************************************************* sub applist() %>

Application 变量列表

<%for each apps in Application.Contents%> <%next%>
变 量 名 称
<%=apps%><% if isobject(Application.Contents(apps)) then Response.Write "[对象]" elseif isarray(Application.Contents(apps)) then Response.Write "[数组]" else Response.Write cHtml(Application.Contents(apps)) end if %>
<% end sub ' ******************************************************************************* '   [ D ] Session 变量列表 ' ******************************************************************************* sub seslist() %>

Session 变量列表

<%for each sens in Session.Contents%> <%next%>
变 量 名 称
<%=sens%><% if isobject(Session.Contents(sens)) then Response.Write "[对象]" elseif isarray(Session.Contents(sens)) then Response.Write "[数组]" else Response.Write cHtml(Session.Contents(sens)) end if %>
<% end sub ' ******************************************************************************* '   [ E ] Request.ServerVariables 变量列表 ' ******************************************************************************* sub sevalist() %>

Request.ServerVariables 变量列表(含客户端信息)

<%for each apps in Request.ServerVariables%> <%next%>
变 量 名 称
<%=apps%><%=cHtml(Request.ServerVariables(apps))%>
<% end sub ' ******************************************************************************* '   [ F ] Request.ServerVariables 变量列表 ' ******************************************************************************* sub wsslist() on error resume next Set WSshell = server.CreateObject("WScript.Shell") %>

WScript.Shell.Environments 变量列表

<%for each envs in WSshell.Environment envsa = split(envs,"=") %> <%next%>
变 量 名 称
<%=envsa(0)%><%=cHtml(envsa(1))%>
<% end sub ' ******************************************************************************* '   [ G ] 组件检测 ' ******************************************************************************* sub comlist() on error resume next OtT(0,0,0) = "MSWC.AdRotator" OtT(0,1,0) = "MSWC.BrowserType" OtT(0,2,0) = "MSWC.NextLink" OtT(0,3,0) = "MSWC.Tools" OtT(0,4,0) = "MSWC.Status" OtT(0,5,0) = "MSWC.Counters" OtT(0,6,0) = "IISSample.ContentRotator" OtT(0,7,0) = "IISSample.PageCounter" OtT(0,8,0) = "MSWC.PermissionChecker" OtT(0,9,0) = "Microsoft.XMLHTTP" OtT(0,9,1) = "(Http 组件, 常在采集系统中用到)" OtT(0,10,0) = "WScript.Shell" OtT(0,10,1) = "(Shell 组件, 可能涉及安全问题)" OtT(0,11,0) = "Scripting.FileSystemObject" OtT(0,11,1) = "(FSO 文件系统管理、文本文件读写)" OtT(0,12,0) = "Adodb.Connection" OtT(0,12,1) = "(ADO 数据对象)" OtT(0,13,0) = "Adodb.Stream" OtT(0,13,1) = "(ADO 数据流对象, 常见被用在无组件上传程序中)" OtT(1,0,0) = "SoftArtisans.FileUp" OtT(1,0,1) = "(SA-FileUp 文件上传)" OtT(1,1,0) = "SoftArtisans.FileManager" OtT(1,1,1) = "(SoftArtisans 文件管理)" OtT(1,2,0) = "Ironsoft.UpLoad" OtT(1,2,1) = "(国产免费, 上传组件)" OtT(1,3,0) = "LyfUpload.UploadFile" OtT(1,3,1) = "(刘云峰的文件上传组件)" OtT(1,4,0) = "Persits.Upload.1" OtT(1,4,1) = "(ASPUpload 文件上传)" OtT(1,5,0) = "w3.upload" OtT(1,5,1) = "(Dimac 文件上传)" OtT(2,0,0) = "JMail.SmtpMail" OtT(2,0,1) = "(Dimac JMail 邮件收发)" OtT(2,1,0) = "CDONTS.NewMail" OtT(2,1,1) = "(CDONTS)" OtT(2,2,0) = "CDO.Message" OtT(2,2,1) = "(CDOSYS)" OtT(2,3,0) = "Persits.MailSender" OtT(2,3,1) = "(ASPemail 发信)" OtT(2,4,0) = "SMTPsvg.Mailer" OtT(2,4,1) = "(ASPmail 发信)" OtT(2,5,0) = "DkQmail.Qmail" OtT(2,5,1) = "(dkQmail 发信)" OtT(2,6,0) = "SmtpMail.SmtpMail.1" OtT(2,6,1) = "(SmtpMail 发信)" OtT(3,0,0) = "SoftArtisans.ImageGen" OtT(3,0,1) = "(SA 的图像读写组件)" OtT(3,1,0) = "W3Image.Image" OtT(3,1,1) = "(Dimac 的图像读写组件)" OtT(3,2,0) = "Persits.Jpeg" OtT(3,2,1) = "(ASPJpeg)" OtT(3,3,0) = "XY.Graphics" OtT(3,3,1) = "(国产免费, 图像/图表处理)" OtT(3,4,0) = "Ironsoft.DrawPic" OtT(3,4,1) = "(国产免费, 图像/图形处理)" OtT(3,5,0) = "Ironsoft.FlashCapture" OtT(3,5,1) = "(国产免费, 多功能 FLASH 截图)" OtT(3,6,0) = "dyy.zipsvr" OtT(3,6,1) = "(国产免费, 呆呆文件压缩解压组件)" OtT(3,7,0) = "hin2.com_iis" OtT(3,7,1) = "(国产免费, 呆呆IIS管理组件)" OtT(3,8,0) = "Socket.TCP" OtT(3,8,1) = "(Dimac 公司的 Socket 组件)" %>

ASP组件支持情况

■ 检查组件是否被支持

在下面的文本框中输入您要检测的组件的 ProgId 或 ClassId <% Dim strClass strClass = Trim(Request.Form("classname")) If "" <> strClass then Response.Write "

" Dim Verobj1 ObjTest(strClass) If Not IsObj then Response.Write "很遗憾,该服务器不支持 " & strclass & " 组件!" Else if VerObj="" or isnull(VerObj) then Verobj1="无法取得该组件版本" Else Verobj1="该组件版本是:" & VerObj End If Response.Write "恭喜!该服务器支持 " & strclass & " 组件。" & verobj1 & "" End If end if %>

■ 操作系统自带的组件

<% k=0 for i=0 to 13 call ObjTest(OtT(k,i,0)) %> <%next%>
组件名称及简介支持/版本
<%=OtT(k,i,0) & " " & OtT(k,i,1) & ""%><%=cIsReady(isobj) & " " & left(VerObj,10)%>

■ 常见文件上传和管理组件

<% k=1 for i=0 to 5 call ObjTest(OtT(k,i,0)) %> <%next%>
组件名称及简介支持/版本
<%=OtT(k,i,0) & " " & OtT(k,i,1) & ""%><%=cIsReady(isobj) & " " & left(VerObj,10)%>

■ 常见邮件处理组件

<% k=2 for i=0 to 6 call ObjTest(OtT(k,i,0)) %> <%next%>
组件名称及简介支持/版本
<%=OtT(k,i,0) & " " & OtT(k,i,1) & ""%><%=cIsReady(isobj) & " " & left(VerObj,10)%>

■ 其它常见组件

<% k=3 for i=0 to 8 call ObjTest(OtT(k,i,0)) %> <%next%>
组件名称及简介支持/版本
<%=OtT(k,i,0) & " " & OtT(k,i,1) & ""%><%=cIsReady(isobj) & " " & left(VerObj,10)%>
<% end sub ' ******************************************************************************* '   [ H ] 磁盘信息 ' ******************************************************************************* sub disklist() on error resume next ObjTest("Scripting.FileSystemObject") if isobj then set fsoobj=server.CreateObject("Scripting.FileSystemObject") %>

磁盘和文件夹

■ 服务器磁盘信息

<% ' 测试磁盘信息的想法来自“COCOON ASP 探针” set drvObj=fsoobj.Drives for each d in drvObj %> <% if d.DriveLetter = "A" then '为防止影响服务器,不检查软驱 Response.Write "" else %> <% end if %> <% next %>
盘符和磁盘类型 就绪 卷标 文件系统 可用空间 总空间
<%=cdrivetype(d.DriveType) & " " & d.DriveLetter%>:<%=cIsReady(d.isReady)%> <%=d.VolumeName%> <%=d.FileSystem%> <%=cSize(d.FreeSpace)%> <%=cSize(d.TotalSize)%>

×”表示磁盘没有就绪或者当前IIS站点没有对该磁盘的操作权限。

■ 当前文件夹信息

<% Response.Flush dPath = server.MapPath("./") set dDir = fsoObj.GetFolder(dPath) set dDrive = fsoObj.GetDrive(dDir.Drive) %>

文件夹: <%=dPath%>

已用空间 可用空间 文件夹数 文件数 创建时间
<%=cSize(dDir.Size)%> <%=cSize(dDrive.AvailableSpace)%> <%=dDir.SubFolders.Count%> <%=dDir.Files.Count%> <%=dDir.DateCreated%>
<% Response.Flush end if end sub ' ******************************************************************************* '   [ I ] 磁盘速度 ' ******************************************************************************* sub diskspeed() on error resume next %>

磁盘文件操作速度测试

<% ObjTest("Scripting.FileSystemObject") if isobj then set fsoobj=server.CreateObject("Scripting.FileSystemObject") ' 测试文件读写的想法来自“迷城浪子” Response.Write "

正在重复创建、写入和删除文本文件50次..." dim thetime3,tempfile,iserr iserr=false t1=timer tempfile=server.MapPath("./") & "\aspchecktest.txt" for i=1 to 50 Err.Clear set tempfileOBJ = FsoObj.CreateTextFile(tempfile,true) if Err <> 0 then Response.Write "创建文件错误!

" iserr=true Err.Clear exit for end if tempfileOBJ.WriteLine "Only for test. Ajiang ASPcheck" if Err <> 0 then Response.Write "写入文件错误!

" iserr=true Err.Clear exit for end if tempfileOBJ.close Set tempfileOBJ = FsoObj.GetFile(tempfile) tempfileOBJ.Delete if Err <> 0 then Response.Write "删除文件错误!

" iserr=true Err.Clear exit for end if set tempfileOBJ=nothing next t2=timer if iserr <> true then thetime3=cstr(int(( (t2-t1)*10000 )+0.5)/10) Response.Write "...已完成!" & thetime3 & "毫秒
" Response.Flush %>

供 对 照 的 服 务 器 完成时间(毫秒)
紫田网络梦幻II型虚拟主机 31~78
68互联 78
第5空间四至强主机(P42.4,2GddrEcc,SCSI72.8G) 46~78
百优科技主机 31~62
点击网络主机 31~62
这台服务器: <%=Request.ServerVariables("SERVER_NAME")%>  <%=thetime3%>
<% end if Response.Flush set fsoobj=nothing end if end sub ' ******************************************************************************* '   [ J ] 脚本运算速度 ' ******************************************************************************* sub tspeed() %>

ASP脚本解释和运算速度测试

<% Response.Flush '感谢网际同学录,推荐使用timer函数 '因为只进行50万次计算,所以去掉了是否检测的选项而直接检测 Response.Write "整数运算测试,正在进行50万次加法运算..." dim t1,t2,lsabc,thetime,thetime2 t1=timer for i=1 to 500000 lsabc= 1 + 1 next t2=timer thetime=cstr(int(( (t2-t1)*10000 )+0.5)/10) Response.Write "...已完成!" & thetime & "毫秒
" Response.Write "浮点运算测试,正在进行20万次开方运算..." t1=timer for i=1 to 200000 lsabc= 2^0.5 next t2=timer thetime2=cstr(int(( (t2-t1)*10000 )+0.5)/10) Response.Write "...已完成!" & thetime2 & "毫秒
" %>

供对照的服务器及完成时间(毫秒) 整数运算浮点运算
百优科技100u主机,2003-11-1 181~233 156~218
西部数码主机, 2003-11-1 171~233 156~171
数码城市163n主机, 2006-1-4 156~171 140~156
永讯网络Dnsmy主机, 2003-11-1 155~180 122~172
这台服务器: <%=Request.ServerVariables("SERVER_NAME")%>  <%=thetime%> <%=thetime2%>
<% end sub ' ******************************************************************************* '   [ K ] 网络连接速度测试 ' ******************************************************************************* sub tnet() %>

连接带宽测试

<% if T<>"K" then %>

[开始测试]

<% else haveok=false if Request("ok") <> "" then haveok=true if Request("tm") = "" then haveok=false if haveok=false then %>

正在测试您与当前服务器之间的连接速度,请稍等....

<% Response.Flush for i=1 to 1000 Response.Write "" & vbcrlf if i mod 100=0 then %> <% end if next %> <% Response.Flush :Response.end else ttime=clng(Request("tm")) + 1 tnetspeed=100000/(ttime) tnetspeed2=tnetspeed * 8 twidth=int(tnetspeed * 0.16)+5 if twidth> 300 then twidth=300 tnetspeed=formatnumber(tnetspeed,2,,,0) tnetspeed2=formatnumber(tnetspeed2,2,,,0) %>

测试完成,向客户端传送 100k 字节数据共使用时间 <%=formatnumber(ttime,2)%> 毫秒。[重测]

| 56k猫| 2M ADSL| 10M LAN
 <%=tnetspeed%> kB/s

您与此服务器的连接速度是 <%=tnetspeed%> kB/s (相当于<%=tnetspeed2%>kbps)
换算关系: 1 Byte(字节) = 8 bit(位)

<% end if end if end sub ' ******************************************************************************* '   [ L ] 不安全组件检测 ' ******************************************************************************* sub tsafe() %>

不安全组件检测

WScript.Shell <%=okObj("ws")%>, Shell.application <%=okObj("app")%>

Shell 组件允许ASP运行.exe等可执行文件,存在严重的安全隐患。即使在文件系统进行过严格的权限设置的服务器上,此组件也会被用来运行提升权限的程序。

WScript.Network <%=okObj("net")%>

WScript.Network 为ASP程序罗列和创建系统用户(組)提供了可能,如果上面提示“√ 危险”则可能存在此安全隐患。

Adodb.Stream <%=okObj("ado")%>

Adodb.Stream 常常被用来上传木马等不安全程序,从而扩大攻击者的破坏能力。通过必要的权限设置,Adodb.Stream不会对系统安全造成威胁,它常常被使用在无组件上传工具中。

FSO <%=okObj("fso")%>, XML V1.0 <%=okObj("x1")%>, V2.6 <%=okObj("x2")%>, V3.0 <%=okObj("x3")%>, V4.0 <%=okObj("x4")%>

FSO(Scripting.FileSystemObject) 和 XML 具备罗列和管理服务器中文件和文件夹的能力,如果权限设置不当,将导致木马程序移动、修改甚至删除服务器上的文件。FSO 组件是常用的组件之一,禁用该组件并不是最理想的安全措施。

HappyTime <%=okObj("hap")%>

HappyTime(欢乐时光)是流行的网络蠕虫病毒之一,它的繁殖占用大量网络带宽,病毒发作时它有可能删除服务器上有用的可执行文件导致系统瘫痪。如果此项检测结果为危险,则您的服务器将存在感染和传播欢乐时光病毒的可能。
<% end sub ' ******************************************************************************* '   [ M ] 系统用户和进程检测 ' ******************************************************************************* sub userlist() %>

系统用户(組)和进程检测

如果下面列出了系统用户和进程,则说明系统存在安全隐患。

<% on error resume next for each obj in getObject("WinNT://.") err.clear %> <% next %>
类 型名称及详情
<% if err then Response.Write "系统用户(組)" else Response.Write "系统进程" end if %> <%=obj.Name%><%if err=0 then Response.Write " (" & obj.displayname & ")"%>
<%=obj.path%>
<% end sub ' ******************************************************************************* '   [ N ] 主菜单 ' ******************************************************************************* sub mmenu() %>

主菜单

快速查看: 精简模式 | 典型模式 | 完整模式

功能直达: 概况 | 组件 | 环境 | 磁盘 | 运算速度 | 带宽检测 | 安全状况

<% end sub ' ******************************************************************************* '   其他函数和子程序 ' ******************************************************************************* ' 展示栏目 sub BodyGo(gCon) select case gCon case "A" call aspyes() case "B" call servinfo() case "C" call applist() case "D" call seslist() case "E" call sevalist() case "F" call wsslist() case "G" call comlist() case "H" call disklist() case "I" call diskspeed() case "J" call tspeed() case "K" call tnet() case "L" call tsafe() case "M" call userlist() case "N" call mmenu() end select end sub ' 检测不安全组件 Function okObj(runstr) On Error Resume Next Response.Write "" okObj = true Err = 0 Execute runstr & ".exec()" If 429 = Err Then okObj = false end if Err = 0 Response.Write "" if okObj then okObj="√ 危险" else okObj="× 安全" end if End Function ' 转换字串为HTML代码 function cHtml(iText) cHtml = iText cHtml = server.HTMLEncode(cHtml) cHtml = replace(cHtml,chr(10),"
") end function ' 转换磁盘类型为中文 function cdrivetype(tnum) Select Case tnum Case 0: cdrivetype = "未知" Case 1: cdrivetype = "可移动磁盘" Case 2: cdrivetype = "本地硬盘" Case 3: cdrivetype = "网络磁盘" Case 4: cdrivetype = "CD-ROM" Case 5: cdrivetype = "RAM 磁盘" End Select end function ' 将是否可用转换为对号和错号 function cIsReady(trd) Select Case trd case true: cIsReady="" case false: cIsReady="×" End Select end function ' 转换字节数为简写形式 function cSize(tSize) if tSize>=1073741824 then cSize=int((tSize/1073741824)*1000)/1000 & " GB" elseif tSize>=1048576 then cSize=int((tSize/1048576)*1000)/1000 & " MB" elseif tSize>=1024 then cSize=int((tSize/1024)*1000)/1000 & " KB" else cSize=tSize & "B" end if end function '检查组件是否被支持及组件版本的子程序 sub ObjTest(strObj) on error resume next IsObj=false VerObj="" set TestObj=server.CreateObject (strObj) If -2147221005 <> Err then '感谢网友iAmFisher的宝贵建议 IsObj = True VerObj = TestObj.version if VerObj="" or isnull(VerObj) then VerObj=TestObj.about end if set TestObj=nothing End sub %>