Parcourir la source

Merge branch 'master' into rsa

Matt il y a 5 ans
Parent
commit
d4ae241758

Fichier diff supprimé car celui-ci est trop grand
+ 412 - 281
package-lock.json


+ 6 - 6
package.json

@@ -1,6 +1,6 @@
 {
   "name": "cyberchef",
-  "version": "9.20.3",
+  "version": "9.20.7",
   "description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
   "author": "n1474335 <n1474335@gmail.com>",
   "homepage": "https://gchq.github.io/CyberChef",
@@ -43,7 +43,7 @@
     "babel-eslint": "^10.1.0",
     "babel-loader": "^8.0.6",
     "babel-plugin-dynamic-import-node": "^2.3.0",
-    "chromedriver": "^80.0.1",
+    "chromedriver": "^83.0.0",
     "cli-progress": "^3.6.0",
     "colors": "^1.4.0",
     "copy-webpack-plugin": "^5.1.1",
@@ -66,7 +66,7 @@
     "html-webpack-plugin": "^3.2.0",
     "imports-loader": "^0.8.0",
     "mini-css-extract-plugin": "^0.9.0",
-    "nightwatch": "^1.3.4",
+    "nightwatch": "^1.3.5",
     "node-sass": "^4.13.1",
     "postcss-css-variables": "^0.14.0",
     "postcss-import": "^12.0.1",
@@ -92,7 +92,7 @@
     "bcryptjs": "^2.4.3",
     "bignumber.js": "^9.0.0",
     "blakejs": "^1.1.0",
-    "bootstrap": "4.4.1",
+    "bootstrap": "4.5.0",
     "bootstrap-colorpicker": "^3.2.0",
     "bootstrap-material-design": "^4.1.2",
     "bson": "^4.0.3",
@@ -108,14 +108,13 @@
     "es6-promisify": "^6.1.0",
     "escodegen": "^1.14.1",
     "esm": "^3.2.25",
-    "esmangle": "^1.0.1",
     "esprima": "^4.0.1",
     "exif-parser": "^0.1.12",
     "file-saver": "^2.0.2",
     "geodesy": "^1.1.3",
     "highlight.js": "^9.18.1",
     "jimp": "^0.9.5",
-    "jquery": "3.4.1",
+    "jquery": "3.5.0",
     "js-crc": "^0.2.0",
     "js-sha3": "^0.8.0",
     "jsesc": "^2.5.2",
@@ -146,6 +145,7 @@
     "sortablejs": "^1.10.2",
     "split.js": "^1.5.11",
     "ssdeep.js": "0.0.2",
+    "terser": "^4.3.9",
     "tesseract.js": "^2.0.2",
     "ua-parser-js": "^0.7.21",
     "unorm": "^1.6.0",

+ 7 - 19
src/core/operations/JavaScriptMinify.mjs

@@ -4,10 +4,9 @@
  * @license Apache-2.0
  */
 
+import OperationError from "../errors/OperationError.mjs";
 import Operation from "../Operation.mjs";
-import * as esprima from "esprima";
-import escodegen from "escodegen";
-import esmangle from "esmangle";
+import Terser from "terser";
 
 /**
  * JavaScript Minify operation
@@ -34,22 +33,11 @@ class JavaScriptMinify extends Operation {
      * @returns {string}
      */
     run(input, args) {
-        let result = "";
-        const AST = esprima.parseScript(input),
-            optimisedAST = esmangle.optimize(AST, null),
-            mangledAST = esmangle.mangle(optimisedAST);
-
-        result = escodegen.generate(mangledAST, {
-            format: {
-                renumber:    true,
-                hexadecimal: true,
-                escapeless:  true,
-                compact:     true,
-                semicolons:  false,
-                parentheses: false
-            }
-        });
-        return result;
+        const result = Terser.minify(input);
+        if (result.error) {
+            throw new OperationError(`Error minifying JavaScript. (${result.error})`);
+        }
+        return result.code;
     }
 
 }

+ 1 - 1
src/core/operations/NormaliseUnicode.mjs

