现今网络环境下,数据泄露问题日益普遍。由于大量数据存储在计算机中,计算机数据安全成为了当今亟待解决的一个问题。为了解决这一问题,开发了各种各样的加密软件,然而有时候我们真正需要加密的是自己编写的脚本。VBScript脚本是一种基于微软Windows Script Host(WSH)技术的脚本语言,具有运行速度快,易于编写等特点。本文将介绍如何用VBScript脚本加密,并实现脚本的保密性。
一、 VBScript脚本基础知识
VBScript脚本最初的设计目的是为了自动化Windows操作系统的管理工作。由于语法简单,易于学习,VBScript脚本广泛应用于自动化测试,网络管理等领域。VBScript脚本通过Windows Script Host(WSH)运行,所以Windows操作系统都可以运行VBScript脚本。VBScript脚本主要采用不同的对象模型来实现自己的各种功能。例如文件操作采用FileSystemObject对象,网络操作采用WinHttp.WinHttpRequest对象等。
二、 VBScript脚本加密方法
保障脚本安全需要采取一些手段使脚本文件难以被破解。加密是一种最基本,也是最普遍的保障数据安全的手段。VBScript脚本加密可以通过Command Line Script Host(CScript.exe)完成。下面是一个最简单的VBScript脚本: ```vbscript Msgbox \"Hello World!\" ```
现在我们试用一下Cscript.exe来执行这个脚本文件,终端界面显示为: ```vbscript cscript Hello.vbs ``` ``` Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. Hello World! ```
可以看出,VBScript脚本可以通过Cscript.exe来执行,因此VBScript脚本也可以通过Cscript.exe来加密。VBScript脚本加密的流程如下: 1.创建加密脚本(Encrypt.vbs)。 2.执行加密脚本,生成密钥文件和加密文件。 3.在原脚本文件中添加读取密钥文件,并将加密文件解密的代码段。 4.执行加密后的脚本文件。
步骤一:设计加密脚本(Encrypt.vbs) ```vbscript ‘Encrypt.vbs dim fso, keyfile, scriptfile, inTextStream, outTextStream, str set fso = CreateObject(\"Scripting.FileSystemObject\") set scriptfile = fso.OpenTextFile(WScript.Arguments.Item(0)) set inTextStream = scriptfile.OpenAsTextStream(1,-2) set keyfile = fso.CreateTextFile(WScript.Arguments.Item(1)) set outTextStream = keyfile.OpenAsTextStream(2,-2) str = inTextStream.ReadAll Dim i, ch For i = 1 To Len(str) ch = Asc(Mid(str, i, 1)) Xor i outTextStream.Write Chr(ch) Next inTextStream.Close outTextStream.Close scriptfile.Close ```
代码解释:
首先我们需要打开动态对象VBScript将Object对象转化为FileSystemObject对象(fso),然后定义要加密的脚本文件(scriptfile)和用于存放密钥文件的文件名(keyfile)。接着则将脚本文件转化为文本流(inTextStream),密钥文件也转化为输出文本流(outTextStream)。
在这里我们采用异或运算实现加密脚本的方式来保障数据的安全性,异或运算具有自反性和对称性,即两次异或同一个数得到的还是原来的数。我们通过在ASC码字符的基础上增加一个相应的数字,使加密文件的密钥即该数字,同时对加密字符串做相应的异或释放即可。
步骤二:执行加密脚本
运行Encrypt.vbs脚本: ```vbscript cscript Encrypt.vbs Hello.vbs Hello.vbe ```
执行结果为:
可以看到,我们利用Cscript.exe将脚本文件加密了,生成了Hello.vbe和Encrypt.vbs两个文件。
步骤三:添加解密代码段
当我们执行加密后的脚本文件报错了怎么办?这时候我们就需要添加解密代码段来实现解密操作。 ```vbscript ‘Hello.vbs Dim fso, keyfile, scriptfile, inTextStream, outTextStream, str set fso = CreateObject(\"Scripting.FileSystemObject\") set keyfile = fso.OpenTextFile(\"Hello.key\") set scriptfile = fso.CreateTextFile(\"Hello.vbs\") set outTextStream = scriptfile.OpenAsTextStream(2,-2) set inTextStream = keyfile.OpenAsTextStream(1,-2) if inTextStream.AtEndOfStream <> True Then str = inTextStream.ReadAll Dim i, ch For i = 1 To Len(str) ch = Asc(Mid(str, i, 1)) Xor i outTextStream.Write Chr(ch) Next end if set shell = CreateObject(\"WScript.Shell\") shell.Run \"Hello.vbs\" ```
代码解释:
我们通过FSO对象打开密钥文件并转化为输入文本流(inTextStream),同时创建脚本文件(scriptfile)并转化为输出文本流(outTextStream)。最后我们遍历密钥文件,使用异或密码将加密过的字符串还原成为原始的脚本内容,然后将其写入到Hello.vbs文件中。
在代码文件最底部,我们使用“shell.Run”来执行原始脚本文件。
步骤四:执行加密后的脚本文件
我们通过Cscript来执行加密后的脚本文件:
```cscript Hello.vbe```
执行结果为:
通过以上可知,我们已经通过VBScript脚本加密的方式成功的保障了我们脚本的安全。
三、 VBScript脚本加密的风险
虽然VBScript脚本加密技术无疑可以增加脚本的安全性,但也需要我们面对一些风险。比如,如果使用的加密算法被破解,那么我们所有的加密数据都将失去安全性。
另外,在实现加密脚本操作时,为了方便程序的调试,有时候需要在代码文件中添加一些临时的输出代码,这样一来很可能会泄露加密数据。
此外,一旦加密脚本代码泄露,黑客无需经过重新编译脚本文件,就可以轻松获取源代码内容和脚本的运行关键信息。
结论
本文详细介绍了VBScript脚本的基础知识,以及如何使用VBScript脚本加密,并实现脚本的保密性。VBScript脚本采用异或运算实现加密的方式,还原出脚本的方式即采用相应的异或释放。本文同时也分析了VBScript脚本加密的风险,使得我们在进行加密操作的时候更加注意数据的安全。