cyberchef 9.54.0 → 9.55.0

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/CHANGELOG.md CHANGED
@@ -13,6 +13,9 @@ All major and minor version changes will be documented in this file. Details of
13
13
 
14
14
  ## Details
15
15
 
16
+ ### [9.55.0] - 2022-12-09
17
+ - Added 'AMF Encode' and 'AMF Decode' operations [@n1474335] | [760eff4]
18
+
16
19
  ### [9.54.0] - 2022-11-25
17
20
  - Added 'Rabbit' operation [@mikecat] | [#1450]
18
21
 
@@ -339,6 +342,7 @@ All major and minor version changes will be documented in this file. Details of
339
342
 
340
343
 
341
344
 
345
+ [9.55.0]: https://github.com/gchq/CyberChef/releases/tag/v9.55.0
342
346
  [9.54.0]: https://github.com/gchq/CyberChef/releases/tag/v9.54.0
343
347
  [9.53.0]: https://github.com/gchq/CyberChef/releases/tag/v9.53.0
344
348
  [9.52.0]: https://github.com/gchq/CyberChef/releases/tag/v9.52.0
@@ -492,6 +496,7 @@ All major and minor version changes will be documented in this file. Details of
492
496
  [dd18e52]: https://github.com/gchq/CyberChef/commit/dd18e529939078b89867297b181a584e8b2cc7da
493
497
  [a895d1d]: https://github.com/gchq/CyberChef/commit/a895d1d82a2f92d440a0c5eca2bc7c898107b737
494
498
  [31a7f83]: https://github.com/gchq/CyberChef/commit/31a7f83b82e78927f89689f323fcb9185144d6ff
499
+ [760eff4]: https://github.com/gchq/CyberChef/commit/760eff49b5307aaa3104c5e5b437ffe62299acd1
495
500
 
496
501
  [#95]: https://github.com/gchq/CyberChef/pull/299
497
502
  [#173]: https://github.com/gchq/CyberChef/pull/173
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyberchef",
3
- "version": "9.54.0",
3
+ "version": "9.55.0",
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",
@@ -86,6 +86,7 @@
86
86
  "worker-loader": "^3.0.8"
87
87
  },
88
88
  "dependencies": {
89
+ "@astronautlabs/amf": "^0.0.6",
89
90
  "@babel/polyfill": "^7.12.1",
90
91
  "@blu3r4y/lzma": "^2.3.3",
91
92
  "arrive": "^2.4.1",
@@ -151,6 +152,7 @@
151
152
  "process": "^0.11.10",
152
153
  "protobufjs": "^6.11.3",
153
154
  "qr-image": "^3.2.0",
155
+ "reflect-metadata": "^0.1.13",
154
156
  "scryptsy": "^2.1.0",
155
157
  "snackbarjs": "^1.1.0",
156
158
  "sortablejs": "^1.15.0",
@@ -46,6 +46,8 @@
46
46
  "From Quoted Printable",
47
47
  "To Punycode",
48
48
  "From Punycode",
49
+ "AMF Encode",
50
+ "AMF Decode",
49
51
  "To Hex Content",
50
52
  "From Hex Content",
51
53
  "PEM to Hex",
@@ -446,6 +446,46 @@
446
446
  }
447
447
  ]
448
448
  },