@@ -51,7 +51,7 @@ class NormaliseUnicode extends Operation {
             case "NFKD":
                 return unorm.nfkd(input);
             case "NFKC":
-                return unorm.nfc(input);
+                return unorm.nfkc(input);
             default:
                 throw new OperationError("Unknown Normalisation Form");
         }

+ 17 - 9
src/core/operations/OpticalCharacterRecognition.mjs

@@ -1,6 +1,7 @@
 /**
  * @author n1474335 [n1474335@gmail.com]
  * @author mshwed [m@ttshwed.com]
+ * @author Matt C [me@mitt.dev]
  * @copyright Crown Copyright 2019
  * @license Apache-2.0
  */
@@ -12,7 +13,7 @@ import { toBase64 } from "../lib/Base64.mjs";
 import { isWorkerEnvironment } from "../Utils.mjs";
 
 import Tesseract from "tesseract.js";
-const { TesseractWorker } = Tesseract;
+const { createWorker } = Tesseract;
 
 import process from "process";
 
@@ -60,23 +61,30 @@ class OpticalCharacterRecognition extends Operation {
         const assetDir = isWorkerEnvironment() ? `${self.docURL}/assets/` : `${process.cwd()}/src/core/vendor/`;
 
         try {
+            self.sendStatusMessage("Spinning up Tesseract worker...");
             const image = `data:${type};base64,${toBase64(input)}`;
-            const worker = new TesseractWorker({
+            const worker = createWorker({
                 workerPath: `${assetDir}tesseract/worker.min.js`,
                 langPath: `${assetDir}tesseract/lang-data`,
                 corePath: `${assetDir}tesseract/tesseract-core.wasm.js`,
-            });
-            const result = await worker.recognize(image)
-                .progress(progress => {
+                logger: progress => {
                     if (isWorkerEnvironment()) {
-                        self.sendStatusMessage(`Status: ${progress.status} - ${(parseFloat(progress.progress)*100).toFixed(2)}%`);
+                        self.sendStatusMessage(`Status: ${progress.status}${progress.status === "recognizing text" ? ` - ${(parseFloat(progress.progress)*100).toFixed(2)}%`: "" }`);
                     }
-                });
+                }
+            });
+            await worker.load();
+            self.sendStatusMessage("Loading English language...");
+            await worker.loadLanguage("eng");
+            self.sendStatusMessage("Intialising Tesseract API...");
+            await worker.initialize("eng");
+            self.sendStatusMessage("Finding text...");
+            const result = await worker.recognize(image);
 
             if (showConfidence) {
-                return `Confidence: ${result.confidence}%\n\n${result.text}`;
+                return `Confidence: ${result.data.confidence}%\n\n${result.data.text}`;
             } else {
-                return result.text;
+                return result.data.text;
             }
         } catch (err) {
             throw new OperationError(`Error performing OCR on image. (${err})`);

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 7
src/core/vendor/tesseract/tesseract-core.wasm.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/core/vendor/tesseract/worker.min.js


+ 1 - 1
tests/operations/tests/NormaliseUnicode.mjs

@@ -42,7 +42,7 @@ TestRegister.addTests([
     }, {
         name: "Normalise Unicode - NFKC",
         input: "\u00c7\u0043\u0327\u2160",
-        expectedMatch: /\u00C7\u00C7\u2160/,
+        expectedMatch: /\u00C7\u00C7I/,
         recipeConfig: [
             {
                 op: "Normalise Unicode",

+ 8 - 0
webpack.config.js

@@ -61,6 +61,14 @@ module.exports = {
                 context: "node_modules/node-forge/dist",
                 from: "prime.worker.min.js",
                 to: "assets/forge/"
+            }, {
+                context: "node_modules/tesseract.js/",
+                from: "dist/worker.min.js",
+                to: "assets/tesseract"
+            }, {
+                context: "node_modules/tesseract.js-core/",
+                from: "tesseract-core.wasm.js",
+                to: "assets/tesseract"
             }
         ])
     ],

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff