mirror of
https://github.com/gchq/CyberChef.git
synced 2024-11-02 14:11:02 +01:00
Magic operation tidying
This commit is contained in:
parent
6947d2a7f3
commit
865ee6a720
@ -301,7 +301,7 @@ const FlowControl = {
|
||||
|
||||
output += `<tr>
|
||||
<td><a href="#${recipeURL}">${Utils.generatePrettyRecipe(option.recipe, true)}</a></td>
|
||||
<td>${Utils.escapeHtml(Utils.printable(option.data))}</td>
|
||||
<td>${Utils.escapeHtml(Utils.printable(Utils.truncate(option.data, 99)))}</td>
|
||||
<td>${Magic.codeToLanguage(language.lang)}\nScore: ${language.chiSqr.toFixed()}</td>
|
||||
<td>${fileType}</td>
|
||||
</tr>`;
|
||||
|
@ -6,13 +6,12 @@ import FileType from "../operations/FileType.js";
|
||||
|
||||
|
||||
/**
|
||||
* A class for detecting encodings, file types and byte frequencies.
|
||||
* A class for detecting encodings, file types and byte frequencies and
|
||||
* speculatively executing recipes.
|
||||
*
|
||||
* @author n1474335 [n1474335@gmail.com]
|
||||
* @copyright Crown Copyright 2018
|
||||
* @license Apache-2.0
|
||||
*
|
||||
* @class
|
||||
*/
|
||||
class Magic {
|
||||
|
||||
@ -25,15 +24,6 @@ class Magic {
|
||||
this.inputBuffer = new Uint8Array(buf);
|
||||
this.inputStr = Utils.arrayBufferToStr(buf);
|
||||
this.opPatterns = Magic._generateOpPatterns();
|
||||
|
||||
// Match against known encodings
|
||||
// findMatchingOps
|
||||
// Match against known file types
|
||||
// detectFileType
|
||||
// Match against byte frequencies
|
||||
// detectLanguage
|
||||
// Report info to user
|
||||
// Offer to run various recipes based on findings
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,8 +36,9 @@ class Magic {
|
||||
let matches = [];
|
||||
|
||||
for (let i = 0; i < this.opPatterns.length; i++) {
|
||||
let pattern = this.opPatterns[i];
|
||||
const regex = new RegExp(pattern.match, pattern.flags);
|
||||
const pattern = this.opPatterns[i],
|
||||
regex = new RegExp(pattern.match, pattern.flags);
|
||||
|
||||
if (regex.test(this.inputStr)) {
|
||||
matches.push(pattern);
|
||||
}
|
||||
@ -73,6 +64,7 @@ class Magic {
|
||||
});
|
||||
}
|
||||
|
||||
// Sort results so that the most likely match is at the top
|
||||
chiSqrs.sort((a, b) => {
|
||||
return a.chiSqr - b.chiSqr;
|
||||
});
|
||||
@ -98,7 +90,7 @@ class Magic {
|
||||
*
|
||||
* @param {number} [depth=0] - How many levels to try to execute
|
||||
* @param {Object[]} [recipeConfig=[]] - The recipe configuration up to this point
|
||||
* @returns {Object[]} A sorted list of the recipes most likely to result in correct decoding
|
||||
* @returns {Object[]} - A sorted list of the recipes most likely to result in correct decoding
|
||||
*/
|
||||
async speculativeExecution(depth = 0, recipeConfig = []) {
|
||||
if (depth < 0) return [];
|
||||
@ -176,7 +168,6 @@ class Magic {
|
||||
* Generates a list of all patterns that operations claim to be able to decode.
|
||||
*
|
||||
* @private
|
||||
* @static
|
||||
* @returns {Object[]}
|
||||
*/
|
||||
static _generateOpPatterns() {
|
||||
@ -203,7 +194,6 @@ class Magic {
|
||||
* https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test
|
||||
*
|
||||
* @private
|
||||
* @static
|
||||
* @param {number[]} observed
|
||||
* @param {number[]} expected
|
||||
* @returns {number}
|
||||
@ -420,8 +410,6 @@ class Magic {
|
||||
* Byte frequencies of various languages generated from Wikipedia dumps taken in late 2017.
|
||||
* The Chi-Squared test cannot accept expected values of 0, so 0.0001 has been used to account
|
||||
* for bytes that do not normally appear in the language.
|
||||
*
|
||||
* @constant
|
||||
*/
|
||||
const LANG_FREQS = {
|
||||
"ar": [0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.65, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 9.194, 0.002, 0.102, 0.0001, 0.0001, 0.007, 0.001, 0.002, 0.109, 0.108, 0.002, 0.001, 0.03, 0.046, 0.42, 0.018, 0.182, 0.202, 0.135, 0.063, 0.065, 0.061, 0.055, 0.053, 0.062, 0.113, 0.054, 0.001, 0.002, 0.003, 0.002, 0.0001, 0.0001, 0.01, 0.006, 0.009, 0.007, 0.005, 0.004, 0.004, 0.004, 0.005, 0.002, 0.002, 0.005, 0.007, 0.005, 0.004, 0.007, 0.001, 0.005, 0.009, 0.006, 0.002, 0.002, 0.002, 0.001, 0.001, 0.001, 0.007, 0.001, 0.007, 0.0001, 0.004, 0.0001, 0.052, 0.008, 0.019, 0.018, 0.055, 0.008, 0.011, 0.016, 0.045, 0.001, 0.006, 0.028, 0.016, 0.037, 0.04, 0.012, 0.001, 0.038, 0.03, 0.035, 0.02, 0.006, 0.006, 0.002, 0.009, 0.002, 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.055, 1.131, 0.874, 0.939, 4.804, 2.787, 2.235, 1.018, 2.407, 0.349, 3.542, 0.092, 0.4, 0.007, 0.051, 0.053, 0.022, 0.061, 0.01, 0.008, 0.001, 0.001, 0.0001, 0.001, 0.001, 0.001, 0.0001, 0.008, 0.001, 0.001, 0.0001, 0.002, 0.013, 0.133, 0.049, 0.782, 0.037, 0.335, 0.157, 6.208, 1.599, 1.486, 1.889, 0.276, 0.607, 0.762, 0.341, 1.38, 0.239, 2.041, 0.293, 1.149, 0.411, 0.383, 0.246, 0.406, 0.094, 1.401, 0.223, 0.006, 0.001, 0.001, 0.001, 0.001, 0.0001, 0.0001, 0.027, 0.003, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.003, 0.001, 0.003, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.002, 23.298, 20.414, 0.003, 0.004, 0.0001, 0.0001, 0.0001, 0.0001, 0.001, 0.0001, 0.019, 0.001, 0.0001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001],
|
||||
|
Loading…
Reference in New Issue
Block a user