449
+ "AMF Decode": {
450
+ "module": "Encodings",
451
+ "description": "Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives.",
452
+ "infoURL": "https://wikipedia.org/wiki/Action_Message_Format",
453
+ "inputType": "ArrayBuffer",
454
+ "outputType": "JSON",
455
+ "flowControl": false,
456
+ "manualBake": false,
457
+ "args": [
458
+ {
459
+ "name": "Format",
460
+ "type": "option",
461
+ "value": [
462
+ "AMF0",
463
+ "AMF3"
464
+ ],
465
+ "defaultIndex": 1
466
+ }
467
+ ]
468
+ },
469
+ "AMF Encode": {
470
+ "module": "Encodings",
471
+ "description": "Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives.",
472
+ "infoURL": "https://wikipedia.org/wiki/Action_Message_Format",
473
+ "inputType": "JSON",
474
+ "outputType": "ArrayBuffer",
475
+ "flowControl": false,
476
+ "manualBake": false,
477
+ "args": [
478
+ {
479
+ "name": "Format",
480
+ "type": "option",
481
+ "value": [
482
+ "AMF0",
483
+ "AMF3"
484
+ ],
485
+ "defaultIndex": 1
486
+ }
487
+ ]
488
+ },
449
489
  "AND": {
450
490
  "module": "Default",
451
491
  "description": "AND the input with the given key.<br>e.g. <code>fe023da5</code>",
@@ -5,6 +5,8 @@
5
5
  * @copyright Crown Copyright 2022
6
6
  * @license Apache-2.0
7
7
  */
8
+ import AMFDecode from "../../operations/AMFDecode.mjs";
9
+ import AMFEncode from "../../operations/AMFEncode.mjs";
8
10
  import CitrixCTX1Decode from "../../operations/CitrixCTX1Decode.mjs";
9
11
  import CitrixCTX1Encode from "../../operations/CitrixCTX1Encode.mjs";
10
12
  import DecodeText from "../../operations/DecodeText.mjs";
@@ -19,6 +21,8 @@ import ToPunycode from "../../operations/ToPunycode.mjs";
19
21
  const OpModules = typeof self === "undefined" ? {} : self.OpModules || {};
20
22
 
21
23
  OpModules.Encodings = {
24
+ "AMF Decode": AMFDecode,
25
+ "AMF Encode": AMFEncode,
22
26
  "Citrix CTX1 Decode": CitrixCTX1Decode,
23
27
  "Citrix CTX1 Encode": CitrixCTX1Encode,
24
28
  "Decode text": DecodeText,
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import CiphersModule from "./Ciphers.mjs";
11
11
  import DefaultModule from "./Default.mjs";
12
+ import EncodingsModule from "./Encodings.mjs";
12
13
  import ImageModule from "./Image.mjs";
13
14
  import CryptoModule from "./Crypto.mjs";
14
15
  import SerialiseModule from "./Serialise.mjs";
@@ -16,7 +17,6 @@ import HashingModule from "./Hashing.mjs";
16
17
  import BletchleyModule from "./Bletchley.mjs";
17
18
  import CompressionModule from "./Compression.mjs";
18
19
  import CodeModule from "./Code.mjs";
19
- import EncodingsModule from "./Encodings.mjs";
20
20
  import DiffModule from "./Diff.mjs";
21
21
  import ShellcodeModule from "./Shellcode.mjs";
22
22
  import ChartsModule from "./Charts.mjs";
@@ -35,6 +35,7 @@ Object.assign(
35
35
  OpModules,
36
36
  CiphersModule,
37
37
  DefaultModule,
38
+ EncodingsModule,
38
39
  ImageModule,
39
40
  CryptoModule,
40
41
  SerialiseModule,
@@ -42,7 +43,6 @@ Object.assign(
42
43
  BletchleyModule,
43
44
  CompressionModule,
44
45
  CodeModule,
45
- EncodingsModule,
46
46
  DiffModule,
47
47
  ShellcodeModule,
48
48
  ChartsModule,
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @author n1474335 [n1474335@gmail.com]
3
+ * @copyright Crown Copyright 2022
4
+ * @license Apache-2.0
5
+ */
6
+
7
+ import Operation from "../Operation.mjs";
8
+ import "reflect-metadata"; // Required as a shim for the amf library
9
+ import { AMF0, AMF3 } from "@astronautlabs/amf";
10
+
11
+ /**
12
+ * AMF Decode operation
13
+ */
14
+ class AMFDecode extends Operation {
15
+
16
+ /**
17
+ * AMFDecode constructor
18
+ */
19
+ constructor() {
20
+ super();
21
+
22
+ this.name = "AMF Decode";
23
+ this.module = "Encodings";
24
+ this.description = "Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives.";
25
+ this.infoURL = "https://wikipedia.org/wiki/Action_Message_Format";
26
+ this.inputType = "ArrayBuffer";
27
+ this.outputType = "JSON";
28
+ this.args = [
29
+ {
30
+ name: "Format",
31
+ type: "option",
32
+ value: ["AMF0", "AMF3"],
33
+ defaultIndex: 1
34
+ }
35
+ ];
36
+ }
37
+
38
+ /**
39
+ * @param {ArrayBuffer} input
40
+ * @param {Object[]} args
41
+ * @returns {JSON}
42
+ */
43
+ run(input, args) {
44
+ const [format] = args;
45
+ const handler = format === "AMF0" ? AMF0 : AMF3;
46
+ const encoded = new Uint8Array(input);
47
+ return handler.Value.deserialize(encoded);
48
+ }
49
+
50
+ }
51
+
52
+ export default AMFDecode;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @author n1474335 [n1474335@gmail.com]
3
+ * @copyright Crown Copyright 2022
4
+ * @license Apache-2.0
5
+ */
6
+
7
+ import Operation from "../Operation.mjs";
8
+ import "reflect-metadata"; // Required as a shim for the amf library
9
+ import { AMF0, AMF3 } from "@astronautlabs/amf";
10
+
11
+ /**
12
+ * AMF Encode operation
13
+ */
14
+ class AMFEncode extends Operation {
15
+
16
+ /**
17
+ * AMFEncode constructor
18
+ */
19
+ constructor() {
20
+ super();
21
+
22
+ this.name = "AMF Encode";
23
+ this.module = "Encodings";
24
+ this.description = "Action Message Format (AMF) is a binary format used to serialize object graphs such as ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service, usually a Flash Media Server or third party alternatives.";
25
+ this.infoURL = "https://wikipedia.org/wiki/Action_Message_Format";
26
+ this.inputType = "JSON";
27
+ this.outputType = "ArrayBuffer";
28
+ this.args = [
29
+ {
30
+ name: "Format",
31
+ type: "option",
32
+ value: ["AMF0", "AMF3"],
33
+ defaultIndex: 1
34
+ }
35
+ ];
36
+ }
37
+
38
+ /**
39
+ * @param {JSON} input
40
+ * @param {Object[]} args
41
+ * @returns {ArrayBuffer}
42
+ */
43
+ run(input, args) {
44
+ const [format] = args;
45
+ const handler = format === "AMF0" ? AMF0 : AMF3;
46
+ const output = handler.Value.any(input).serialize();
47
+ return output.buffer;
48
+ }
49
+
50
+ }
51
+
52
+ export default AMFEncode;
@@ -12,6 +12,8 @@ import AESDecrypt from "./AESDecrypt.mjs";
12
12
  import AESEncrypt from "./AESEncrypt.mjs";
13
13
  import AESKeyUnwrap from "./AESKeyUnwrap.mjs";
14
14
  import AESKeyWrap from "./AESKeyWrap.mjs";
15
+ import AMFDecode from "./AMFDecode.mjs";
16
+ import AMFEncode from "./AMFEncode.mjs";
15
17
  import AND from "./AND.mjs";
16
18
  import AddLineNumbers from "./AddLineNumbers.mjs";
17
19
  import AddTextToImage from "./AddTextToImage.mjs";
@@ -409,6 +411,8 @@ export {
409
411
  AESEncrypt,
410
412
  AESKeyUnwrap,
411
413
  AESKeyWrap,
414
+ AMFDecode,
415
+ AMFEncode,
412
416
  AND,
413
417
  AddLineNumbers,
414
418
  AddTextToImage,
@@ -22,6 +22,8 @@ import {
22
22
  AESEncrypt as core_AESEncrypt,
23
23
  AESKeyUnwrap as core_AESKeyUnwrap,
24
24
  AESKeyWrap as core_AESKeyWrap,
25
+ AMFDecode as core_AMFDecode,
26
+ AMFEncode as core_AMFEncode,
25
27
  AND as core_AND,
26
28
  AddLineNumbers as core_AddLineNumbers,
27
29
  AddTextToImage as core_AddTextToImage,
@@ -419,6 +421,8 @@ function generateChef() {
419
421
  "AESEncrypt": _wrap(core_AESEncrypt),
420
422
  "AESKeyUnwrap": _wrap(core_AESKeyUnwrap),
421
423
  "AESKeyWrap": _wrap(core_AESKeyWrap),
424
+ "AMFDecode": _wrap(core_AMFDecode),
425
+ "AMFEncode": _wrap(core_AMFEncode),
422
426
  "AND": _wrap(core_AND),
423
427
  "addLineNumbers": _wrap(core_AddLineNumbers),
424
428
  "addTextToImage": _wrap(core_AddTextToImage),
@@ -824,6 +828,8 @@ const AESDecrypt = chef.AESDecrypt;
824
828
  const AESEncrypt = chef.AESEncrypt;
825
829
  const AESKeyUnwrap = chef.AESKeyUnwrap;
826
830
  const AESKeyWrap = chef.AESKeyWrap;
831
+ const AMFDecode = chef.AMFDecode;
832
+ const AMFEncode = chef.AMFEncode;
827
833
  const AND = chef.AND;
828
834
  const addLineNumbers = chef.addLineNumbers;
829
835
  const addTextToImage = chef.addTextToImage;
@@ -1223,6 +1229,8 @@ const operations = [
1223
1229
  AESEncrypt,
1224
1230
  AESKeyUnwrap,
1225
1231
  AESKeyWrap,
1232
+ AMFDecode,
1233
+ AMFEncode,
1226
1234
  AND,
1227
1235
  addLineNumbers,
1228
1236
  addTextToImage,
@@ -1626,6 +1634,8 @@ export {
1626
1634
  AESEncrypt,
1627
1635
  AESKeyUnwrap,
1628
1636
  AESKeyWrap,
1637
+ AMFDecode,
1638
+ AMFEncode,
1629
1639
  AND,
1630
1640
  addLineNumbers,
1631
1641
  addTextToImage,