我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp安全/XML > 老掉牙的ASP文件的加密与解密
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

老掉牙的ASP文件的加密与解密 

作者:佚名   来源:本站教程   点击:   日期:2007-03-22

 

using System;
using System.IO ;
using System.Text ;

namespace SuperData.ASP
{
 /// <summary>
 /// ASP破解程序
 /// 功能:
 /// 1.加密一个文件:EncodeFile(源文件,目标文件),EncodeFile(源目录,目标目录,文件名)
 /// 2.解密一个文件:DecodeFile(源文件,目标文件),DecodeFile(源目录,目标目录,文件名)
 /// 3.加密一个目录:EncodeFolder(源目录,目标目录[,递归子目录])
 /// 4.解密一个目录:DecodeFolder(源目录,目标目录[,递归子目录])
 /// 原作者:wanghr100(灰豆宝宝.net)
 /// 修改者:satchmo
 /// 更新日期:2005-5-24
 /// </summary>
 public class ASPDecode
 {

  private enum enumState
  {
   stateNull = 0 ,
   stateCopyInput = 100,
   stateReadLen = 101,
   stateDecode = 102,
   stateUnescape = 103
  };

  int[] pick_encoding = {
          1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0,
          1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2,
          1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2,
          1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2
         };

  int[] rawData = {
       0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72,
       0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C,
       0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43,
       0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63,
       0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79,
       0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B,
       0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D,
       0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F,
       0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E,
       0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77,
       0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78,
       0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67,
       0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22,
       0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A,
       0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C,
       0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25,
       0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28,
       0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36,
       0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E,
       0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09,
       0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D,
       0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37,
       0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E,
       0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F
      };

  private char[,] transformed;
  private int[] digits;
  string undigits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

  /// <summary>
  /// ASP DECODE构造函数
  /// </summary>
  public ASPDecode()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
   transformed = new char[3,0x80];
   for(int i=0; i<96; i++)
   {
    for(int j=0; j<3; j++)
    {
     transformed[j,rawData[i * 3 + j]] = (char)((i==0) ? 9 : i + 31);
    }
   }

   Console.WriteLine ("============================MapTable============================");
   for(int i = 0;i < 3;i ++)
   {
    for(int j = 0;j < 0x80;j ++)
    {
     if(transformed[i,j] != '\0')
     {
      if(transformed[i,j] == '\t')
       Console.Write (" ");
      else
       Console.Write (transformed[i,j]);
     }
     if(j == 0x60)
     {
      Console.WriteLine ("  ->");
     }
    }
    Console.WriteLine ();
   }
   Console.WriteLine ("================================================================");
   
   digits = new int[0x80];
   for (int i=0; i<26; i++)
   {
    digits[0x41+i] = i;
    digits[0x61+i] = i+26;
   }
   for (int i=0; i<10; i++)
   {
    digits[0x30+i] = i+52;
   }

   digits[0x2b] = 62;
   digits[0x2f] = 63;
  }

  #region public bool DecodeFile(string source , string dest[ , string file])
  /// <summary>
  /// 打开文件source,Encode解密,重写该文件
  /// </summary>
  /// <param name="source">源文件路径</param>
  /// <param name="dest" >目标文件路径</param>
  /// eg.Response.Write(DncodeFile(Server.MapPath("conn.asp")));
  /// au.wanghr100(灰豆宝宝.net)
  /// md.satchmo
  /// up.2005-7-23 12:48
  /// <returns>是否成功</returns>
  public bool DecodeFile(string source , string dest)
  {
   if(System.IO .File .Exists (source))
   {
    try
    {
     StreamReader reader = new StreamReader(source , Encoding.Default );
     string sFileText = reader.ReadToEnd ();
     reader.Close ();
     StreamWriter write = new StreamWriter (dest , false , Encoding.Default );
     write.Write (strdec(sFileText));
     write.Close ();
     return true;
    }
 &n


文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。