Converted MagicObject to just dictionaries

This commit is contained in:
n1073645 2019-12-18 10:55:16 +00:00
parent c8b474eef4
commit 1bbcc8d542
44 changed files with 879 additions and 890 deletions

View file

@ -1,17 +0,0 @@
/**
* A class to make the input/output validation checks easier to define.
*/
class magicObject {
/**
* @param inRegexes
* @param outRegexes
* @param mimeCheck
*/
constructor (inRegexes = null, outRegexes = null, mimeCheck = null, entropyTests=null) {
this.inRegexes = inRegexes;
this.outRegexes = outRegexes;
this.mimeCheck = mimeCheck;
this.entropyTests = entropyTests;
}
} export default magicObject;

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {DELIM_OPTIONS} from "../lib/Delim.mjs"; import {DELIM_OPTIONS} from "../lib/Delim.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* A1Z26 Cipher Decode operation * A1Z26 Cipher Decode operation
@ -34,44 +33,46 @@ class A1Z26CipherDecode extends Operation {
value: DELIM_OPTIONS value: DELIM_OPTIONS
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([12]?[0-9] )+[12]?[0-9]\\s*$", inRegexes: [
flags: "", {
magic: true, match: "^\\s*([12]?[0-9] )+[12]?[0-9]\\s*$",
args: ["Space"] flags: "",
}, magic: true,
{ args: ["Space"]
match: "^\\s*([12]?[0-9],)+[12]?[0-9]\\s*$", },
flags: "", {
magic: true, match: "^\\s*([12]?[0-9],)+[12]?[0-9]\\s*$",
args: ["Comma"] flags: "",
}, magic: true,
{ args: ["Comma"]
match: "^\\s*([12]?[0-9];)+[12]?[0-9]\\s*$", },
flags: "", {
magic: true, match: "^\\s*([12]?[0-9];)+[12]?[0-9]\\s*$",
args: ["Semi-colon"] flags: "",
}, magic: true,
{ args: ["Semi-colon"]
match: "^\\s*([12]?[0-9]:)+[12]?[0-9]\\s*$", },
flags: "", {
magic: true, match: "^\\s*([12]?[0-9]:)+[12]?[0-9]\\s*$",
args: ["Colon"] flags: "",
}, magic: true,
{ args: ["Colon"]
match: "^\\s*([12]?[0-9]\\n)+[12]?[0-9]\\s*$", },
flags: "", {
magic: true, match: "^\\s*([12]?[0-9]\\n)+[12]?[0-9]\\s*$",
args: ["Line feed"] flags: "",
}, magic: true,
{ args: ["Line feed"]
match: "^\\s*([12]?[0-9]\\r\\n)+[12]?[0-9]\\s*$", },
flags: "", {
magic: true, match: "^\\s*([12]?[0-9]\\r\\n)+[12]?[0-9]\\s*$",
args: ["CRLF"] flags: "",
} magic: true,
]); args: ["CRLF"]
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
import { import {
BACON_ALPHABETS, BACON_ALPHABETS,
BACON_TRANSLATION_CASE, BACON_TRANSLATION_AMNZ, BACON_TRANSLATIONS, BACON_CLEARER_MAP, BACON_NORMALIZE_MAP, BACON_TRANSLATION_CASE, BACON_TRANSLATION_AMNZ, BACON_TRANSLATIONS, BACON_CLEARER_MAP, BACON_NORMALIZE_MAP,
@ -45,56 +44,58 @@ class BaconCipherDecode extends Operation {
"value": false "value": false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([01]{5}\\s?)+$", inRegexes: [
flags: "", {
magic: true, match: "^\\s*([01]{5}\\s?)+$",
args: ["Standard (I=J and U=V)", "0/1", false] flags: "",
}, magic: true,
{ args: ["Standard (I=J and U=V)", "0/1", false]
match: "^\\s*([01]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([01]{5}\\s?)+$",
args: ["Standard (I=J and U=V)", "0/1", true] flags: "",
}, magic: true,
{ args: ["Standard (I=J and U=V)", "0/1", true]
match: "^\\s*([AB]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([AB]{5}\\s?)+$",
args: ["Standard (I=J and U=V)", "A/B", false] flags: "",
}, magic: true,
{ args: ["Standard (I=J and U=V)", "A/B", false]
match: "^\\s*([AB]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([AB]{5}\\s?)+$",
args: ["Standard (I=J and U=V)", "A/B", true] flags: "",
}, magic: true,
{ args: ["Standard (I=J and U=V)", "A/B", true]
match: "^\\s*([01]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([01]{5}\\s?)+$",
args: ["Complete", "0/1", false] flags: "",
}, magic: true,
{ args: ["Complete", "0/1", false]
match: "^\\s*([01]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([01]{5}\\s?)+$",
args: ["Complete", "0/1", true] flags: "",
}, magic: true,
{ args: ["Complete", "0/1", true]
match: "^\\s*([AB]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([AB]{5}\\s?)+$",
args: ["Complete", "A/B", false] flags: "",
}, magic: true,
{ args: ["Complete", "A/B", false]
match: "^\\s*([AB]{5}\\s?)+$", },
flags: "", {
magic: true, match: "^\\s*([AB]{5}\\s?)+$",
args: ["Complete", "A/B", true] flags: "",
} magic: true,
]); args: ["Complete", "A/B", true]
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
import Bzip2 from "libbzip2-wasm"; import Bzip2 from "libbzip2-wasm";
import { isWorkerEnvironment } from "../Utils.mjs"; import { isWorkerEnvironment } from "../Utils.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
@ -35,18 +34,17 @@ class Bzip2Decompress extends Operation {
value: false value: false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\x42\\x5a\\x68", inRegexes: [
flags: "", {
magic: true, match: "^\\x42\\x5a\\x68",
args: [] flags: "",
} magic: true,
], args: []
null, }],
null, entropyTests: criteria.compressedToDecompressed
criteria.compressedToDecompressed };
);
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
/** /**
@ -43,20 +42,22 @@ class CSVToJSON extends Operation {
value: ["Array of dictionaries", "Array of arrays"] value: ["Array of dictionaries", "Array of arrays"]
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([A-Z\\s]*,){5}", inRegexes: [
flags: "i", {
magic: true, match: "^\\s*([A-Z\\s]*,){5}",
args: [",", "\r\n", "Array of dictionaries"] flags: "i",
}, magic: true,
{ args: [",", "\r\n", "Array of dictionaries"]
match: "^\\s*([A-Z\\s]*,){5}", },
flags: "i", {
magic: true, match: "^\\s*([A-Z\\s]*,){5}",
args: [",", "\r\n", "Array of arrays"] flags: "i",
} magic: true,
]); args: [",", "\r\n", "Array of arrays"]
}]
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
import {fromHex} from "../lib/Hex.mjs"; import {fromHex} from "../lib/Hex.mjs";
/** /**
@ -38,26 +37,28 @@ class ChangeIPFormat extends Operation {
"value": ["Dotted Decimal", "Decimal", "Octal", "Hex"] "value": ["Dotted Decimal", "Decimal", "Octal", "Hex"]
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", inRegexes: [
flags: "", {
magic: false, match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$",
args: ["Dotted Decimal", "Decimal"] flags: "",
}, magic: false,
{ args: ["Dotted Decimal", "Decimal"]
match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", },
flags: "", {
magic: false, match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$",
args: ["Dotted Decimal", "Octal"] flags: "",
}, magic: false,
{ args: ["Dotted Decimal", "Octal"]
match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$", },
flags: "", {
magic: false, match: "^\\s*([0-9]{1,3}\\.){3}[0-9]{1,3}$",
args: ["Dotted Decimal", "Hex"] flags: "",
} magic: false,
]); args: ["Dotted Decimal", "Hex"]
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
import cptable from "codepage"; import cptable from "codepage";
/** /**
@ -27,14 +26,16 @@ class CitrixCTX1Decode extends Operation {
this.inputType = "ArrayBuffer"; this.inputType = "ArrayBuffer";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "([A-Z]{4}){10,}", inRegexes: [
flags: "", {
magic: true, match: "([A-Z]{4}){10,}",
args: [] flags: "",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Dechunk HTTP response operation * Dechunk HTTP response operation
@ -25,14 +24,16 @@ class DechunkHTTPResponse extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*[0-9A-F]+\r\n", inRegexes: [
flags: "i", {
magic: true, match: "^\\s*[0-9A-F]+\r\n",
args: [] flags: "i",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Decode NetBIOS Name operation * Decode NetBIOS Name operation
@ -31,14 +30,16 @@ class DecodeNetBIOSName extends Operation {
"value": 65 "value": 65
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*\\S{32}$", inRegexes: [
flags: "", {
magic: true, match: "^\\s*\\S{32}$",
args: [65] flags: "",
} magic: true,
]); args: [65]
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
@ -26,24 +25,25 @@ class DefangIPAddresses extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-f]{4}:){7}[0-9a-f]{4})\\s*$", inRegexes: [
flags: "i", {
magic: true, match: "^\\s*(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-f]{4}:){7}[0-9a-f]{4})\\s*$",
args: [], flags: "i",
} magic: true,
], args: [],
[ }
{ ],
match: "^\\s*(([0-9]{1,3}\\[\\.\\]){3}[0-9]{1,3}|([0-9a-f]{4}\\[\\:\\]){7}[0-9a-f]{4})\\s*$", outRegexes: [
flags: "i", {
magic: true, match: "^\\s*(([0-9]{1,3}\\[\\.\\]){3}[0-9]{1,3}|([0-9a-f]{4}\\[\\:\\]){7}[0-9a-f]{4})\\s*$",
shouldMatch: true, flags: "i",
args: [] magic: true,
} shouldMatch: true,
] args: []
); }]
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import {URL_REGEX, DOMAIN_REGEX} from "../lib/Extract.mjs"; import {URL_REGEX, DOMAIN_REGEX} from "../lib/Extract.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* DefangURL operation * DefangURL operation
@ -48,65 +47,67 @@ class DefangURL extends Operation {
value: ["Valid domains and full URLs", "Only full URLs", "Everything"] value: ["Valid domains and full URLs", "Only full URLs", "Everything"]
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", inRegexes: [
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [false, false, false, "Everything"], flags: "i",
}, magic: false,
{ args: [false, false, false, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [true, false, false, "Everything"], flags: "i",
}, magic: false,
{ args: [true, false, false, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [false, true, false, "Everything"], flags: "i",
}, magic: false,
{ args: [false, true, false, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [true, true, false, "Everything"], flags: "i",
}, magic: false,
{ args: [true, true, false, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [false, false, true, "Everything"], flags: "i",
}, magic: false,
{ args: [false, false, true, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [true, false, true, "Everything"], flags: "i",
}, magic: false,
{ args: [true, false, true, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [false, true, true, "Everything"], flags: "i",
}, magic: false,
{ args: [false, true, true, "Everything"],
match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(https?|ftp)://(-\\.)?([^\\s/?\\.#-]+\\.?)+(/\\S*)?\\s*$",
args: [true, true, true, "Everything"], flags: "i",
} magic: false,
], args: [true, true, true, "Everything"],
[ }
{ ],
match: "^\\s*(h(tt|xx)ps?|ftp)(://|\\[://\\])(-(\\.|\\[\\.\\]))?([^\\s/?\\.\\[\\]#-]+(\\.|\\[\\.\\])?)+(/\\S*)?\\s*$", outRegexes: [
flags: "i", {
magic: false, match: "^\\s*(h(tt|xx)ps?|ftp)(://|\\[://\\])(-(\\.|\\[\\.\\]))?([^\\s/?\\.\\[\\]#-]+(\\.|\\[\\.\\])?)+(/\\S*)?\\s*$",
shouldMatch: true, flags: "i",
args: [true, true, true, "Everything"], magic: false,
} shouldMatch: true,
]); args: [true, true, true, "Everything"],
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Escape Unicode Characters operation * Escape Unicode Characters operation
@ -45,26 +44,28 @@ class EscapeUnicodeCharacters extends Operation {
"value": true "value": true
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "\\\\u(?:[\\da-f]{4,6})", inRegexes: [
flags: "i", {
magic: true, match: "\\\\u(?:[\\da-f]{4,6})",
args: ["\\u"] flags: "i",
}, magic: true,
{ args: ["\\u"]
match: "%u(?:[\\da-f]{4,6})", },
flags: "i", {
magic: true, match: "%u(?:[\\da-f]{4,6})",
args: ["%u"] flags: "i",
}, magic: true,
{ args: ["%u"]
match: "U\\+(?:[\\da-f]{4,6})", },
flags: "i", {
magic: true, match: "U\\+(?:[\\da-f]{4,6})",
args: ["U+"] flags: "i",
}, magic: true,
]); args: ["U+"]
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Format MAC addresses operation * Format MAC addresses operation
@ -56,14 +55,16 @@ class FormatMACAddresses extends Operation {
"value": false "value": false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([0-9a-f]{2}:){5}[0-9a-f]{2}$", inRegexes: [
flags: "i", {
magic: false, match: "^\\s*([0-9a-f]{2}:){5}[0-9a-f]{2}$",
args: ["Both", true, true, true, true, true] flags: "i",
} magic: false,
]); args: ["Both", true, true, true, true, true]
}]
};
} }
/** /**

View file

@ -9,7 +9,6 @@ import Utils from "../Utils.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import {ENCODING_SCHEME, ENCODING_LOOKUP, FORMAT} from "../lib/BCD.mjs"; import {ENCODING_SCHEME, ENCODING_LOOKUP, FORMAT} from "../lib/BCD.mjs";
import BigNumber from "bignumber.js"; import BigNumber from "bignumber.js";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -51,18 +50,17 @@ class FromBCD extends Operation {
"value": FORMAT "value": FORMAT
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^(?:\\d{4} ){3,}\\d{4}$", inRegexes: [
flags: "", {
magic: true, match: "^(?:\\d{4} ){3,}\\d{4}$",
args: ["8 4 2 1", true, false, "Nibbles"] flags: "",
} magic: true,
], args: ["8 4 2 1", true, false, "Nibbles"]
null, }],
null, entropyTests: criteria.binary
criteria.binary };
);
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -38,21 +37,20 @@ class FromBase32 extends Operation {
value: true value: true
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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]
},
],
null,
null,
{ {
input: [4.2, 5], inRegexes: [
output: criteria.entropyOfText {
} 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]
}],
entropyTests: {
input: [4.2, 5],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import {ALPHABET_OPTIONS} from "../lib/Base58.mjs"; import {ALPHABET_OPTIONS} from "../lib/Base58.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From Base58 operation * From Base58 operation
@ -39,20 +38,22 @@ class FromBase58 extends Operation {
"value": true "value": true
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^[1-9A-HJ-NP-Za-km-z]{20,}$", inRegexes: [
flags: "", {
magic: true, match: "^[1-9A-HJ-NP-Za-km-z]{20,}$",
args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false] flags: "",
}, magic: true,
{ args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false]
match: "^[1-9A-HJ-NP-Za-km-z]{20,}$", },
flags: "", {
magic: true, match: "^[1-9A-HJ-NP-Za-km-z]{20,}$",
args: ["rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz", false] flags: "",
}, magic: true,
]); args: ["rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz", false]
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import {fromBase64, ALPHABET_OPTIONS} from "../lib/Base64.mjs"; import {fromBase64, ALPHABET_OPTIONS} from "../lib/Base64.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -38,93 +37,93 @@ class FromBase64 extends Operation {
value: true value: true
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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]
},
],
null,
null,
{ {
input: [4, 5], inRegexes: [
output: criteria.entropyOfText {
} 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]
},
],
entropyTests: {
input: [4, 5],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {alphabetName, ALPHABET_OPTIONS} from "../lib/Base85.mjs"; import {alphabetName, ALPHABET_OPTIONS} from "../lib/Base85.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From Base85 operation * From Base85 operation
@ -34,26 +33,28 @@ class FromBase85 extends Operation {
value: ALPHABET_OPTIONS value: ALPHABET_OPTIONS
}, },
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*(<~)?([!-u]{4})+([!-u]{1,3})??(~>)?\\s*$", inRegexes: [
flags: "", {
magic: false, match: "^\\s*(<~)?([!-u]{4})+([!-u]{1,3})??(~>)?\\s*$",
args: ["!-u", true] flags: "",
}, magic: false,
{ args: ["!-u", true]
match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{4})+([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{1,3})??(~>)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{4})+([0-9A-Z.-:+=^!/*?&<>()[]{}@%$#]{1,3})??(~>)?\\s*$",
args: ["0-9a-zA-Z.-:+=^!/*?&<>()[]{}@%$#", true] flags: "i",
}, magic: false,
{ args: ["0-9a-zA-Z.-:+=^!/*?&<>()[]{}@%$#", true]
match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{4})+([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{1,3})??(~>)?\\s*$", },
flags: "i", {
magic: false, match: "^\\s*(<~)?([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{4})+([0-9A-Z.-:+=^!/*?&_<>()[]{}@%$#;`|~]{1,3})??(~>)?\\s*$",
args: ["0-9A-Za-z!#$%&()*+-;<=>?@^_`{|~}", true] flags: "i",
} magic: false,
]); args: ["0-9A-Za-z!#$%&()*+-;<=>?@^_`{|~}", true]
}]
};
} }
/** /**

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {BIN_DELIM_OPTIONS} from "../lib/Delim.mjs"; import {BIN_DELIM_OPTIONS} from "../lib/Delim.mjs";
import {fromBinary} from "../lib/Binary.mjs"; import {fromBinary} from "../lib/Binary.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -35,54 +34,53 @@ class FromBinary extends Operation {
"value": BIN_DELIM_OPTIONS "value": BIN_DELIM_OPTIONS
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^(?:[01]{8})+$", inRegexes: [
flags: "", {
magic: true, match: "^(?:[01]{8})+$",
args: ["None"] flags: "",
}, magic: true,
{ args: ["None"]
match: "^(?:[01]{8})(?: [01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?: [01]{8})*$",
args: ["Space"] flags: "",
}, magic: true,
{ args: ["Space"]
match: "^(?:[01]{8})(?:,[01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?:,[01]{8})*$",
args: ["Comma"] flags: "",
}, magic: true,
{ args: ["Comma"]
match: "^(?:[01]{8})(?:;[01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?:;[01]{8})*$",
args: ["Semi-colon"] flags: "",
}, magic: true,
{ args: ["Semi-colon"]
match: "^(?:[01]{8})(?::[01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?::[01]{8})*$",
args: ["Colon"] flags: "",
}, magic: true,
{ args: ["Colon"]
match: "^(?:[01]{8})(?:\\n[01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?:\\n[01]{8})*$",
args: ["Line feed"] flags: "",
}, magic: true,
{ args: ["Line feed"]
match: "^(?:[01]{8})(?:\\r\\n[01]{8})*$", },
flags: "", {
magic: true, match: "^(?:[01]{8})(?:\\r\\n[01]{8})*$",
args: ["CRLF"] flags: "",
}, magic: true,
], args: ["CRLF"]
null, }],
null, entropyTests: criteria.binary
criteria.binary };
);
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import {DELIM_OPTIONS} from "../lib/Delim.mjs"; import {DELIM_OPTIONS} from "../lib/Delim.mjs";
import {fromDecimal} from "../lib/Decimal.mjs"; import {fromDecimal} from "../lib/Decimal.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -38,51 +37,50 @@ class FromDecimal extends Operation {
"value": false "value": false
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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]
},
],
null,
null,
{ {
input: [2.5, 3], inRegexes: [
output: criteria.entropyOfText {
} 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]
}],
entropyTests: {
input: [2.5, 3],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From HTML Entity operation * From HTML Entity operation
@ -26,14 +25,16 @@ class FromHTMLEntity extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "&(?:#\\d{2,3}|#x[\\da-f]{2}|[a-z]{2,6});", inRegexes: [
flags: "i", {
magic: true, match: "&(?:#\\d{2,3}|#x[\\da-f]{2}|[a-z]{2,6});",
args: [] flags: "i",
}, magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import {fromHex, FROM_HEX_DELIM_OPTIONS} from "../lib/Hex.mjs"; import {fromHex, FROM_HEX_DELIM_OPTIONS} from "../lib/Hex.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -34,69 +33,68 @@ class FromHex extends Operation {
value: FROM_HEX_DELIM_OPTIONS value: FROM_HEX_DELIM_OPTIONS
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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"]
}
],
null,
null,
{ {
input: [2, 3], inRegexes: [
output: criteria.entropyOfText {
} 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"]
}],
entropyTests: {
input: [2, 3],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {fromHex} from "../lib/Hex.mjs"; import {fromHex} from "../lib/Hex.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -28,20 +27,20 @@ class FromHexContent extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "byteArray"; this.outputType = "byteArray";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{
match: "^\\s*.*?\\|([0-9a-f]{2})+\\|.*$",
flags: "i",
magic: true,
args: []
}
],
null,
null,
{ {
input: [3, 4], inRegexes: [
output: criteria.entropyOfText {
}); match: "^\\s*.*?\\|([0-9a-f]{2})+\\|.*$",
flags: "i",
magic: true,
args: []
}],
entropyTests: {
input: [3, 4],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import { fromHex } from "../lib/Hex.mjs"; import { fromHex } from "../lib/Hex.mjs";
import { isWorkerEnvironment } from "../Utils.mjs"; import { isWorkerEnvironment } from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
@ -29,20 +28,20 @@ class FromHexdump extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "byteArray"; this.outputType = "byteArray";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{
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: []
},
],
null,
null,
{ {
input: [3, 4], inRegexes: [
output: criteria.entropyOfText {
}); 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: []
}],
entropyTests: {
input: [3, 4],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {LETTER_DELIM_OPTIONS, WORD_DELIM_OPTIONS} from "../lib/Delim.mjs"; import {LETTER_DELIM_OPTIONS, WORD_DELIM_OPTIONS} from "../lib/Delim.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From Morse Code operation * From Morse Code operation
@ -38,20 +37,20 @@ class FromMorseCode extends Operation {
"value": WORD_DELIM_OPTIONS "value": WORD_DELIM_OPTIONS
} }
]; ];
this.checks = new magicObject([ this.checks =
{
match: "(?:^[-. \\n]{5,}$|^[_. \\n]{5,}$|^(?:dash|dot| |\\n){5,}$)",
flags: "i",
magic: true,
args: ["Space", "Line feed"]
},
],
null,
null,
{ {
input: [0, 2], inRegexes: [
output: [3, 6] {
}); match: "(?:^[-. \\n]{5,}$|^[_. \\n]{5,}$|^(?:dash|dot| |\\n){5,}$)",
flags: "i",
magic: true,
args: ["Space", "Line feed"]
}],
entropyTests: {
input: [0, 2],
output: [3, 6]
}
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {DELIM_OPTIONS} from "../lib/Delim.mjs"; import {DELIM_OPTIONS} from "../lib/Delim.mjs";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
/** /**
@ -34,50 +33,50 @@ class FromOctal extends Operation {
"value": DELIM_OPTIONS "value": DELIM_OPTIONS
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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"]
},
],
null,
null,
{ {
input: [2.5, 3], inRegexes: [
output: criteria.entropyOfText {
}); 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"]
}],
entropyTests: {
input: [2.5, 3],
output: criteria.entropyOfText
}
};
} }
/** /**

View file

@ -9,7 +9,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From Quoted Printable operation * From Quoted Printable operation
@ -29,14 +28,16 @@ class FromQuotedPrintable extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "byteArray"; this.outputType = "byteArray";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^[\\x21-\\x3d\\x3f-\\x7e \\t]{0,76}(?:=[\\da-f]{2}|=\\r?\\n)(?:[\\x21-\\x3d\\x3f-\\x7e \\t]|=[\\da-f]{2}|=\\r?\\n)*$", inRegexes: [
flags: "i", {
magic: true, match: "^[\\x21-\\x3d\\x3f-\\x7e \\t]{0,76}(?:=[\\da-f]{2}|=\\r?\\n)(?:[\\x21-\\x3d\\x3f-\\x7e \\t]|=[\\da-f]{2}|=\\r?\\n)*$",
args: [] flags: "i",
}, magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import moment from "moment-timezone"; import moment from "moment-timezone";
import {UNITS} from "../lib/DateTime.mjs"; import {UNITS} from "../lib/DateTime.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* From UNIX Timestamp operation * From UNIX Timestamp operation
@ -34,32 +33,34 @@ class FromUNIXTimestamp extends Operation {
"value": UNITS "value": UNITS
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^1?\\d{9}$", inRegexes: [
flags: "", {
magic: true, match: "^1?\\d{9}$",
args: ["Seconds (s)"] flags: "",
}, magic: true,
{ args: ["Seconds (s)"]
match: "^1?\\d{12}$", },
flags: "", {
magic: true, match: "^1?\\d{12}$",
args: ["Milliseconds (ms)"] flags: "",
}, magic: true,
{ args: ["Milliseconds (ms)"]
match: "^1?\\d{15}$", },
flags: "", {
magic: true, match: "^1?\\d{15}$",
args: ["Microseconds (μs)"] flags: "",
}, magic: true,
{ args: ["Microseconds (μs)"]
match: "^1?\\d{18}$", },
flags: "", {
magic: true, match: "^1?\\d{18}$",
args: ["Nanoseconds (ns)"] flags: "",
}, magic: true,
]); args: ["Nanoseconds (ns)"]
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import zlibAndGzip from "zlibjs/bin/zlib_and_gzip.min.js"; import zlibAndGzip from "zlibjs/bin/zlib_and_gzip.min.js";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
const Zlib = zlibAndGzip.Zlib; const Zlib = zlibAndGzip.Zlib;
@ -29,18 +28,17 @@ class Gunzip extends Operation {
this.inputType = "ArrayBuffer"; this.inputType = "ArrayBuffer";
this.outputType = "ArrayBuffer"; this.outputType = "ArrayBuffer";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\x1f\\x8b\\x08", inRegexes: [
flags: "", {
magic: true, match: "^\\x1f\\x8b\\x08",
args: [] flags: "",
}, magic: true,
], args: []
null, }],
null, entropyTests: criteria.compressedToDecompressed
criteria.compressedToDecompressed };
);
} }
/** /**

View file

@ -6,7 +6,6 @@
import r from "jsrsasign"; import r from "jsrsasign";
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Object Identifier to Hex operation * Object Identifier to Hex operation
@ -26,14 +25,16 @@ class ObjectIdentifierToHex extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([0-9]{1,3}\\.)+[0-9]{1,3}\\s*$", inRegexes: [
flags: "", {
magic: true, match: "^\\s*([0-9]{1,3}\\.)+[0-9]{1,3}\\s*$",
args: [] flags: "",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -9,7 +9,6 @@ import Utils from "../Utils.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import {strToIpv6, ipv6ToStr, ipv4ToStr, IPV6_REGEX} from "../lib/IP.mjs"; import {strToIpv6, ipv6ToStr, ipv4ToStr, IPV6_REGEX} from "../lib/IP.mjs";
import BigNumber from "bignumber.js"; import BigNumber from "bignumber.js";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse IPv6 address operation * Parse IPv6 address operation
@ -29,14 +28,16 @@ class ParseIPv6Address extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([a-f\\d]{4}:?)+\\s*$", inRegexes: [
flags: "i", {
magic: false, match: "^\\s*([a-f\\d]{4}:?)+\\s*$",
args: [] flags: "i",
} magic: false,
]); args: []
}]
};
} }
/** /**

View file

@ -8,7 +8,6 @@ import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import { isImage } from "../lib/FileType.mjs"; import { isImage } from "../lib/FileType.mjs";
import { parseQrCode } from "../lib/QRCode.mjs"; import { parseQrCode } from "../lib/QRCode.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse QR Code operation * Parse QR Code operation
@ -34,15 +33,17 @@ class ParseQRCode extends Operation {
"value": false "value": false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)", inRegexes: [
flags: "", {
args: [false], match: "^(?:\\xff\\xd8\\xff|\\x89\\x50\\x4e\\x47|\\x47\\x49\\x46|.{8}\\x57\\x45\\x42\\x50|\\x42\\x4d)",
magic: true, flags: "",
useful: true args: [false],
} magic: true,
]); useful: true
}]
};
} }
/** /**

View file

@ -9,7 +9,6 @@ import OperationError from "../errors/OperationError.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import { fromBase64 } from "../lib/Base64.mjs"; import { fromBase64 } from "../lib/Base64.mjs";
import { fromHex, toHexFast } from "../lib/Hex.mjs"; import { fromHex, toHexFast } from "../lib/Hex.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse SSH Host Key operation * Parse SSH Host Key operation
@ -39,14 +38,16 @@ class ParseSSHHostKey extends Operation {
] ]
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([A-F\\d]{2}[,;:]){15,}[A-F\\d]{2}\\s*$", inRegexes: [
flags: "i", {
magic: true, match: "^\\s*([A-F\\d]{2}[,;:]){15,}[A-F\\d]{2}\\s*$",
args: ["Hex"] flags: "i",
} magic: true,
]); args: ["Hex"]
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse UNIX file permissions operation * Parse UNIX file permissions operation
@ -26,14 +25,16 @@ class ParseUNIXFilePermissions extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*d[rxw-]{9}\\s*$", inRegexes: [
flags: "", {
magic: true, match: "^\\s*d[rxw-]{9}\\s*$",
args: [] flags: "",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import UAParser from "ua-parser-js"; import UAParser from "ua-parser-js";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse User Agent operation * Parse User Agent operation
@ -26,14 +25,16 @@ class ParseUserAgent extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^(User-Agent:|Mozilla\\/)[^\\n\\r]+\\s*$", inRegexes: [
flags: "i", {
magic: true, match: "^(User-Agent:|Mozilla\\/)[^\\n\\r]+\\s*$",
args: [] flags: "i",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -10,7 +10,6 @@ import { toHex } from "../lib/Hex.mjs";
import { formatByteStr, formatDnStr } from "../lib/PublicKey.mjs"; import { formatByteStr, formatDnStr } from "../lib/PublicKey.mjs";
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Parse X.509 certificate operation * Parse X.509 certificate operation
@ -36,16 +35,18 @@ class ParseX509Certificate extends Operation {
value: ["PEM", "DER Hex", "Base64", "Raw"] value: ["PEM", "DER Hex", "Base64", "Raw"]
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^-+BEGIN CERTIFICATE-+\\r?\\n[\\da-z+/\\n\\r]+-+END CERTIFICATE-+\\r?\\n?$", inRegexes: [
flags: "i", {
magic: true, match: "^-+BEGIN CERTIFICATE-+\\r?\\n[\\da-z+/\\n\\r]+-+END CERTIFICATE-+\\r?\\n?$",
args: [ flags: "i",
"PEM" magic: true,
] args: [
} "PEM"
]); ]
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Remove line numbers operation * Remove line numbers operation
@ -24,14 +23,16 @@ class RemoveLineNumbers extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*([0-9]+ .*?(\\n))+[0-9] .+$", inRegexes: [
flags: "", {
magic: false, match: "^\\s*([0-9]+ .*?(\\n))+[0-9] .+$",
args: [] flags: "",
} magic: false,
]); args: []
}]
};
} }
/** /**

View file

@ -10,7 +10,6 @@ import Operation from "../Operation.mjs";
import OperationError from "../errors/OperationError.mjs"; import OperationError from "../errors/OperationError.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import {isImage} from "../lib/FileType.mjs"; import {isImage} from "../lib/FileType.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Render Image operation * Render Image operation
@ -36,20 +35,20 @@ class RenderImage extends Operation {
"value": ["Raw", "Base64", "Hex"] "value": ["Raw", "Base64", "Hex"]
} }
]; ];
this.checks = new magicObject([ this.checks =
{
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
}
],
null,
{ {
type: "image" inRegexes: [
} {
); 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
}],
mimeCheck: {
type: "image"
}
};
} }
/** /**

View file

@ -6,7 +6,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Strip HTML tags operation * Strip HTML tags operation
@ -37,14 +36,16 @@ class StripHTMLTags extends Operation {
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^<html>(\\S|\\s)*</html>$", inRegexes: [
flags: "i", {
magic: true, match: "^<html>(\\S|\\s)*</html>$",
args: [true, true] flags: "i",
} magic: true,
]); args: [true, true]
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Strip HTTP headers operation * Strip HTTP headers operation
@ -25,14 +24,16 @@ class StripHTTPHeaders extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\s*HTTP(.|\\s)+?(\\r?\\n){2}", inRegexes: [
flags: "", {
magic: true, match: "^\\s*HTTP(.|\\s)+?(\\r?\\n){2}",
args: [] flags: "",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -5,7 +5,6 @@
*/ */
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* URL Decode operation * URL Decode operation
@ -25,14 +24,16 @@ class URLDecode extends Operation {
this.inputType = "string"; this.inputType = "string";
this.outputType = "string"; this.outputType = "string";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: ".*(?:%[\\da-f]{2}.*){4}", inRegexes: [
flags: "i", {
magic: true, match: ".*(?:%[\\da-f]{2}.*){4}",
args: [], flags: "i",
} magic: true,
]); args: [],
}]
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import Stream from "../lib/Stream.mjs"; import Stream from "../lib/Stream.mjs";
import magicObject from "../lib/MagicObject.mjs";
/** /**
* Untar operation * Untar operation
@ -28,14 +27,16 @@ class Untar extends Operation {
this.outputType = "List<File>"; this.outputType = "List<File>";
this.presentType = "html"; this.presentType = "html";
this.args = []; this.args = [];
this.checks = new magicObject([ this.checks =
{ {
match: "^.{257}\\x75\\x73\\x74\\x61\\x72", inRegexes: [
flags: "", {
magic: true, match: "^.{257}\\x75\\x73\\x74\\x61\\x72",
args: [] flags: "",
} magic: true,
]); args: []
}]
};
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import Utils from "../Utils.mjs"; import Utils from "../Utils.mjs";
import unzip from "zlibjs/bin/unzip.min.js"; import unzip from "zlibjs/bin/unzip.min.js";
import magicObject from "../lib/MagicObject.mjs";
import * as criteria from "../lib/MagicCriteria.mjs"; import * as criteria from "../lib/MagicCriteria.mjs";
@ -43,18 +42,17 @@ class Unzip extends Operation {
value: false value: false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\x50\\x4b(?:\\x03|\\x05|\\x07)(?:\\x04|\\x06|\\x08)", inRegexes: [
flags: "", {
magic: true, match: "^\\x50\\x4b(?:\\x03|\\x05|\\x07)(?:\\x04|\\x06|\\x08)",
args: ["", false] flags: "",
}, magic: true,
], args: ["", false]
null, }],
null, entropyTests: criteria.compressedToDecompressed
criteria.compressedToDecompressed };
);
} }
/** /**

View file

@ -7,7 +7,6 @@
import Operation from "../Operation.mjs"; import Operation from "../Operation.mjs";
import {INFLATE_BUFFER_TYPE} from "../lib/Zlib.mjs"; import {INFLATE_BUFFER_TYPE} from "../lib/Zlib.mjs";
import zlibAndGzip from "zlibjs/bin/zlib_and_gzip.min.js"; import zlibAndGzip from "zlibjs/bin/zlib_and_gzip.min.js";
import magicObject from "../lib/MagicObject.mjs";
const Zlib = zlibAndGzip.Zlib; const Zlib = zlibAndGzip.Zlib;
@ -60,14 +59,16 @@ class ZlibInflate extends Operation {
value: false value: false
} }
]; ];
this.checks = new magicObject([ this.checks =
{ {
match: "^\\x78(\\x01|\\x9c|\\xda|\\x5e)", inRegexes: [
flags: "", {
magic: true, match: "^\\x78(\\x01|\\x9c|\\xda|\\x5e)",
args: [0, 0, "Adaptive", false, false] flags: "",
}, magic: true,
]); args: [0, 0, "Adaptive", false, false]
}]
};
} }
/** /**