Browse Source

Merge branch 'FromNegs' of https://github.com/qistoph/CyberChef into qistoph-FromNegs

n1474335 6 years ago
parent
commit
ca47ba3c7c
3 changed files with 45 additions and 2 deletions
  1. 10 1
      src/core/operations/FromDecimal.mjs
  2. 2 1
      test/index.mjs
  3. 33 0
      test/tests/operations/FromDecimal.mjs

+ 10 - 1
src/core/operations/FromDecimal.mjs

@@ -29,6 +29,11 @@ class FromDecimal extends Operation {
                 "name": "Delimiter",
                 "type": "option",
                 "value": DELIM_OPTIONS
+            },
+            {
+                "name": "Convert negatives",
+                "type": "boolean",
+                "value": false
             }
         ];
         this.patterns = [
@@ -71,7 +76,11 @@ class FromDecimal extends Operation {
      * @returns {byteArray}
      */
     run(input, args) {
-        return fromDecimal(input, args[0]);
+        let data = fromDecimal(input, args[0]);
+        if (args[1]) { // Convert negatives
+            data = data.map(v => v < 0 ? 0xFF + v + 1 : v);
+        }
+        return data;
     }
 
 }

+ 2 - 1
test/index.mjs

@@ -42,7 +42,8 @@ import "./tests/operations/Crypt";
 import "./tests/operations/DateTime";
 import "./tests/operations/ExtractEmailAddresses";
 import "./tests/operations/Fork";
-import "./tests/operations/FromGeohash.mjs";
+import "./tests/operations/FromDecimal";
+import "./tests/operations/FromGeohash";
 import "./tests/operations/Hash";
 import "./tests/operations/HaversineDistance";
 import "./tests/operations/Hexdump";

+ 33 - 0
test/tests/operations/FromDecimal.mjs

@@ -0,0 +1,33 @@
+/**
+ * From Decimal tests
+ *
+ * @author qistoph
+ * @copyright Crown Copyright 2018
+ * @licence Apache-2.0
+ */
+import TestRegister from "../../TestRegister";
+
+TestRegister.addTests([
+	{
+		name: "From Decimal",
+		input: "83 97 109 112 108 101 32 84 101 120 116",
+		expectedOutput: "Sample Text",
+		recipeConfig: [
+			{
+				op: "From Decimal",
+				args: ["Space", false]
+			},
+		],
+	},
+	{
+		name: "From Decimal with negatives",
+		input: "-130,-140,-152,-151,115,33,0,-1",
+		expectedOutput: "~this!\u0000\u00ff",
+		recipeConfig: [
+			{
+				op: "From Decimal",
+				args: ["Comma", true]
+			},
+		],
+	},
+]);