mirror of
https://github.com/gchq/CyberChef.git
synced 2024-11-16 08:58:30 +01:00
52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
/**
|
|
* @author n1474335 [n1474335@gmail.com]
|
|
* @copyright Crown Copyright 2022
|
|
* @license Apache-2.0
|
|
*/
|
|
|
|
import Operation from "../Operation.mjs";
|
|
import "reflect-metadata"; // Required as a shim for the amf library
|
|
import { AMF0, AMF3 } from "@astronautlabs/amf";
|
|
|
|
/**
|
|
* AMF Decode operation
|
|
*/
|
|
class AMFDecode extends Operation {
|
|
|
|
/**
|
|
* AMFDecode constructor
|
|
*/
|
|
constructor() {
|
|
super();
|
|
|
|
this.name = "AMF Decode";
|
|
this.module = "Encodings";
|
|
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.";
|
|
this.infoURL = "https://wikipedia.org/wiki/Action_Message_Format";
|
|
this.inputType = "ArrayBuffer";
|
|
this.outputType = "JSON";
|
|
this.args = [
|
|
{
|
|
name: "Format",
|
|
type: "option",
|
|
value: ["AMF0", "AMF3"],
|
|
defaultIndex: 1
|
|
}
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param {ArrayBuffer} input
|
|
* @param {Object[]} args
|
|
* @returns {JSON}
|
|
*/
|
|
run(input, args) {
|
|
const [format] = args;
|
|
const handler = format === "AMF0" ? AMF0 : AMF3;
|
|
const encoded = new Uint8Array(input);
|
|
return handler.Value.deserialize(encoded);
|
|
}
|
|
|
|
}
|
|
|
|
export default AMFDecode;
|