最近看了一下“风讯网站内容管理系统V4.0SP3免费版”,发现它后台(sysinfo.asp)有个使用Ajax获取官方最新版本信息和最新消息,点击右键查看源文件,它获取的内容显示在<div id="Foosun_server_version"></div>里,查找跟踪ID为“Foosun_server_version”的内容,找到$('Foosun_server_version').innerHTML=Str_Info;,现在就看到这样一段Javascript代码:

<script language="JavaScript">
<!--
function Get_Foosun_Server(){
    var Userid="";
    GetInfo(String.fromCharCode(83,121,115,67,104,101,99,107,86,101,114,46,97,115,112),String.fromCharCode(65,99,116,61,86,101,114));
    GetInfo(String.fromCharCode(83,121,115,67,104,101,99,107,86,101,114,46,97,115,112),String.fromCharCode(65,99,116,61,78,101,119,115));
}

function GetInfo(url,Action){
    var myAjax = new Ajax.Request(
        url,
        {method:'post',
        parameters:Action,
        onComplete:GetInfo_Receive
        }
        );
}
function GetInfo_Receive(OriginalRequest){
    var Info="";
    var Str_Info="";
    Info=OriginalRequest.responseText.split("||");
    if (Info[0]=="True"){
        Str_Info=Info[2];
    }else{
        Str_Info="";
    }
    if (Info[1]=="Ver"){
        $('Foosun_server_version').innerHTML=Str_Info;
    }else if (Info[1]=="News"){
        $('Foosun_server_announce').innerHTML=Str_Info;
    }
}
window.οnlοad=Get_Foosun_Server;
//-->

这里就看到它是调用GetInfo()使用Ajax访问获取数据,然后显示出来。问题在这里了,它调用GetInfo()没有传递访问的地址,使用alert(String.fromCharCode(83,121,115,67,104,101,99,107,86,101,114,46,97,115,112));发现这个就是访问的页面SysCheckVer.asp,String.fromCharCode(65,99,116,61,86,101,114)是Act=Ver,String.fromCharCode(65,99,116,61,78,101,119,115)是Act=News,使用了ASCII码隐藏访问的页面和参数,一个检测版本,一个检测最新消息。

现在就要看SysCheckVer.asp这个文件了,打开一看,哗,一大堆代码,看到一个过程Function Replace_MF_default_Flag(f_File_Cont,f_NewsID,PageType),咋一看,就有疑问了,这个东西干嘛,而且一大堆的代码,好长的过程,然后我就不看了。但是想想又是通过它访问版本信息的,不可能啊,就拉了一下代码,发现在代码最后才有一段

Str_Act = Trim(Request.Form("Act"))
If Str_Act = "" Then Str_Act = "Ver"
Select Case Str_Act
    Case "Ver"
        StrInfo = Str_get(1)
    Case "News"
        StrInfo = Str_get(2)
    Case Else
        StrInfo = "||"
End Select
StrInfo = Split(StrInfo,"||")
If StrInfo(0)="True" Then
    Response.Write "True||"&Str_Act&"||"&StrInfo(1)
ElseIf StrInfo(0)="False" Then
    Response.Write "False||"&Str_Act&"||"
End If

哗靠,现在上面那么长的那个过程是没有用的,一大堆看不明白,放在上面是为了迷惑想看它代码的人,一大堆看不明白的就不看了,好在我拉到下面看了一下。现在分析ASP执行,主要是调用Str_get()返回的值给变量StrInfo,然后Response.Write写出来。查找Str_get()过程,在FS_InterFace\MF_Function.asp里找到

Function Str_get(Number)
    On Error Resume Next
    Str_UserID = Server.UrlEncode(Session("SessionCode"))
    ThisIp = Server.UrlEncode(Request.ServerVariables("LOCAL_ADDR"))
    ThisDomain = Server.UrlEncode(Request.ServerVariables("SERVER_NAME"))
    ThisPort = Server.UrlEncode(Request.ServerVariables("SERVER_PORT"))
    Str_Para = "?"&"VUsIp="&ThisIp&"&VUsDN="&ThisDomain&"&VUsPort="&ThisPort&"&UserID="&Str_UserID
    If Number = 1 Then:Str_get = GetInfo(Recv(Session("SessionComm"))&Recv(Session("SessionComV"))&Str_Para):Else:Str_get = GetInfo(Recv(Session("SessionComm"))&Recv(Session("SessionComN"))&Str_Para):End If
End Function

这里就可以看到它会收集服务器的IP、服务器域名、服务器端口、序列号。然后调用GetInfo()过程,查找得知GetInfo()在FS_Inc\Function.asp里

Function GetInfo(GetPath)
    Dim http,ErrContentLength,Report,ContentLength,ErrContent
    ErrContent = ""
    On Error Resume Next
    Response.Clear
    Set http=Server.CreateObject("Microsoft.XMLHTTP")
    If Err Then
        Err.Clear
        Set http = Server.CreateObject("Msxml2.XMLHTTP")
        If Err Then
            ErrContent = "服务器不支持XML对象"
            Err.Clear
        End If
    End If
    If ErrContent<>"" Then
        GetInfo = "False||"&ErrContent
    Else
        http.Open "GET",GetPath,False
        http.Send
        If http.readyState<>4 Then
            GetInfo = "False||读取失败"
        Else
            GetInfo = "True||"&http.ResponseText
        End If
    End If
End Function

这个GetInfo(GetPath)就是使用XML通过GET方式访问,然后返回信息。参数GetPath就是要访问的地址,再往回看Str_get(Number)调用GetInfo()是这样的Str_get = GetInfo(Recv(a)&Recv(b)&Str_Para),再查找过程Recv(),也是在FS_Inc\Function.asp里

Function Recv(Str_Number)
    Dim Arr_Number,Str_Return,Temp_i
    Arr_Number = Split(Str_Number,chr(108))
    Str_Return = ""
    For Temp_i = LBound(Arr_Number) To UBound(Arr_Number)
        Str_Return = Str_Return & Chr(Arr_Number(Temp_i)+31)
    Next
    Recv = Str_Return
End Function

Recv(Str_Number)就是还原字符串,通过ASCII码加31。现在主要就是要知道Str_get(Number)里的Session("SessionCode")、Session("SessionComm")、Session("SessionComV")、Session("SessionComN")里什么值了,使用Response.Write写出来,得到

Session("SessionCode")="111-1111111111111"
Session("SessionComm")="73l85l85l81l27l16l16l81l66l84l84l81l80l83l85l15l71l80l80l84l86l79l15l79l70l85l16"
Session("SessionComV")="87l70l83l15l66l84l81"
Session("SessionComN")="79l70l88l84l15l66l84l81"

这些值通过Recv(Str_Number)还原,得到

Recv(Session("SessionComm"))="http://passport.foosun.net/"
Recv( Session("SessionComV"))="ver.asp"
Recv( Session("SessionComN"))="news.asp"

到此,就都可以清楚它检测版本的过程了,检测版本地址是http://passport.foosun.net/ver.asp,包括搜集系统信息;获取最新信息地址是http://passport.foosun.net/news.asp

这个CMS为了隐藏检测和搜集版本、版权,做足了手脚,处处隐藏,还来个无用的代码迷惑……

转载于:https://www.cnblogs.com/qiuyi21/articles/1089766.html

风讯管理系统V4.0SP3搜集版权全分析相关推荐

  1. 第11章实验1:学生成绩管理系统V4.0

    第11章实验1:学生成绩管理系统V4.0 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).参考学生成绩管理系统V3.0,用二维数组作函数参数编程实现如下 ...

  2. 第11章实验1:学生成绩管理系统V4.0(C语言)

    第11章实验1:学生成绩管理系统V4.0 (前方空降提示:由于题目很长很长很长,代码在最后,翻到底才有哦.) 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输 ...

  3. 人事管理系统 v4.1.8(源码)

    软件介绍: 人事管理系统适用于中小企业以及微型企业的人事管理系统. 人事管理系统采用utf8的编码方式,采用Thinkphp框架,轻量级的程序,支持手机版,Ipad,以及PC端.程序免费开源.提供免费 ...

  4. 学生成绩信息管理系统c语言,C语言写的学生成绩管理系统V4.0

    学生成绩管理系统V4.0 学生成绩管理系统软件主要适用于成绩管理!这款软件具有成绩输入.各班成绩汇总分析.成绩打印.成绩综合排名等一系列功能.这款软件完全根据学校平常的学生成绩管理办法研发出来.运用先 ...

  5. 电商订单仓储ERP管理系统 v4.3.6.zip

    电商订单仓储ERP管理系统是一款网店综合业务管理系统,它以网店订单为核心,集成商品.采购.仓储.营销(站内信.邮件.售后).物流.决策分析.财务等功能为一体的网店 ERP 软件系统.它充分利用电商务平 ...

  6. 易软门诊管理系统 v4.7 下载

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  7. 智方6000系标准销售管理系统 v4.57 绿色

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  8. 星月美容美发管理系统 v4.7 单机/网络版 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  9. PageAdmin企业网站管理系统 v4.0.17

    介绍: PageAdmin企业网站管理系统是基于微软最新的MVC框架全新开发,强大的后台管理功能,良好的用户操作体验,可热插拔的插件功能让扩展更加灵活和开放,全部信息表采用自定义表单,可任意自定义扩展 ...

最新文章

  1. 老生常谈 String、StringBuilder、StringBuffer
  2. Kubernetes Nginx Ingress 安装与使用
  3. 设计模式复习-职责链模式
  4. JPDA 利用Eclipse和Tomcat进行远程调试 --转
  5. 完整叙述html的语法结构,html article介绍与语法结构
  6. python学习: 优秀Python学习资源收集汇总--转
  7. linux loop device
  8. zune linux_快速提示:在出售Zune HD之前,先擦除所有内容
  9. 前端学习(2592):当前用户显示
  10. thrift介绍及应用(一)—介绍
  11. 解决 An invalid domain was specified for this cookie
  12. [导入]MSIL: call callvirt
  13. Ubuntu21.04安装网易有道词典
  14. paip. c++ 调用.net dll 最好方式powershell 使用总结.
  15. Ubuntu18.04忘记超级用户root密码,重新设置密码
  16. 机关事业单位考勤统计和活动抽奖小程序
  17. 计算机显示器窗口成灰色,电脑显示器只显示灰色背光
  18. 慎用鲁大师 360等软件
  19. 微信开发笔记——微信网页登录授权,获取用户信息
  20. 数据预处理(四)——数据标准化

热门文章

  1. 车辆检测数据集(2)
  2. w ndows只能安装到gpt磁盘,安装win10系统时提示windows只能安装到GPT磁盘如何解决[多图]...
  3. 使用模拟工具Modbus poll 和PLC 通讯
  4. FeUdal Networks for Hierarchical Reinforcement Learning 阅读笔记
  5. Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算
  6. docker容器启动失败(Error response from daemon: error creating overlay mount to /app/docker/overlay2/)
  7. html中颜色的三种不同表示方法,表示颜色的有三种方式
  8. 如何将一个HTML页面嵌套另一个页面中
  9. 深度学习(十)-AI起名
  10. 嵌入式系统开发笔记62:分数等级转换(switch)