浏览代码

Changed the name. Small logic change. Changed from split join to regex replace.

bwhitn 8 年之前
父节点
当前提交
0fc2a219a7
共有 5 个文件被更改,包括 26 次插入21 次删除
  1. 1 1
      src/core/config/Categories.js
  2. 5 4
      src/core/config/OperationConfig.js
  3. 17 13
      src/core/operations/MS.js
  4. 1 1
      test/index.js
  5. 2 2
      test/tests/operations/MS.js

+ 1 - 1
src/core/config/Categories.js

@@ -66,7 +66,7 @@ const Categories = [
             "Encode text",
             "Decode text",
             "Swap endianness",
-            "Decode VBE",
+            "Micrsoft Script Decoder",
         ]
     },
     {

+ 5 - 4
src/core/config/OperationConfig.js

@@ -25,6 +25,7 @@ import IP from "../operations/IP.js";
 import JS from "../operations/JS.js";
 import MAC from "../operations/MAC.js";
 import MorseCode from "../operations/MorseCode.js";
+import MS from "../operations/MS.js";
 import NetBIOS from "../operations/NetBIOS.js";
 import Numberwang from "../operations/Numberwang.js";
 import OS from "../operations/OS.js";
@@ -38,7 +39,7 @@ import Tidy from "../operations/Tidy.js";
 import Unicode from "../operations/Unicode.js";
 import URL_ from "../operations/URL.js";
 import UUID from "../operations/UUID.js";
-import VBE from "../operations/VBE.js";
+
 
 /**
  * Type definition for an OpConf.
@@ -3204,9 +3205,9 @@ const OperationConfig = {
             }
         ]
     },
-    "Decode VBE": {
-        description: "Decodes Microsoft VBE files that have been encoded with Microsoft's custom encoding.",
-        run: VBE.runDecodeVBE,
+    "Micrsoft Script Decoder": {
+        description: "Decodes Microsoft Encoded Script files that have been encoded with Microsoft's custom encoding.",
+        run: MS.runDecodeScript,
         inputType: "string",
         outputType: "string",
         args: []

+ 17 - 13
src/core/operations/VBE.js → src/core/operations/MS.js

@@ -1,12 +1,12 @@
 /**
- * Decodes Microsft Encoded VBS files that can be read and executed by cscript.exe/wscript.exe.
+ * Decodes Microsft Encoded Script files that can be read and executed by cscript.exe/wscript.exe.
  * This is a conversion of a Python script that was originally created by Didier Stevens (https://DidierStevens.com).
  *
  * @author bmwhitn [brian.m.whitney@outlook.com]
  *
  * @namespace
  */
-const VBE = {
+const MS = {
 
     /**
      * @constant
@@ -215,17 +215,17 @@ const VBE = {
     ],
 
     /**
-     * @param {string} input
+     * @param {string} data
      * @returns {string}
      */
     decode: function (data) {
         let result = [];
         let index = -1;
-        data = data.split("@&").join(String.fromCharCode(10));
-        data = data.split("@#").join(String.fromCharCode(13));
-        data = data.split("@*").join(">");
-        data = data.split("@!").join("<");
-        data = data.split("@$").join("@");
+        data = data.replace(/@&/g, String.fromCharCode(10));
+        data = data.replace(/@#/g, String.fromCharCode(13));
+        data = data.replace(/@\*/g, ">");
+        data = data.replace(/@!/g, "<");
+        data = data.replace(/@\$/g, "@");
         for (let i = 0; i < data.length; i++) {
             let byte = data.charCodeAt(i);
             let char = data.charAt(i);
@@ -233,7 +233,7 @@ const VBE = {
                 index++;
             }
             if ((byte === 9 || byte > 31 && byte < 128) && byte !== 60 && byte !== 62 && byte !== 64) {
-                char = VBE.D_DECODE[byte].charAt([VBE.D_COMBINATION[index % 64]]);
+                char = MS.D_DECODE[byte].charAt(MS.D_COMBINATION[index % 64]);
             }
             result.push(char);
         }
@@ -245,11 +245,15 @@ const VBE = {
      * @param {Object[]} args
      * @returns {string}
      */
-    runDecodeVBE: function (data, args) {
+    runDecodeScript: function (input, args) {
         let matcher = /#@~\^......==(.+)......==\^#~@/;
-        let encodedData = matcher.exec(data);
-        return VBE.decode(encodedData[1]);
+        let encodedData = matcher.exec(input);
+        if (encodedData){
+            return MS.decode(encodedData[1]);
+        } else {
+            return "";
+        }
     },
 };
 
-export default VBE;
+export default MS;

+ 1 - 1
test/index.js

@@ -22,9 +22,9 @@ import "./tests/operations/DateTime.js";
 import "./tests/operations/FlowControl.js";
 import "./tests/operations/Image.js";
 import "./tests/operations/MorseCode.js";
+import "./tests/operations/MS.js";
 import "./tests/operations/StrUtils.js";
 import "./tests/operations/SeqUtils.js";
-import "./tests/operations/VBE.js";
 
 
 let allTestsPassing = true;

+ 2 - 2
test/tests/operations/VBE.js → test/tests/operations/MS.js

@@ -9,12 +9,12 @@ import TestRegister from "../../TestRegister.js";
 
 TestRegister.addTests([
     {
-        name: "VBE Decode",
+        name: "Micrsoft Script Decoder",
         input: "##@~^DgAAAA==\\ko$K6,JCV^GJqAQAAA==^#~@",
         expectedOutput: "MsgBox \"Hello\"",
         recipeConfig: [
             {
-                "op": "Decode VBE",
+                "op": "Micrsoft Script Decoder",
                 "args": []
             },
         ],