2
0
mirror of https://github.com/gchq/CyberChef synced 2025-12-17 00:33:57 +00:00

Added ELF extractor. You can now specific which categories to search for in file type operations.

This commit is contained in:
n1474335
2019-01-14 18:55:10 +00:00
parent 2307325af8
commit cd2c8078c8
5 changed files with 111 additions and 38 deletions

View File

@@ -8,6 +8,7 @@ import Operation from "../Operation";
// import OperationError from "../errors/OperationError";
import Utils from "../Utils";
import {scanForFileTypes, extractFile} from "../lib/FileType";
import {FILE_SIGNATURES} from "../lib/FileSignatures";
/**
* Extract Files operation
@@ -27,7 +28,13 @@ class ExtractFiles extends Operation {
this.inputType = "ArrayBuffer";
this.outputType = "List<File>";
this.presentType = "html";
this.args = [];
this.args = Object.keys(FILE_SIGNATURES).map(cat => {
return {
name: cat,
type: "boolean",
value: cat === "Miscellaneous" ? false : true
};
});
}
/**
@@ -36,10 +43,15 @@ class ExtractFiles extends Operation {
* @returns {List<File>}
*/
run(input, args) {
const bytes = new Uint8Array(input);
const bytes = new Uint8Array(input),
categories = [];
args.forEach((cat, i) => {
if (cat) categories.push(Object.keys(FILE_SIGNATURES)[i]);
});
// Scan for embedded files
const detectedFiles = scanForFileTypes(bytes);
const detectedFiles = scanForFileTypes(bytes, categories);
// Extract each file that we support
const files = [];