mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-20 14:56:19 -04:00
Add remove EXIF operation
This commit is contained in:
parent
57dcd961d5
commit
6741ba0783
5 changed files with 90 additions and 0 deletions
|
@ -80,6 +80,7 @@
|
||||||
"lodash": "^4.17.4",
|
"lodash": "^4.17.4",
|
||||||
"moment": "^2.17.1",
|
"moment": "^2.17.1",
|
||||||
"moment-timezone": "^0.5.11",
|
"moment-timezone": "^0.5.11",
|
||||||
|
"piexifjs": "^1.0.3",
|
||||||
"sladex-blowfish": "^0.8.1",
|
"sladex-blowfish": "^0.8.1",
|
||||||
"sortablejs": "^1.5.1",
|
"sortablejs": "^1.5.1",
|
||||||
"split.js": "^1.2.0",
|
"split.js": "^1.2.0",
|
||||||
|
|
|
@ -210,6 +210,7 @@ const Categories = [
|
||||||
"XPath expression",
|
"XPath expression",
|
||||||
"CSS selector",
|
"CSS selector",
|
||||||
"Extract EXIF",
|
"Extract EXIF",
|
||||||
|
"Remove EXIF",
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -3388,6 +3388,19 @@ const OperationConfig = {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Remove EXIF": {
|
||||||
|
description: [
|
||||||
|
"Removes EXIF data from an image.",
|
||||||
|
"<br><br>",
|
||||||
|
"EXIF data is metadata embedded in images (JPEG, JPG, TIFF) and audio files.",
|
||||||
|
"<br><br>",
|
||||||
|
"EXIF data from photos usually contains information about the image file itself as well as the device used to create it.",
|
||||||
|
].join("\n"),
|
||||||
|
run: Image.removeEXIF,
|
||||||
|
inputType: "byteArray",
|
||||||
|
outputType: "byteArray",
|
||||||
|
args: [],
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default OperationConfig;
|
export default OperationConfig;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import * as ExifParser from "exif-parser";
|
import * as ExifParser from "exif-parser";
|
||||||
|
import * as Piexifjs from "piexifjs";
|
||||||
import Utils from "../Utils.js";
|
import Utils from "../Utils.js";
|
||||||
import FileType from "./FileType.js";
|
import FileType from "./FileType.js";
|
||||||
|
|
||||||
|
@ -43,6 +44,31 @@ const Image = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove EXIF operation.
|
||||||
|
*
|
||||||
|
* Removes EXIF data from a byteArray, representing a JPG.
|
||||||
|
*
|
||||||
|
* @author David Moodie [davidmoodie12@gmail.com]
|
||||||
|
* @param {byteArray} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
removeEXIF(input, args) {
|
||||||
|
try {
|
||||||
|
// Piexifjs seems to work best with base64 input
|
||||||
|
const base64 = "data:image/jpeg;base64," + Utils.toBase64(input);
|
||||||
|
const newImageB64 = Piexifjs.remove(base64);
|
||||||
|
|
||||||
|
// Convert the base64 back to byteArray
|
||||||
|
const newImage = Utils.fromBase64(newImageB64.split(",")[1], null, "byteArray");
|
||||||
|
return newImage;
|
||||||
|
} catch (err) {
|
||||||
|
// Simply return input if no EXIF data is found
|
||||||
|
if (err == "Exif not found.") return input;
|
||||||
|
throw "Could not remove EXIF data from image: " + err;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constant
|
* @constant
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue