mirror of
https://github.com/gchq/CyberChef.git
synced 2025-05-09 07:45:00 -04:00
code cleaning
This commit is contained in:
parent
5f28349769
commit
7bbd471de3
2 changed files with 26 additions and 23 deletions
|
@ -24,6 +24,7 @@ class Mime {
|
||||||
this.mimeObj = Mime._parseMime(input);
|
this.mimeObj = Mime._parseMime(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: Generator?
|
||||||
/**
|
/**
|
||||||
* Extract data from mimeObjects and return object array containing them.
|
* Extract data from mimeObjects and return object array containing them.
|
||||||
*
|
*
|
||||||
|
@ -82,7 +83,7 @@ class Mime {
|
||||||
* @param {boolean} recursive
|
* @param {boolean} recursive
|
||||||
*/
|
*/
|
||||||
decodeHeaderWords(recursive=true) {
|
decodeHeaderWords(recursive=true) {
|
||||||
Mime.walkMime(this.mimeObj, mimePart => {
|
Mime.walkMime(this.mimeObj, function(mimePart) {
|
||||||
if (mimePart.rawHeader) {
|
if (mimePart.rawHeader) {
|
||||||
mimePart.rawHeader = Mime.replaceEncodedWord(mimePart.rawHeader);
|
mimePart.rawHeader = Mime.replaceEncodedWord(mimePart.rawHeader);
|
||||||
}
|
}
|
||||||
|
@ -95,9 +96,9 @@ class Mime {
|
||||||
* @param {boolean} recursive
|
* @param {boolean} recursive
|
||||||
*/
|
*/
|
||||||
decodeMimeObjects(recursive=true) {
|
decodeMimeObjects(recursive=true) {
|
||||||
Mime.walkMime(this.mimeObj,
|
Mime.walkMime(this.mimeObj, function(mimePart) {
|
||||||
mimePart => Mime.decodeMimeMessage(mimePart),
|
Mime.decodeMimeMessage(mimePart);
|
||||||
recursive);
|
}, recursive);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -116,7 +117,7 @@ class Mime {
|
||||||
}
|
}
|
||||||
const sections = [];
|
const sections = [];
|
||||||
|
|
||||||
Mime._splitMultipart(mimeObj.body, boundary).forEach((mimePart) => {
|
Mime._splitMultipart(mimeObj.body, boundary).forEach(function(mimePart) {
|
||||||
sections.push(Mime._parseMime(mimePart));
|
sections.push(Mime._parseMime(mimePart));
|
||||||
}, sections);
|
}, sections);
|
||||||
mimeObj.body = sections;
|
mimeObj.body = sections;
|
||||||
|
@ -135,7 +136,9 @@ class Mime {
|
||||||
const contType = Mime._extractField(mimeObj, "content-type");
|
const contType = Mime._extractField(mimeObj, "content-type");
|
||||||
method(mimeObj);
|
method(mimeObj);
|
||||||
if (recursive && mimeObj.body && contType && contType.startsWith("multipart/")) {
|
if (recursive && mimeObj.body && contType && contType.startsWith("multipart/")) {
|
||||||
mimeObj.body.forEach(obj => Mime.walkMime(obj, method));
|
mimeObj.body.forEach(function(obj) {
|
||||||
|
Mime.walkMime(obj, method);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,27 +253,26 @@ class Mime {
|
||||||
* @param {string} field
|
* @param {string} field
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
static _extractField(mimeObj, field, subfield="value") {
|
static _extractField(mimeObj, field, subfield=null) {
|
||||||
|
if (subfield) {
|
||||||
|
subfield = subfield.toLowerCase();
|
||||||
|
}
|
||||||
if (mimeObj.header.hasOwnProperty(field)) {
|
if (mimeObj.header.hasOwnProperty(field)) {
|
||||||
const fieldSplit = mimeObj.header[field][0].split(/;\s+/g);
|
const fieldSplit = mimeObj.header[field][0].split(/;\s+/g);
|
||||||
for (let i = 0; i < fieldSplit.length; i++) {
|
for (let i = 0; i < fieldSplit.length; i++) {
|
||||||
const eq = fieldSplit[i].indexOf("=");
|
const eq = fieldSplit[i].indexOf("=");
|
||||||
if (eq >= 0) {
|
if (eq >= 0 && fieldSplit[i].length > eq && subfield) {
|
||||||
if (fieldSplit[i].length > eq) {
|
const kv = [fieldSplit[i].substring(0, eq), fieldSplit[i].substring(eq + 1).trim()];
|
||||||
const kv = [fieldSplit[i].substring(0, eq), fieldSplit[i].substring(eq + 1).trim()];
|
if ((kv[1].startsWith("'") && kv[1].endsWith("'")) || (kv[1].startsWith("\"") && kv[1].endsWith("\""))) {
|
||||||
if ((kv[1].startsWith("'") && kv[1].endsWith("'")) || (kv[1].startsWith("\"") && kv[1].endsWith("\""))) {
|
const val = (/(['"])(.+)\1/.exec(kv[1]));
|
||||||
const val = (/(['"])(.+)\1/.exec(kv[1]));
|
if (val && val.length === 3) {
|
||||||
if (val && val.length === 3) {
|
kv[1] = val[2];
|
||||||
kv[1] = val[2];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (subfield.toLowerCase() === kv[0].toLowerCase()) {
|
|
||||||
return kv[1];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw OperationError("Not a valid header entry");
|
|
||||||
}
|
}
|
||||||
} else if (subfield === "value"){
|
if (subfield === kv[0].toLowerCase()) {
|
||||||
|
return kv[1];
|
||||||
|
}
|
||||||
|
} else if (!subfield){
|
||||||
return fieldSplit[i].trim().toLowerCase();
|
return fieldSplit[i].trim().toLowerCase();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -278,6 +280,7 @@ class Mime {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: turn into generator function
|
||||||
/**
|
/**
|
||||||
* Splits a Mime document by the current boundaries and attempts to account
|
* Splits a Mime document by the current boundaries and attempts to account
|
||||||
* for the current new line size which can be either the standard \r\n or \n.
|
* for the current new line size which can be either the standard \r\n or \n.
|
||||||
|
|
|
@ -30,7 +30,7 @@ class ParseIMF extends Operation {
|
||||||
this.presentType = "html";
|
this.presentType = "html";
|
||||||
this.args = [
|
this.args = [
|
||||||
{
|
{
|
||||||
"name": "Decode Encoded-Words",
|
"name": "Decode Mime Encoded Words",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"value": false
|
"value": false
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ class ParseIMF extends Operation {
|
||||||
const dataObj = eml.extractData(fields);
|
const dataObj = eml.extractData(fields);
|
||||||
let subject = null;
|
let subject = null;
|
||||||
const retval = [];
|
const retval = [];
|
||||||
if (dataObj.length >= 1) {
|
if (dataObj.length) {
|
||||||
subject = dataObj[0].fields.subject;
|
subject = dataObj[0].fields.subject;
|
||||||
if (dataObj[0].header) {
|
if (dataObj[0].header) {
|
||||||
retval.push(new File([dataObj[0].header], "Header.txt", {type: "text/plain"}));
|
retval.push(new File([dataObj[0].header], "Header.txt", {type: "text/plain"}));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue