VBS 加解密 For MS Script Encode

这篇文章主要介绍了微软自己的代码加解密实现方法,需要的朋友可以参考下
 

一、加密

复制代码 代码如下:

Dim ObjectFSO

If (lcase(right(wscript.fullname,11))="wscript.exe") Then
 WScript.Quit(0)
End If

If wscript.arguments.count<2 Then
 Wscript.Echo "VBS Code Encoder v1.0 Powered by ENUN. http://www.enun.net/"
 Wscript.Echo "Notes: dFileName Must be '*.vbe'!"
 Wscript.Echo "Usage: cscript.exe //nologo sFileName dFileName"
 Wscript.Echo "   eg: cscript.exe //nologo test.vbs enc.vbe"
 WScript.Quit(0)
End If

sFileName = Wscript.Arguments(0)
dFileName = Wscript.Arguments(1)

Set ObjectFSO = CreateObject("Scripting.FileSystemObject")
Set ReadData = ObjectFSO.OpenTextFile(sFileName, 1)

ObjectFSO.OpenTextFile(dFileName, 8, true).Write(Encoder(ReadData.Readall))

Function Encoder(data)
    Encoder = CreateObject("Scripting.Encoder").EncodeScriptFile(".vbs", data, 0, "VBScript")
End Function

二、解密

复制代码 代码如下:

option explicit

Dim oArgs, NomFichier

'Optional argument : the encoded filename

NomFichier=""
Set oArgs = WScript.Arguments
Select Case oArgs.Count

Case 0 'No Arg, popup a dialog box to choose the file
        NomFichier=BrowseForFolder("Choose an encoded file", &H4031, &H0011)
Case 1
        If Instr(oArgs(0),"?")=0 Then '-? ou /? => aide
                NomFichier=oArgs(0)
        End If
Case Else
        WScript.Echo "Too many parameters"
End Select

Set oArgs = Nothing

If NomFichier<>"" Then
        Dim fso
        Set fso=WScript.CreateObject("Scripting.FileSystemObject")
        If fso.FileExists(NomFichier) Then
                Dim fic,contenu
                Set fic = fso.OpenTextFile(NomFichier, 1)
                Contenu=fic.readAll
                fic.close
                Set fic=Nothing
                Const TagInit="#@~^" '#@~^awQAAA==
                Const TagFin="==^#~@" '& chr(0)
                Dim DebutCode, FinCode
                Do
     FinCode=0
     DebutCode=Instr(Contenu,TagInit)
     If DebutCode>0 Then
      If (Instr(DebutCode,Contenu,"==")-DebutCode)=10 Then 'If "==" follows the tag
       FinCode=Instr(DebutCode,Contenu,TagFin)
       If FinCode>0 Then
        Contenu=Left(Contenu,DebutCode-1) & _
        Decode(Mid(Contenu,DebutCode+12,FinCode-DebutCode-12-6)) & _
        Mid(Contenu,FinCode+6)
       End If
      End If
     End If
                Loop Until FinCode=0
                WScript.Echo Contenu
        Else
                WScript.Echo Nomfichier & " not found"
        End If
        Set fso=Nothing

Else
        WScript.Echo "Please give a filename"
        WScript.Echo "Usage : " & wscript.fullname  & " " & WScript.ScriptFullName & " <filename>"

End If
 

Function Decode(Chaine)
        Dim se,i,c,j,index,ChaineTemp
        Dim tDecode(127)
        Const Combinaison="1231232332321323132311233213233211323231311231321323112331123132"
        Set se=WSCript.CreateObject("Scripting.Encoder")
        For i=9 to 127
                tDecode(i)="JLA"
        Next

        For i=9 to 127
                ChaineTemp=Mid(se.EncodeScriptFile(".vbs",string(3,i),0,""),13,3)
                For j=1 to 3
                        c=Asc(Mid(ChaineTemp,j,1))
                        tDecode(c)=Left(tDecode(c),j-1) & chr(i) & Mid(tDecode(c),j+1)
                Next
        Next

        'Next line we correct a bug, otherwise a ")" could be decoded to a ">"
        tDecode(42)=Left(tDecode(42),1) & ")" & Right(tDecode(42),1)
        Set se=Nothing
        Chaine=Replace(Replace(Chaine,"@&",chr(10)),"@#",chr(13))
        Chaine=Replace(Replace(Chaine,"@*",">"),"@!","<")
        Chaine=Replace(Chaine,"@$","@")
        index=-1
        For i=1 to Len(Chaine)
                c=asc(Mid(Chaine,i,1))
                If c<128 Then index=index+1
                If (c=9) or ((c>31) and (c<128)) Then
                        If (c<>60) and (c<>62) and (c<>64) Then
                                Chaine=Left(Chaine,i-1) & Mid(tDecode(c),Mid(Combinaison,(index mod 64)+1,1),1) & Mid(Chaine,i+1)
                        End If
                End If
        Next
        Decode=Chaine
