cyberchef 9.39.3 → 9.39.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/core/config/OperationConfig.json +8 -2
- package/src/core/operations/Fork.mjs +11 -2
- package/src/core/operations/Merge.mjs +8 -2
- package/src/core/operations/Subsection.mjs +10 -1
- package/tests/operations/index.mjs +1 -0
- package/tests/operations/tests/Fork.mjs +14 -3
- package/tests/operations/tests/Subsection.mjs +102 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyberchef",
|
|
3
|
-
"version": "9.39.
|
|
3
|
+
"version": "9.39.4",
|
|
4
4
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
|
5
5
|
"author": "n1474335 <n1474335@gmail.com>",
|
|
6
6
|
"homepage": "https://gchq.github.io/CyberChef",
|
|
@@ -8340,13 +8340,19 @@
|
|
|
8340
8340
|
},
|
|
8341
8341
|
"Merge": {
|
|
8342
8342
|
"module": "Default",
|
|
8343
|
-
"description": "Consolidate all branches back into a single trunk. The opposite of Fork.",
|
|
8343
|
+
"description": "Consolidate all branches back into a single trunk. The opposite of Fork. Unticking the Merge All checkbox will only consolidate all branches up to the nearest Fork/Subsection.",
|
|
8344
8344
|
"infoURL": null,
|
|
8345
8345
|
"inputType": "string",
|
|
8346
8346
|
"outputType": "string",
|
|
8347
8347
|
"flowControl": true,
|
|
8348
8348
|
"manualBake": false,
|
|
8349
|
-
"args": [
|
|
8349
|
+
"args": [
|
|
8350
|
+
{
|
|
8351
|
+
"name": "Merge All",
|
|
8352
|
+
"type": "boolean",
|
|
8353
|
+
"value": true
|
|
8354
|
+
}
|
|
8355
|
+
]
|
|
8350
8356
|
},
|
|
8351
8357
|
"Microsoft Script Decoder": {
|
|
8352
8358
|
"module": "Default",
|
|
@@ -65,12 +65,21 @@ class Fork extends Operation {
|
|
|
65
65
|
if (input)
|
|
66
66
|
inputs = input.split(splitDelim);
|
|
67
67
|
|
|
68
|
+
// Set to 1 as if we are here, then there is one, the current one.
|
|
69
|
+
let numOp = 1;
|
|
68
70
|
// Create subOpList for each tranche to operate on
|
|
69
|
-
//
|
|
71
|
+
// all remaining operations unless we encounter a Merge
|
|
70
72
|
for (i = state.progress + 1; i < opList.length; i++) {
|
|
71
73
|
if (opList[i].name === "Merge" && !opList[i].disabled) {
|
|
72
|
-
|
|
74
|
+
numOp--;
|
|
75
|
+
if (numOp === 0 || opList[i].ingValues[0])
|
|
76
|
+
break;
|
|
77
|
+
else
|
|
78
|
+
// Not this Fork's Merge.
|
|
79
|
+
subOpList.push(opList[i]);
|
|
73
80
|
} else {
|
|
81
|
+
if (opList[i].name === "Fork" || opList[i].name === "Subsection")
|
|
82
|
+
numOp++;
|
|
74
83
|
subOpList.push(opList[i]);
|
|
75
84
|
}
|
|
76
85
|
}
|
|
@@ -20,10 +20,16 @@ class Merge extends Operation {
|
|
|
20
20
|
this.name = "Merge";
|
|
21
21
|
this.flowControl = true;
|
|
22
22
|
this.module = "Default";
|
|
23
|
-
this.description = "Consolidate all branches back into a single trunk. The opposite of Fork.";
|
|
23
|
+
this.description = "Consolidate all branches back into a single trunk. The opposite of Fork. Unticking the Merge All checkbox will only consolidate all branches up to the nearest Fork/Subsection.";
|
|
24
24
|
this.inputType = "string";
|
|
25
25
|
this.outputType = "string";
|
|
26
|
-
this.args = [
|
|
26
|
+
this.args = [
|
|
27
|
+
{
|
|
28
|
+
name: "Merge All",
|
|
29
|
+
type: "boolean",
|
|
30
|
+
value: true,
|
|
31
|
+
}
|
|
32
|
+
];
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
/**
|
|
@@ -67,12 +67,21 @@ class Subsection extends Operation {
|
|
|
67
67
|
subOpList = [];
|
|
68
68
|
|
|
69
69
|
if (input && section !== "") {
|
|
70
|
+
// Set to 1 as if we are here, then there is one, the current one.
|
|
71
|
+
let numOp = 1;
|
|
70
72
|
// Create subOpList for each tranche to operate on
|
|
71
73
|
// all remaining operations unless we encounter a Merge
|
|
72
74
|
for (let i = state.progress + 1; i < opList.length; i++) {
|
|
73
75
|
if (opList[i].name === "Merge" && !opList[i].disabled) {
|
|
74
|
-
|
|
76
|
+
numOp--;
|
|
77
|
+
if (numOp === 0 || opList[i].ingValues[0])
|
|
78
|
+
break;
|
|
79
|
+
else
|
|
80
|
+
// Not this subsection's Merge.
|
|
81
|
+
subOpList.push(opList[i]);
|
|
75
82
|
} else {
|
|
83
|
+
if (opList[i].name === "Fork" || opList[i].name === "Subsection")
|
|
84
|
+
numOp++;
|
|
76
85
|
subOpList.push(opList[i]);
|
|
77
86
|
}
|
|
78
87
|
}
|
|
@@ -31,7 +31,7 @@ TestRegister.addTests([
|
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
op: "Merge",
|
|
34
|
-
args: [],
|
|
34
|
+
args: [true],
|
|
35
35
|
},
|
|
36
36
|
],
|
|
37
37
|
},
|
|
@@ -50,7 +50,7 @@ TestRegister.addTests([
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
op: "Merge",
|
|
53
|
-
args: [],
|
|
53
|
+
args: [true],
|
|
54
54
|
},
|
|
55
55
|
],
|
|
56
56
|
},
|
|
@@ -66,5 +66,16 @@ TestRegister.addTests([
|
|
|
66
66
|
{"op": "Label", "args": ["skipReturn"]},
|
|
67
67
|
{"op": "To Base64", "args": ["A-Za-z0-9+/="]}
|
|
68
68
|
]
|
|
69
|
-
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: "Fork, Partial Merge",
|
|
72
|
+
input: "Hello World",
|
|
73
|
+
expectedOutput: "48656c6c6f 576f726c64",
|
|
74
|
+
recipeConfig: [
|
|
75
|
+
{ "op": "Fork", "args": [" ", " ", false] },
|
|
76
|
+
{ "op": "Fork", "args": ["l", "l", false] },
|
|
77
|
+
{ "op": "Merge", "args": [false] },
|
|
78
|
+
{ "op": "To Hex", "args": ["None", 0] },
|
|
79
|
+
]
|
|
80
|
+
},
|
|
70
81
|
]);
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subsection Tests.
|
|
3
|
+
*
|
|
4
|
+
* @author n1073645 [n1073645@gmail.com]
|
|
5
|
+
* @copyright Crown Copyright 2022
|
|
6
|
+
* @license Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
import TestRegister from "../../lib/TestRegister.mjs";
|
|
9
|
+
|
|
10
|
+
TestRegister.addTests([
|
|
11
|
+
{
|
|
12
|
+
name: "Subsection: nothing",
|
|
13
|
+
input: "",
|
|
14
|
+
expectedOutput: "",
|
|
15
|
+
recipeConfig: [
|
|
16
|
+
{
|
|
17
|
+
"op": "Subsection",
|
|
18
|
+
"args": ["", true, true, false],
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "Subsection, Full Merge: nothing",
|
|
24
|
+
input: "",
|
|
25
|
+
expectedOutput: "",
|
|
26
|
+
recipeConfig: [
|
|
27
|
+
{
|
|
28
|
+
"op": "Subsection",
|
|
29
|
+
"args": ["", true, true, false],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"op": "Merge",
|
|
33
|
+
"args": [true],
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "Subsection, Partial Merge: nothing",
|
|
39
|
+
input: "",
|
|
40
|
+
expectedOutput: "",
|
|
41
|
+
recipeConfig: [
|
|
42
|
+
{
|
|
43
|
+
"op": "Subsection",
|
|
44
|
+
"args": ["", true, true, false],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"op": "Merge",
|
|
48
|
+
"args": [false],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: "Subsection, Full Merge: Base64 with Hex",
|
|
54
|
+
input: "SGVsbG38675629ybGQ=",
|
|
55
|
+
expectedOutput: "Hello World",
|
|
56
|
+
recipeConfig: [
|
|
57
|
+
{
|
|
58
|
+
"op": "Subsection",
|
|
59
|
+
"args": ["386756", true, true, false],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"op": "From Hex",
|
|
63
|
+
"args": ["Auto"],
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"op": "Merge",
|
|
67
|
+
"args": [true],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"op": "From Base64",
|
|
71
|
+
"args": ["A-Za-z0-9+/=", true, false],
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "Subsection, Partial Merge: Base64 with Hex surrounded by binary data.",
|
|
77
|
+
input: "000000000SGVsbG38675629ybGQ=0000000000",
|
|
78
|
+
expectedOutput: "000000000Hello World0000000000",
|
|
79
|
+
recipeConfig: [
|
|
80
|
+
{
|
|
81
|
+
"op": "Subsection",
|
|
82
|
+
"args": ["SGVsbG38675629ybGQ=", true, true, false],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"op": "Subsection",
|
|
86
|
+
"args": ["386756", true, true, false],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"op": "From Hex",
|
|
90
|
+
"args": ["Auto"],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"op": "Merge",
|
|
94
|
+
"args": [false],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"op": "From Base64",
|
|
98
|
+
"args": ["A-Za-z0-9+/=", true, false],
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
]);
|