mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-21 15:26:16 -04:00
Added Bzip2 compression support
This commit is contained in:
parent
a5703cb4f1
commit
3cc66e9db9
3 changed files with 84 additions and 4 deletions
13
package-lock.json
generated
13
package-lock.json
generated
|
@ -5726,7 +5726,7 @@
|
||||||
},
|
},
|
||||||
"get-stream": {
|
"get-stream": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
||||||
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
|
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
@ -6482,7 +6482,7 @@
|
||||||
},
|
},
|
||||||
"html-webpack-plugin": {
|
"html-webpack-plugin": {
|
||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
|
"resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
|
||||||
"integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
|
"integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -6607,7 +6607,7 @@
|
||||||
},
|
},
|
||||||
"http-proxy-middleware": {
|
"http-proxy-middleware": {
|
||||||
"version": "0.18.0",
|
"version": "0.18.0",
|
||||||
"resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
|
||||||
"integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
|
"integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
@ -7797,6 +7797,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz",
|
||||||
"integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA="
|
"integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA="
|
||||||
},
|
},
|
||||||
|
"libbzip2-wasm": {
|
||||||
|
"version": "0.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/libbzip2-wasm/-/libbzip2-wasm-0.0.3.tgz",
|
||||||
|
"integrity": "sha512-eJpB5ITwsdyjWu7DUJirHaBSFLhSbcz8txvL0Gf9NOb+HIzp/lRxFSDXyNAi59ncbhHe3xX+3gj0o+l8rSdJHQ=="
|
||||||
|
},
|
||||||
"libyara-wasm": {
|
"libyara-wasm": {
|
||||||
"version": "0.0.12",
|
"version": "0.0.12",
|
||||||
"resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-0.0.12.tgz",
|
"resolved": "https://registry.npmjs.org/libyara-wasm/-/libyara-wasm-0.0.12.tgz",
|
||||||
|
@ -9526,7 +9531,7 @@
|
||||||
},
|
},
|
||||||
"parse-asn1": {
|
"parse-asn1": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz",
|
||||||
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
"integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
|
|
@ -110,6 +110,7 @@
|
||||||
"jsqr": "^1.1.1",
|
"jsqr": "^1.1.1",
|
||||||
"jsrsasign": "8.0.12",
|
"jsrsasign": "8.0.12",
|
||||||
"kbpgp": "^2.0.82",
|
"kbpgp": "^2.0.82",
|
||||||
|
"libbzip2-wasm": "0.0.3",
|
||||||
"libyara-wasm": "0.0.12",
|
"libyara-wasm": "0.0.12",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"loglevel": "^1.6.1",
|
"loglevel": "^1.6.1",
|
||||||
|
|
74
src/core/operations/Bzip2Compress.mjs
Normal file
74
src/core/operations/Bzip2Compress.mjs
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* @author Matt C [me@mitt.dev]
|
||||||
|
* @copyright Crown Copyright 2019
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from "../Operation";
|
||||||
|
import OperationError from "../errors/OperationError";
|
||||||
|
import Bzip2 from "libbzip2-wasm";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bzip2 Compress operation
|
||||||
|
*/
|
||||||
|
class Bzip2Compress extends Operation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bzip2Compress constructor
|
||||||
|
*/
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = "Bzip2 Compress";
|
||||||
|
this.module = "Compression";
|
||||||
|
this.description = "yeet";
|
||||||
|
this.infoURL = "https://en.wikipedia.org/wiki/Bzip2";
|
||||||
|
this.inputType = "ArrayBuffer";
|
||||||
|
this.outputType = "File";
|
||||||
|
this.args = [
|
||||||
|
{
|
||||||
|
name: "Block size (100s of kb)",
|
||||||
|
type: "number",
|
||||||
|
value: 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Work factor",
|
||||||
|
type: "number",
|
||||||
|
value: 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Compressed filename",
|
||||||
|
type: "string",
|
||||||
|
value: "compressed.bz2"
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {ArrayBuffer} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {File}
|
||||||
|
*/
|
||||||
|
run(input, args) {
|
||||||
|
const [blockSize, workFactor, filename] = args;
|
||||||
|
if (input.byteLength <= 0) {
|
||||||
|
throw new OperationError("Please provide an input.");
|
||||||
|
}
|
||||||
|
if (ENVIRONMENT_IS_WORKER()) self.sendStatusMessage("Loading Bzip2...");
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
Bzip2().then(bzip2 => {
|
||||||
|
if (ENVIRONMENT_IS_WORKER()) self.sendStatusMessage("Compressing data...");
|
||||||
|
const inpArray = new Uint8Array(input);
|
||||||
|
const bzip2cc = bzip2.compressBZ2(inpArray, blockSize, workFactor);
|
||||||
|
if (bzip2cc.error !== 0) {
|
||||||
|
reject(new OperationError(bzip2cc.error_msg));
|
||||||
|
} else {
|
||||||
|
resolve(new File([bzip2cc.output], filename));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Bzip2Compress;
|
Loading…
Add table
Add a link
Reference in a new issue