End Function
 

Function BrowseForFolder(ByVal pstrPrompt, ByVal pintBrowseType, ByVal pintLocation)
        Dim ShellObject, pstrTempFolder, x
        Set ShellObject=WScript.CreateObject("Shell.Application")
        On Error Resume Next
        Set pstrTempFolder=ShellObject.BrowseForFolder(&H0,pstrPrompt,pintBrowseType,pintLocation)
        BrowseForFolder=pstrTempFolder.ParentFolder.ParseName(pstrTempFolder.Title).Path
        If Err.Number<>0 Then BrowseForFolder=""
        Set pstrTempFolder=Nothing
        Set ShellObject=Nothing
End Function

原文: http://www.enun.net/?p=866

时间: 2024-10-01 02:45:19

VBS 加解密 For MS Script Encode的相关文章

VBS 加解密 For MS Script Encode_vbs

一.加密 复制代码 代码如下: Dim ObjectFSO If (lcase(right(wscript.fullname,11))="wscript.exe") Then WScript.Quit(0)End If If wscript.arguments.count<2 Then Wscript.Echo "VBS Code Encoder v1.0 Powered by ENUN. http://www.enun.net/" Wscript.Echo

对经MS Script Encode加密的ASP进行解密

encode|加密|解密 微软的脚本编码器( SCRENC.EXE )是微软提供的可以对ASP脚本源码进行编码加密的一个工具.应用开发商通过使用这个工具,达到 Web 主机和 Web 客户不能查看或修改它们的源代码.有关SCRENC.EXE的详细内容请参看笔者的文章<对ASP脚本源代码进行加密>.在某种情况下如果我们忘了做源码备份,就无法再进行加工.修改了.怎么能把加过密的代码再恢复回来呢? 在这里,我们提供一个解密软件(ZWDECODE.EXE 需要这个软件者请查阅http://www.zh

用MS script encode加密asp

encode|加密 Active Server Page技术为应用开发商提供了基于脚本的直观.快速.高效的应用开发手段,极大地提高了开发的效果.但由于ASP脚本是采用明文(plain text)方式来编写的,所以应用开发商辛苦开发出来的ASP应用程序,一旦发布到运行环境中去后,就很难确保这些"源代码"不会被流传出去.这样就产生了如何有效地保护开发出来的ASP脚本源代码的需求. ASP运行机制 ASP脚本是一系列按特定语法(目前支持vbscript和jscript两种脚本语言)编写的,与

VBS 加解密 For CAPICOM

这篇文章主要介绍了vbs中通过CAPICOM进行加解密的实现代码,需要的朋友可以参考下   复制代码 代码如下: '****************************************************************************** ' ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, ' EITHER EXPRESSED OR IMPLIE

VBS 加解密 For CAPICOM_vbs

复制代码 代码如下: '******************************************************************************'' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, ' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED ' WA

JScript.Encode 脚本在线解密 代码_脚本加解密

JScript.Encode 脚本在线解密 用途:   1. 解密英文信函(如果您想加密/解密中文信函等等,请查阅 文本 Unicode 码加密与解密 ):   2. 秘密数字信息:   3. BBS 等上面发布英文.数字留言:   4. 网页解密.   此类 JScript.Encode 码解密,只解密英文.符号,对中文文字不解密.   使用本页面可以解密 javascript 函数,将 script 标记中的内容复制后进行解密(可多次解密),然后将标记修改为 <script language

VB.net2008实例 编写文字加解密程序

  本篇文章的主要开发环境是Visual Studio 2008,Visual Studio系列产品一直以来都提供了强大的控件功能,然而我们利用这些控件可以编写出功能强大的应用程序,Visual Studio2008在一些特性上也做出了许多的改进.本文主要利用微软的最新.net开发工具为大家展示文字加密与解密的应用方法,为大家介绍创建基本加密与解密程序的一些技巧.很适合.net开发工具的初学者,具有一定的实用价值. 打开 Visual Studio 2008在文件 (File) 菜单上,单击新建

一个java的DES加解密类转换成C#

原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.Pattern; //import java.util.Hashtable; import javax.crypto.*; import javax.crypto.spec.*; import sun.misc.*; /** * des加密解密 */ pu

两种JavaScript的AES加密方式(可与Java相互加解密)_javascript技巧

由于JavaScript属于弱类型脚本语言,因此当其与强类型的后台语言进行数据交互时会产生各种问题,特别是加解密的操作.本人由于工作中遇到用js与Java进行相互加解密的问题,在网上查了很多资料及代码段,均无法解决.后总结多篇文档内容终于找到解决办法,现记录与此: 下面给大家介绍两种JavaScript的AES加密方式,具体详情如下所示: 第一种:加解密时需要秘钥(key)和秘钥偏移量(iv)的情况,在线验证地址:http://www.seacha.com/tools/aes.html //该方