diff --git a/src/core/lib/Test.mjs b/src/core/lib/Test.mjs index 7bd9a3c9..a0509e0a 100644 --- a/src/core/lib/Test.mjs +++ b/src/core/lib/Test.mjs @@ -87,13 +87,14 @@ class potentialOps { for (const op in OperationConfig) { if (("inputRegexes" in OperationConfig[op]) && !!(OperationConfig[op].inputRegexes)) OperationConfig[op].inputRegexes.forEach(pattern => { - opPatterns.push({ - op: op, - match: pattern.match, - flags: pattern.flags, - args: pattern.args, - useful: pattern.useful || false - }); + if(pattern.magic) + opPatterns.push({ + op: op, + match: pattern.match, + flags: pattern.flags, + args: pattern.args, + useful: pattern.useful || false + }); }); } @@ -110,14 +111,15 @@ class potentialOps { for (const op in OperationConfig) { if ((OperationConfig[op].outputRegexes) && !(OperationConfig[op].inputRegexes)) OperationConfig[op].outputRegexes.forEach(pattern => { - opPatterns.push({ - op: op, - match: pattern.match, - flags: pattern.flags, - shouldMatch: pattern.shouldMatch, - args: pattern.args, - useful: pattern.useful || false - }); + if(pattern.magic) + opPatterns.push({ + op: op, + match: pattern.match, + flags: pattern.flags, + shouldMatch: pattern.shouldMatch, + args: pattern.args, + useful: pattern.useful || false + }); }); } diff --git a/src/core/operations/A1Z26CipherDecode.mjs b/src/core/operations/A1Z26CipherDecode.mjs index cc675e6f..8bb140af 100644 --- a/src/core/operations/A1Z26CipherDecode.mjs +++ b/src/core/operations/A1Z26CipherDecode.mjs @@ -38,31 +38,37 @@ class A1Z26CipherDecode extends Operation { { match: "^\\s*([12]?[0-9] )+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["Space"] }, { match: "^\\s*([12]?[0-9],)+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["Comma"] }, { match: "^\\s*([12]?[0-9];)+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["Semi-colon"] }, { match: "^\\s*([12]?[0-9]:)+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["Colon"] }, { match: "^\\s*([12]?[0-9]\\n)+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["Line feed"] }, { match: "^\\s*([12]?[0-9]\\r\\n)+[12]?[0-9]\\s*$", flags: "", + magic: true, args: ["CRLF"] } ]); diff --git a/src/core/operations/BaconCipherDecode.mjs b/src/core/operations/BaconCipherDecode.mjs index ba5a7f0f..7f0311a7 100644 --- a/src/core/operations/BaconCipherDecode.mjs +++ b/src/core/operations/BaconCipherDecode.mjs @@ -49,41 +49,49 @@ class BaconCipherDecode extends Operation { { match: "^\\s*([01]{5}\\s?)+$", flags: "", + magic: true, args: ["Standard (I=J and U=V)", "0/1", false] }, { match: "^\\s*([01]{5}\\s?)+$", flags: "", + magic: true, args: ["Standard (I=J and U=V)", "0/1", true] }, { match: "^\\s*([AB]{5}\\s?)+$", flags: "", + magic: true, args: ["Standard (I=J and U=V)", "A/B", false] }, { match: "^\\s*([AB]{5}\\s?)+$", flags: "", + magic: true, args: ["Standard (I=J and U=V)", "A/B", true] }, { match: "^\\s*([01]{5}\\s?)+$", flags: "", + magic: true, args: ["Complete", "0/1", false] }, { match: "^\\s*([01]{5}\\s?)+$", flags: "", + magic: true, args: ["Complete", "0/1", true] }, { match: "^\\s*([AB]{5}\\s?)+$", flags: "", + magic: true, args: ["Complete", "A/B", false] }, { match: "^\\s*([AB]{5}\\s?)+$", flags: "", + magic: true, args: ["Complete", "A/B", true] } ]); diff --git a/src/core/operations/Bzip2Decompress.mjs b/src/core/operations/Bzip2Decompress.mjs index 24fd3c8b..653cc5c8 100644 --- a/src/core/operations/Bzip2Decompress.mjs +++ b/src/core/operations/Bzip2Decompress.mjs @@ -36,9 +36,10 @@ class Bzip2Decompress extends Operation { ]; this.checks = new magicObject([ { - "match": "^\\x42\\x5a\\x68", - "flags": "", - "args": [] + match: "^\\x42\\x5a\\x68", + flags: "", + magic: true, + args: [] } ]); } diff --git a/src/core/operations/CSVToJSON.mjs b/src/core/operations/CSVToJSON.mjs index 033861b4..04ae143a 100644 --- a/src/core/operations/CSVToJSON.mjs +++ b/src/core/operations/CSVToJSON.mjs @@ -47,11 +47,13 @@ class CSVToJSON extends Operation { { match: "^\\s*([A-Z\\s]*,){5}", flags: "i", + magic: true, args: [",", "\r\n", "Array of dictionaries"] }, { match: "^\\s*([A-Z\\s]*,){5}", flags: "i", + magic: true, args: [",", "\r\n", "Array of arrays"] } ]); diff --git a/src/core/operations/ChangeIPFormat.mjs b/src/core/operations/ChangeIPFormat.mjs index adb7fdad..33728b14 100644 --- a/src/core/operations/ChangeIPFormat.mjs +++ b/src/core/operations/ChangeIPFormat.mjs @@ -42,16 +42,19 @@ class ChangeIPFormat extends Operation { { match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", flags: "", + magic: false, args: ["Dotted Decimal", "Decimal"] }, { match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", flags: "", + magic: false, args: ["Dotted Decimal", "Octal"] }, { match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", flags: "", + magic: false, args: ["Dotted Decimal", "Hex"] } ]); diff --git a/src/core/operations/CitrixCTX1Decode.mjs b/src/core/operations/CitrixCTX1Decode.mjs index 450361ba..582aae1e 100644 --- a/src/core/operations/CitrixCTX1Decode.mjs +++ b/src/core/operations/CitrixCTX1Decode.mjs @@ -31,6 +31,7 @@ class CitrixCTX1Decode extends Operation { { match: "([A-Z]{4}){10,}", flags: "", + magic: true, args: [] } ]); diff --git a/src/core/operations/DechunkHTTPResponse.mjs b/src/core/operations/DechunkHTTPResponse.mjs index 1f76c8df..a19a2eaa 100644 --- a/src/core/operations/DechunkHTTPResponse.mjs +++ b/src/core/operations/DechunkHTTPResponse.mjs @@ -29,6 +29,7 @@ class DechunkHTTPResponse extends Operation { { match: "^\\s*[0-9A-F]+\r\n", flags: "i", + magic: true, args: [] } ]); diff --git a/src/core/operations/DecodeNetBIOSName.mjs b/src/core/operations/DecodeNetBIOSName.mjs index 699b9a13..4c3e2f07 100644 --- a/src/core/operations/DecodeNetBIOSName.mjs +++ b/src/core/operations/DecodeNetBIOSName.mjs @@ -35,6 +35,7 @@ class DecodeNetBIOSName extends Operation { { match: "^\\s*\\S{32}$", flags: "", + magic: true, args: [65] } ]); diff --git a/src/core/operations/DefangIPAddresses.mjs b/src/core/operations/DefangIPAddresses.mjs index a55d21f8..b44f2d6e 100644 --- a/src/core/operations/DefangIPAddresses.mjs +++ b/src/core/operations/DefangIPAddresses.mjs @@ -30,6 +30,7 @@ class DefangIPAddresses extends Operation { { match: "^\\s*(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-f]{4}:){7}[0-9a-f]{4})\\s*$", flags: "i", + magic: true, args: [], } ], @@ -37,6 +38,7 @@ class DefangIPAddresses extends Operation { { match: "^\\s*(([0-9]{1,3}\\[\\.\\]){3}[0-9]{1,3}|([0-9a-f]{4}\\[\\:\\]){7}[0-9a-f]{4})\\s*$", flags: "i", + magic: true, shouldMatch: true, args: [] } diff --git a/src/core/operations/DefangURL.mjs b/src/core/operations/DefangURL.mjs index 0c9767c1..f5f92e79 100644 --- a/src/core/operations/DefangURL.mjs +++ b/src/core/operations/DefangURL.mjs @@ -52,41 +52,49 @@ class DefangURL extends Operation { { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [false, false, false, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [true, false, false, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [false, true, false, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [true, true, false, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [false, false, true, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [true, false, true, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [false, true, true, "Everything"], }, { match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", flags: "i", + magic: false, args: [true, true, true, "Everything"], } ], @@ -94,6 +102,7 @@ class DefangURL extends Operation { { match: "^\\s*(h(tt|xx)ps?|ftp)(://|\\[://\\])(-(\\.|\\[\\.\\]))?([^\\s/?\\.\\[\\]#-]+(\\.|\\[\\.\\])?)+(/\\S*)?\\s*$", flags: "i", + magic: false, shouldMatch: true, args: [true, true, true, "Everything"], } diff --git a/src/core/operations/EscapeUnicodeCharacters.mjs b/src/core/operations/EscapeUnicodeCharacters.mjs index 7d12d8c2..41186e0a 100644 --- a/src/core/operations/EscapeUnicodeCharacters.mjs +++ b/src/core/operations/EscapeUnicodeCharacters.mjs @@ -49,16 +49,19 @@ class EscapeUnicodeCharacters extends Operation { { match: "\\\\u(?:[\\da-f]{4,6})", flags: "i", + magic: true, args: ["\\u"] }, { match: "%u(?:[\\da-f]{4,6})", flags: "i", + magic: true, args: ["%u"] }, { match: "U\\+(?:[\\da-f]{4,6})", flags: "i", + magic: true, args: ["U+"] }, ]); diff --git a/src/core/operations/FormatMACAddresses.mjs b/src/core/operations/FormatMACAddresses.mjs index ba3d400d..76bf7ae9 100644 --- a/src/core/operations/FormatMACAddresses.mjs +++ b/src/core/operations/FormatMACAddresses.mjs @@ -60,6 +60,7 @@ class FormatMACAddresses extends Operation { { match: "^\\s*([0-9a-f]{2}:){5}[0-9a-f]{2}$", flags: "i", + magic: false, args: ["Both", true, true, true, true, true] } ]); diff --git a/src/core/operations/FromBCD.mjs b/src/core/operations/FromBCD.mjs index 2be4d4c0..92ece6ef 100644 --- a/src/core/operations/FromBCD.mjs +++ b/src/core/operations/FromBCD.mjs @@ -54,6 +54,7 @@ class FromBCD extends Operation { { match: "^(?:\\d{4} ){3,}\\d{4}$", flags: "", + magic: true, args: ["8 4 2 1", true, false, "Nibbles"] } ]); diff --git a/src/core/operations/FromBase32.mjs b/src/core/operations/FromBase32.mjs index e77530b5..dd6ac79e 100644 --- a/src/core/operations/FromBase32.mjs +++ b/src/core/operations/FromBase32.mjs @@ -41,6 +41,7 @@ class FromBase32 extends Operation { { match: "^(?:[A-Z2-7]{8})+(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}={1})?$", flags: "", + magic: true, args: ["A-Z2-7=", false] }, ]); diff --git a/src/core/operations/FromBase58.mjs b/src/core/operations/FromBase58.mjs index ef97e617..144ec28d 100644 --- a/src/core/operations/FromBase58.mjs +++ b/src/core/operations/FromBase58.mjs @@ -43,11 +43,13 @@ class FromBase58 extends Operation { { match: "^[1-9A-HJ-NP-Za-km-z]{20,}$", flags: "", + magic: true, args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false] }, { match: "^[1-9A-HJ-NP-Za-km-z]{20,}$", flags: "", + magic: true, args: ["rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz", false] }, ]); diff --git a/src/core/operations/FromBase64.mjs b/src/core/operations/FromBase64.mjs index ac0ab0bf..f7acdba6 100644 --- a/src/core/operations/FromBase64.mjs +++ b/src/core/operations/FromBase64.mjs @@ -41,66 +41,79 @@ class FromBase64 extends Operation { { match: "^\\s*(?:[A-Z\\d+/]{4})+(?:[A-Z\\d+/]{2}==|[A-Z\\d+/]{3}=)?\\s*$", flags: "i", + magic: true, args: ["A-Za-z0-9+/=", true] }, { match: "^\\s*[A-Z\\d\\-_]{20,}\\s*$", flags: "i", + magic: true, args: ["A-Za-z0-9-_", true] }, { match: "^\\s*(?:[A-Z\\d+\\-]{4}){5,}(?:[A-Z\\d+\\-]{2}==|[A-Z\\d+\\-]{3}=)?\\s*$", flags: "i", + magic: true, args: ["A-Za-z0-9+\\-=", true] }, { match: "^\\s*(?:[A-Z\\d./]{4}){5,}(?:[A-Z\\d./]{2}==|[A-Z\\d./]{3}=)?\\s*$", flags: "i", + magic: true, args: ["./0-9A-Za-z=", true] }, { match: "^\\s*[A-Z\\d_.]{20,}\\s*$", flags: "i", + magic: true, args: ["A-Za-z0-9_.", true] }, { match: "^\\s*(?:[A-Z\\d._]{4}){5,}(?:[A-Z\\d._]{2}--|[A-Z\\d._]{3}-)?\\s*$", flags: "i", + magic: true, args: ["A-Za-z0-9._-", true] }, { match: "^\\s*(?:[A-Z\\d+/]{4}){5,}(?:[A-Z\\d+/]{2}==|[A-Z\\d+/]{3}=)?\\s*$", flags: "i", + magic: true, args: ["0-9a-zA-Z+/=", true] }, { match: "^\\s*(?:[A-Z\\d+/]{4}){5,}(?:[A-Z\\d+/]{2}==|[A-Z\\d+/]{3}=)?\\s*$", flags: "i", + magic: true, args: ["0-9A-Za-z+/=", true] }, { match: "^[ !\"#$%&'()*+,\\-./\\d:;<=>?@A-Z[\\\\\\]^_]{20,}$", flags: "", + magic: true, args: [" -_", false] }, { match: "^\\s*[A-Z\\d+\\-]{20,}\\s*$", flags: "i", + magic: true, args: ["+\\-0-9A-Za-z", true] }, { match: "^\\s*[!\"#$%&'()*+,\\-0-689@A-NP-VX-Z[`a-fh-mp-r]{20,}\\s*$", flags: "", + magic: true, args: ["!-,-0-689@A-NP-VX-Z[`a-fh-mp-r", true] }, { match: "^\\s*(?:[N-ZA-M\\d+/]{4}){5,}(?:[N-ZA-M\\d+/]{2}==|[N-ZA-M\\d+/]{3}=)?\\s*$", flags: "i", + magic: true, args: ["N-ZA-Mn-za-m0-9+/=", true] }, { match: "^\\s*[A-Z\\d./]{20,}\\s*$", flags: "i", + magic: true, args: ["./0-9A-Za-z", true] }, ]); diff --git a/src/core/operations/FromBinary.mjs b/src/core/operations/FromBinary.mjs index 02b3b496..136289a4 100644 --- a/src/core/operations/FromBinary.mjs +++ b/src/core/operations/FromBinary.mjs @@ -38,36 +38,43 @@ class FromBinary extends Operation { { match: "^(?:[01]{8})+$", flags: "", + magic: true, args: ["None"] }, { match: "^(?:[01]{8})(?: [01]{8})*$", flags: "", + magic: true, args: ["Space"] }, { match: "^(?:[01]{8})(?:,[01]{8})*$", flags: "", + magic: true, args: ["Comma"] }, { match: "^(?:[01]{8})(?:;[01]{8})*$", flags: "", + magic: true, args: ["Semi-colon"] }, { match: "^(?:[01]{8})(?::[01]{8})*$", flags: "", + magic: true, args: ["Colon"] }, { match: "^(?:[01]{8})(?:\\n[01]{8})*$", flags: "", + magic: true, args: ["Line feed"] }, { match: "^(?:[01]{8})(?:\\r\\n[01]{8})*$", flags: "", + magic: true, args: ["CRLF"] }, ]); diff --git a/src/core/operations/FromDecimal.mjs b/src/core/operations/FromDecimal.mjs index 7b2b8fe4..9401cbad 100644 --- a/src/core/operations/FromDecimal.mjs +++ b/src/core/operations/FromDecimal.mjs @@ -41,31 +41,37 @@ class FromDecimal extends Operation { { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?: (?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["Space", false] }, { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:,(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["Comma", false] }, { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:;(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["Semi-colon", false] }, { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?::(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["Colon", false] }, { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:\\n(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["Line feed", false] }, { match: "^(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])(?:\\r\\n(?:\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5]))*$", flags: "", + magic: true, args: ["CRLF", false] }, ]); diff --git a/src/core/operations/FromHTMLEntity.mjs b/src/core/operations/FromHTMLEntity.mjs index 75e19cef..1ef47128 100644 --- a/src/core/operations/FromHTMLEntity.mjs +++ b/src/core/operations/FromHTMLEntity.mjs @@ -30,6 +30,7 @@ class FromHTMLEntity extends Operation { { match: "&(?:#\\d{2,3}|#x[\\da-f]{2}|[a-z]{2,6});", flags: "i", + magic: true, args: [] }, ]); diff --git a/src/core/operations/FromHex.mjs b/src/core/operations/FromHex.mjs index d8418e38..0bd1f11b 100644 --- a/src/core/operations/FromHex.mjs +++ b/src/core/operations/FromHex.mjs @@ -37,46 +37,55 @@ class FromHex extends Operation { { match: "^(?:[\\dA-F]{2})+$", flags: "i", + magic: true, args: ["None"] }, { match: "^[\\dA-F]{2}(?: [\\dA-F]{2})*$", flags: "i", + magic: true, args: ["Space"] }, { match: "^[\\dA-F]{2}(?:,[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["Comma"] }, { match: "^[\\dA-F]{2}(?:;[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["Semi-colon"] }, { match: "^[\\dA-F]{2}(?::[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["Colon"] }, { match: "^[\\dA-F]{2}(?:\\n[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["Line feed"] }, { match: "^[\\dA-F]{2}(?:\\r\\n[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["CRLF"] }, { match: "^[\\dA-F]{2}(?:0x[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["0x"] }, { match: "^[\\dA-F]{2}(?:\\\\x[\\dA-F]{2})*$", flags: "i", + magic: true, args: ["\\x"] } ]); diff --git a/src/core/operations/FromHexContent.mjs b/src/core/operations/FromHexContent.mjs index 7f16fdd7..f8281f6b 100644 --- a/src/core/operations/FromHexContent.mjs +++ b/src/core/operations/FromHexContent.mjs @@ -31,6 +31,7 @@ class FromHexContent extends Operation { { match: "^\\s*.*?\\|([0-9a-f]{2})+\\|.*$", flags: "i", + magic: true, args: [] } ]); diff --git a/src/core/operations/FromHexdump.mjs b/src/core/operations/FromHexdump.mjs index 64698ea7..4461c9fe 100644 --- a/src/core/operations/FromHexdump.mjs +++ b/src/core/operations/FromHexdump.mjs @@ -32,6 +32,7 @@ class FromHexdump extends Operation { { match: "^(?:(?:[\\dA-F]{4,16}h?:?)?[ \\t]*((?:[\\dA-F]{2} ){1,8}(?:[ \\t]|[\\dA-F]{2}-)(?:[\\dA-F]{2} ){1,8}|(?:[\\dA-F]{4} )*[\\dA-F]{4}|(?:[\\dA-F]{2} )*[\\dA-F]{2})[^\\n]*\\n?){2,}$", flags: "i", + magic: true, args: [] }, ]); diff --git a/src/core/operations/FromMorseCode.mjs b/src/core/operations/FromMorseCode.mjs index b6b9e01d..87e4b027 100644 --- a/src/core/operations/FromMorseCode.mjs +++ b/src/core/operations/FromMorseCode.mjs @@ -42,6 +42,7 @@ class FromMorseCode extends Operation { { match: "(?:^[-. \\n]{5,}$|^[_. \\n]{5,}$|^(?:dash|dot| |\\n){5,}$)", flags: "i", + magic: true, args: ["Space", "Line feed"] }, ]); diff --git a/src/core/operations/FromOctal.mjs b/src/core/operations/FromOctal.mjs index 293bafbc..0bb7bbe1 100644 --- a/src/core/operations/FromOctal.mjs +++ b/src/core/operations/FromOctal.mjs @@ -37,31 +37,37 @@ class FromOctal extends Operation { { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?: (?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["Space"] }, { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?:,(?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["Comma"] }, { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?:;(?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["Semi-colon"] }, { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?::(?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["Colon"] }, { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?:\\n(?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["Line feed"] }, { match: "^(?:[0-7]{1,2}|[123][0-7]{2})(?:\\r\\n(?:[0-7]{1,2}|[123][0-7]{2}))*$", flags: "", + magic: true, args: ["CRLF"] }, ]); diff --git a/src/core/operations/FromQuotedPrintable.mjs b/src/core/operations/FromQuotedPrintable.mjs index e7f87e89..f3702026 100644 --- a/src/core/operations/FromQuotedPrintable.mjs +++ b/src/core/operations/FromQuotedPrintable.mjs @@ -33,6 +33,7 @@ class FromQuotedPrintable extends Operation { { match: "^[\\x21-\\x3d\\x3f-\\x7e \\t]{0,76}(?:=[\\da-f]{2}|=\\r?\\n)(?:[\\x21-\\x3d\\x3f-\\x7e \\t]|=[\\da-f]{2}|=\\r?\\n)*$", flags: "i", + magic: true, args: [] }, ]); diff --git a/src/core/operations/FromUNIXTimestamp.mjs b/src/core/operations/FromUNIXTimestamp.mjs index cc66dc01..0790cc73 100644 --- a/src/core/operations/FromUNIXTimestamp.mjs +++ b/src/core/operations/FromUNIXTimestamp.mjs @@ -38,21 +38,25 @@ class FromUNIXTimestamp extends Operation { { match: "^1?\\d{9}$", flags: "", + magic: true, args: ["Seconds (s)"] }, { match: "^1?\\d{12}$", flags: "", + magic: true, args: ["Milliseconds (ms)"] }, { match: "^1?\\d{15}$", flags: "", + magic: true, args: ["Microseconds (μs)"] }, { match: "^1?\\d{18}$", flags: "", + magic: true, args: ["Nanoseconds (ns)"] }, ]); diff --git a/src/core/operations/Gunzip.mjs b/src/core/operations/Gunzip.mjs index f947904c..3c0aa365 100644 --- a/src/core/operations/Gunzip.mjs +++ b/src/core/operations/Gunzip.mjs @@ -32,6 +32,7 @@ class Gunzip extends Operation { { match: "^\\x1f\\x8b\\x08", flags: "", + magic: true, args: [] }, ]); diff --git a/src/core/operations/ObjectIdentifierToHex.mjs b/src/core/operations/ObjectIdentifierToHex.mjs index 22419c5d..f372dd98 100644 --- a/src/core/operations/ObjectIdentifierToHex.mjs +++ b/src/core/operations/ObjectIdentifierToHex.mjs @@ -30,6 +30,7 @@ class ObjectIdentifierToHex extends Operation { { match: "^\\s*([0-9]{1,3}\\.?)+\\s*$", flags: "", + magic: true, args: [] } ]); diff --git a/src/core/operations/ParseIPv6Address.mjs b/src/core/operations/ParseIPv6Address.mjs index 6fb7b328..1479aa79 100644 --- a/src/core/operations/ParseIPv6Address.mjs +++ b/src/core/operations/ParseIPv6Address.mjs @@ -33,6 +33,7 @@ class ParseIPv6Address extends Operation { { match: "^\\s*([a-f\\d]{4}:?)+\\s*$", flags: "i", + magic: false, args: [] } ]); diff --git a/src/core/operations/ParseQRCode.mjs b/src/core/operations/ParseQRCode.mjs index db7dea48..eed6813f 100644 --- a/src/core/operations/ParseQRCode.mjs +++ b/src/core/operations/ParseQRCode.mjs @@ -36,10 +36,11 @@ class ParseQRCode extends Operation { ]; this.checks = new magicObject([ { - "match": "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)", - "flags": "", - "args": [false], - "useful": true + match: "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)", + flags: "", + args: [false], + magic: true, + useful: true } ]); } diff --git a/src/core/operations/ParseSSHHostKey.mjs b/src/core/operations/ParseSSHHostKey.mjs index 6d48ee84..9cccdadd 100644 --- a/src/core/operations/ParseSSHHostKey.mjs +++ b/src/core/operations/ParseSSHHostKey.mjs @@ -43,6 +43,7 @@ class ParseSSHHostKey extends Operation { { match: "^\\s*([A-F\\d]{2}[,;:]){15,}[A-F\\d]{2}\\s*$", flags: "i", + magic: true, args: ["Hex"] } ]); diff --git a/src/core/operations/ParseUNIXFilePermissions.mjs b/src/core/operations/ParseUNIXFilePermissions.mjs index 833d0079..dbba150a 100644 --- a/src/core/operations/ParseUNIXFilePermissions.mjs +++ b/src/core/operations/ParseUNIXFilePermissions.mjs @@ -30,6 +30,7 @@ class ParseUNIXFilePermissions extends Operation { { match: "^\\s*d[rxw-]{9}\\s*$", flags: "", + magic: true, args: [] } ]); diff --git a/src/core/operations/ParseUserAgent.mjs b/src/core/operations/ParseUserAgent.mjs index ae989265..a72b36d6 100644 --- a/src/core/operations/ParseUserAgent.mjs +++ b/src/core/operations/ParseUserAgent.mjs @@ -30,6 +30,7 @@ class ParseUserAgent extends Operation { { match: "^(User-Agent:|Mozilla\\/)[^\\n\\r]+\\s*$", flags: "i", + magic: true, args: [] } ]); diff --git a/src/core/operations/ParseX509Certificate.mjs b/src/core/operations/ParseX509Certificate.mjs index 981014dc..7ee6be23 100644 --- a/src/core/operations/ParseX509Certificate.mjs +++ b/src/core/operations/ParseX509Certificate.mjs @@ -38,9 +38,10 @@ class ParseX509Certificate extends Operation { ]; this.checks = new magicObject([ { - "match": "^-+BEGIN CERTIFICATE-+\\r?\\n[\\da-z+/\\n\\r]+-+END CERTIFICATE-+\\r?\\n?$", - "flags": "i", - "args": [ + match: "^-+BEGIN CERTIFICATE-+\\r?\\n[\\da-z+/\\n\\r]+-+END CERTIFICATE-+\\r?\\n?$", + flags: "i", + magic: true, + args: [ "PEM" ] } diff --git a/src/core/operations/RemoveLineNumbers.mjs b/src/core/operations/RemoveLineNumbers.mjs index 76aeda31..b5ef75ce 100644 --- a/src/core/operations/RemoveLineNumbers.mjs +++ b/src/core/operations/RemoveLineNumbers.mjs @@ -28,6 +28,7 @@ class RemoveLineNumbers extends Operation { { match: "^\\s*([0-9]+ .*?(\\n))+[0-9] .+$", flags: "", + magic: true, args: [] } ]); diff --git a/src/core/operations/RenderImage.mjs b/src/core/operations/RenderImage.mjs index 01da3cf0..4d6d30e4 100644 --- a/src/core/operations/RenderImage.mjs +++ b/src/core/operations/RenderImage.mjs @@ -38,10 +38,11 @@ class RenderImage extends Operation { ]; this.checks = new magicObject([ { - "match": "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)", - "flags": "", - "args": ["Raw"], - "useful": true + match: "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)", + flags: "", + magic: true, + args: ["Raw"], + useful: true } ]); } diff --git a/src/core/operations/StripHTMLTags.mjs b/src/core/operations/StripHTMLTags.mjs index 0a9015fd..c0ef6efc 100644 --- a/src/core/operations/StripHTMLTags.mjs +++ b/src/core/operations/StripHTMLTags.mjs @@ -41,6 +41,7 @@ class StripHTMLTags extends Operation { { match: "^(\\S|\\s)*$", flags: "i", + magic: true, args: [true, true] } ]); diff --git a/src/core/operations/StripHTTPHeaders.mjs b/src/core/operations/StripHTTPHeaders.mjs index 4db58ef0..b1cf96e8 100644 --- a/src/core/operations/StripHTTPHeaders.mjs +++ b/src/core/operations/StripHTTPHeaders.mjs @@ -29,6 +29,7 @@ class StripHTTPHeaders extends Operation { { match: "^\\s*HTTP(.|\\s)+?(\\r?\\n){2}", flags: "", + magic: true, args: [] } ]); diff --git a/src/core/operations/URLDecode.mjs b/src/core/operations/URLDecode.mjs index dacf0714..b1b7afc0 100644 --- a/src/core/operations/URLDecode.mjs +++ b/src/core/operations/URLDecode.mjs @@ -29,6 +29,7 @@ class URLDecode extends Operation { { match: ".*(?:%[\\da-f]{2}.*){4}", flags: "i", + magic: true, args: [], } ]); diff --git a/src/core/operations/Untar.mjs b/src/core/operations/Untar.mjs index 88be4394..b81dbc1f 100644 --- a/src/core/operations/Untar.mjs +++ b/src/core/operations/Untar.mjs @@ -30,9 +30,10 @@ class Untar extends Operation { this.args = []; this.checks = new magicObject([ { - "match": "^.{257}\\x75\\x73\\x74\\x61\\x72", - "flags": "", - "args": [] + match: "^.{257}\\x75\\x73\\x74\\x61\\x72", + flags: "", + magic: true, + args: [] } ]); } diff --git a/src/core/operations/Unzip.mjs b/src/core/operations/Unzip.mjs index c776f216..0b5a56b2 100644 --- a/src/core/operations/Unzip.mjs +++ b/src/core/operations/Unzip.mjs @@ -45,6 +45,7 @@ class Unzip extends Operation { { match: "^\\x50\\x4b(?:\\x03|\\x05|\\x07)(?:\\x04|\\x06|\\x08)", flags: "", + magic: true, args: ["", false] }, ]); diff --git a/src/core/operations/ZlibInflate.mjs b/src/core/operations/ZlibInflate.mjs index 83460076..8fced020 100644 --- a/src/core/operations/ZlibInflate.mjs +++ b/src/core/operations/ZlibInflate.mjs @@ -64,6 +64,7 @@ class ZlibInflate extends Operation { { match: "^\\x78(\\x01|\\x9c|\\xda|\\x5e)", flags: "", + magic: true, args: [0, 0, "Adaptive", false, false] }, ]);