From 43dcd544f2ced678e27d4214e1910ef1c3c02df9 Mon Sep 17 00:00:00 2001 From: n1474335 Date: Tue, 25 Dec 2018 23:58:00 +0000 Subject: [PATCH] Added webpack-bundle-analyzer to production build. Refactored some modules to improve performance. Removed moment-timezone from Utils to drastically reduce module size. --- Gruntfile.js | 6 + package-lock.json | 170 ++++++++++++++++-- package.json | 2 +- src/core/Utils.mjs | 33 ---- src/core/operations/Adler32Checksum.mjs | 2 +- src/core/operations/AnalyseHash.mjs | 2 +- src/core/operations/Bcrypt.mjs | 2 +- src/core/operations/BcryptCompare.mjs | 2 +- src/core/operations/BcryptParse.mjs | 2 +- src/core/operations/CRC16Checksum.mjs | 2 +- src/core/operations/CRC32Checksum.mjs | 2 +- src/core/operations/CTPH.mjs | 2 +- src/core/operations/CompareCTPHHashes.mjs | 2 +- src/core/operations/CompareSSDEEPHashes.mjs | 2 +- src/core/operations/DecodeText.mjs | 2 +- src/core/operations/EncodeText.mjs | 2 +- src/core/operations/Fletcher16Checksum.mjs | 2 +- src/core/operations/Fletcher32Checksum.mjs | 2 +- src/core/operations/Fletcher64Checksum.mjs | 2 +- src/core/operations/Fletcher8Checksum.mjs | 2 +- src/core/operations/FromGeohash.mjs | 2 +- src/core/operations/GenerateAllHashes.mjs | 2 +- src/core/operations/GroupIPAddresses.mjs | 2 +- src/core/operations/HAS160.mjs | 2 +- src/core/operations/HMAC.mjs | 2 +- src/core/operations/Keccak.mjs | 2 +- src/core/operations/MD2.mjs | 2 +- src/core/operations/MD4.mjs | 2 +- src/core/operations/MD5.mjs | 2 +- src/core/operations/MD6.mjs | 2 +- src/core/operations/ParseIPRange.mjs | 2 +- src/core/operations/ParseIPv4Header.mjs | 2 +- src/core/operations/ParseIPv6Address.mjs | 6 +- src/core/operations/RIPEMD.mjs | 2 +- src/core/operations/SHA0.mjs | 2 +- src/core/operations/SHA1.mjs | 2 +- src/core/operations/SHA2.mjs | 2 +- src/core/operations/SHA3.mjs | 2 +- src/core/operations/SSDEEP.mjs | 2 +- src/core/operations/Scrypt.mjs | 2 +- src/core/operations/Shake.mjs | 2 +- src/core/operations/Snefru.mjs | 2 +- src/core/operations/TCPIPChecksum.mjs | 2 +- .../operations/TextEncodingBruteForce.mjs | 2 +- src/core/operations/ToGeohash.mjs | 2 +- src/core/operations/Whirlpool.mjs | 2 +- src/web/App.mjs | 4 +- test/tests/operations/Code.mjs | 6 +- 48 files changed, 207 insertions(+), 102 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index aee50b7509..233a2888d5 100755 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,6 +2,7 @@ const webpack = require("webpack"); const HtmlWebpackPlugin = require("html-webpack-plugin"); +const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; const NodeExternals = require("webpack-node-externals"); const Inliner = require("web-resource-inliner"); const glob = require("glob"); @@ -209,6 +210,11 @@ module.exports = function (grunt) { minifyCSS: true } }), + new BundleAnalyzerPlugin({ + analyzerMode: "static", + reportFilename: "build/prod/BundleAnalyzerReport.html", + openAnalyzer: false + }), ] }, webInline: { diff --git a/package-lock.json b/package-lock.json index b89e8ebdac..ecc639233e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1979,11 +1979,17 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true + "bfj": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", + "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "hoopy": "^0.1.2", + "tryer": "^1.0.0" + } }, "bignumber.js": { "version": "8.0.1", @@ -2459,6 +2465,12 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", + "dev": true + }, "chi-squared": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/chi-squared/-/chi-squared-1.1.0.tgz", @@ -3496,6 +3508,12 @@ "domelementtype": "1" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, "duplexify": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", @@ -3577,6 +3595,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, "electron-to-chromium": { "version": "1.3.84", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz", @@ -4454,6 +4478,12 @@ "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -4783,14 +4813,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4810,8 +4838,7 @@ "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -4933,8 +4960,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -4960,7 +4986,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5807,6 +5832,16 @@ "lodash": "^4.7.0" } }, + "gzip-size": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.0.0.tgz", + "integrity": "sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + } + }, "handle-thing": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", @@ -5954,6 +5989,12 @@ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", "dev": true }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", @@ -6065,6 +6106,14 @@ "emojis-list": "^2.0.0", "json5": "^0.5.0", "object-assign": "^4.0.1" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + } } } } @@ -6938,11 +6987,6 @@ "xmlcreate": "^1.0.1" } }, - "jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=" - }, "jsdoc": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", @@ -7390,6 +7434,12 @@ "json5": "^0.5.0" }, "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, "json5": { "version": "0.5.1", "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -8393,6 +8443,12 @@ "mimic-fn": "^1.0.0" } }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, "opn": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", @@ -11436,6 +11492,12 @@ "glob": "^7.1.2" } }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -12086,6 +12148,78 @@ } } }, + "webpack-bundle-analyzer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.3.tgz", + "integrity": "sha512-naLWiRfmtH4UJgtUktRTLw6FdoZJ2RvCR9ePbwM9aRMsS/KjFerkPZG9epEvXRAw5d5oPdrs9+3p+afNjxW8Xw==", + "dev": true, + "requires": { + "acorn": "^5.7.3", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.10", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ws": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", + "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, "webpack-dev-middleware": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", diff --git a/package.json b/package.json index fe93197df5..7bbfb7f1a1 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "url-loader": "^1.1.2", "web-resource-inliner": "^4.2.1", "webpack": "^4.25.1", + "webpack-bundle-analyzer": "^3.0.3", "webpack-dev-server": "^3.1.10", "webpack-node-externals": "^1.7.2", "worker-loader": "^2.0.0" @@ -96,7 +97,6 @@ "jquery": "^3.3.1", "js-crc": "^0.2.0", "js-sha3": "^0.8.0", - "jsbn": "^1.1.0", "jsesc": "^2.5.1", "jsonpath": "^1.0.0", "jsonwebtoken": "^8.3.0", diff --git a/src/core/Utils.mjs b/src/core/Utils.mjs index 342d6d6c39..24f2d6616a 100755 --- a/src/core/Utils.mjs +++ b/src/core/Utils.mjs @@ -5,7 +5,6 @@ */ import utf8 from "utf8"; -import moment from "moment-timezone"; import {fromBase64} from "./lib/Base64"; import {fromHex} from "./lib/Hex"; import {fromDecimal} from "./lib/Decimal"; @@ -797,38 +796,6 @@ class Utils { } - /** - * Expresses a number of milliseconds in a human readable format. - * - * Range | Sample Output - * -----------------------------|------------------------------- - * 0 to 45 seconds | a few seconds ago - * 45 to 90 seconds | a minute ago - * 90 seconds to 45 minutes | 2 minutes ago ... 45 minutes ago - * 45 to 90 minutes | an hour ago - * 90 minutes to 22 hours | 2 hours ago ... 22 hours ago - * 22 to 36 hours | a day ago - * 36 hours to 25 days | 2 days ago ... 25 days ago - * 25 to 45 days | a month ago - * 45 to 345 days | 2 months ago ... 11 months ago - * 345 to 545 days (1.5 years) | a year ago - * 546 days+ | 2 years ago ... 20 years ago - * - * @param {number} ms - * @returns {string} - * - * @example - * // returns "3 minutes" - * Utils.fuzzyTime(152435); - * - * // returns "5 days" - * Utils.fuzzyTime(456851321); - */ - static fuzzyTime(ms) { - return moment.duration(ms, "milliseconds").humanize(); - } - - /** * Formats a list of files or directories. * diff --git a/src/core/operations/Adler32Checksum.mjs b/src/core/operations/Adler32Checksum.mjs index 41584de64c..ad4b407289 100644 --- a/src/core/operations/Adler32Checksum.mjs +++ b/src/core/operations/Adler32Checksum.mjs @@ -19,7 +19,7 @@ class Adler32Checksum extends Operation { super(); this.name = "Adler-32 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Adler-32 is a checksum algorithm which was invented by Mark Adler in 1995, and is a modification of the Fletcher checksum. Compared to a cyclic redundancy check of the same length, it trades reliability for speed (preferring the latter).

Adler-32 is more reliable than Fletcher-16, and slightly less reliable than Fletcher-32."; this.infoURL = "https://wikipedia.org/wiki/Adler-32"; this.inputType = "byteArray"; diff --git a/src/core/operations/AnalyseHash.mjs b/src/core/operations/AnalyseHash.mjs index cb719f7724..17f78f30ed 100644 --- a/src/core/operations/AnalyseHash.mjs +++ b/src/core/operations/AnalyseHash.mjs @@ -19,7 +19,7 @@ class AnalyseHash extends Operation { super(); this.name = "Analyse hash"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Tries to determine information about a given hash and suggests which algorithm may have been used to generate it based on its length."; this.infoURL = "https://wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions"; this.inputType = "string"; diff --git a/src/core/operations/Bcrypt.mjs b/src/core/operations/Bcrypt.mjs index fafd4e267e..36a2060789 100644 --- a/src/core/operations/Bcrypt.mjs +++ b/src/core/operations/Bcrypt.mjs @@ -19,7 +19,7 @@ class Bcrypt extends Operation { super(); this.name = "Bcrypt"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "bcrypt is a password hashing function designed by Niels Provos and David Mazi\xe8res, based on the Blowfish cipher, and presented at USENIX in 1999. Besides incorporating a salt to protect against rainbow table attacks, bcrypt is an adaptive function: over time, the iteration count (rounds) can be increased to make it slower, so it remains resistant to brute-force search attacks even with increasing computation power.

Enter the password in the input to generate its hash."; this.infoURL = "https://wikipedia.org/wiki/Bcrypt"; this.inputType = "string"; diff --git a/src/core/operations/BcryptCompare.mjs b/src/core/operations/BcryptCompare.mjs index f3edb2d95f..5d8c393e06 100644 --- a/src/core/operations/BcryptCompare.mjs +++ b/src/core/operations/BcryptCompare.mjs @@ -19,7 +19,7 @@ class BcryptCompare extends Operation { super(); this.name = "Bcrypt compare"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Tests whether the input matches the given bcrypt hash. To test multiple possible passwords, use the 'Fork' operation."; this.infoURL = "https://wikipedia.org/wiki/Bcrypt"; this.inputType = "string"; diff --git a/src/core/operations/BcryptParse.mjs b/src/core/operations/BcryptParse.mjs index fdd907b993..629eb1c2d1 100644 --- a/src/core/operations/BcryptParse.mjs +++ b/src/core/operations/BcryptParse.mjs @@ -20,7 +20,7 @@ class BcryptParse extends Operation { super(); this.name = "Bcrypt parse"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Parses a bcrypt hash to determine the number of rounds used, the salt, and the password hash."; this.infoURL = "https://wikipedia.org/wiki/Bcrypt"; this.inputType = "string"; diff --git a/src/core/operations/CRC16Checksum.mjs b/src/core/operations/CRC16Checksum.mjs index f0692f24ac..3171ad7342 100644 --- a/src/core/operations/CRC16Checksum.mjs +++ b/src/core/operations/CRC16Checksum.mjs @@ -19,7 +19,7 @@ class CRC16Checksum extends Operation { super(); this.name = "CRC-16 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.

The CRC was invented by W. Wesley Peterson in 1961."; this.infoURL = "https://wikipedia.org/wiki/Cyclic_redundancy_check"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/CRC32Checksum.mjs b/src/core/operations/CRC32Checksum.mjs index b4e85799a2..962253dcbc 100644 --- a/src/core/operations/CRC32Checksum.mjs +++ b/src/core/operations/CRC32Checksum.mjs @@ -19,7 +19,7 @@ class CRC32Checksum extends Operation { super(); this.name = "CRC-32 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data.

The CRC was invented by W. Wesley Peterson in 1961; the 32-bit CRC function of Ethernet and many other standards is the work of several researchers and was published in 1975."; this.infoURL = "https://wikipedia.org/wiki/Cyclic_redundancy_check"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/CTPH.mjs b/src/core/operations/CTPH.mjs index 3597cd555f..feb58d441e 100644 --- a/src/core/operations/CTPH.mjs +++ b/src/core/operations/CTPH.mjs @@ -19,7 +19,7 @@ class CTPH extends Operation { super(); this.name = "CTPH"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Context Triggered Piecewise Hashing, also called Fuzzy Hashing, can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length.

CTPH was originally based on the work of Dr. Andrew Tridgell and a spam email detector called SpamSum. This method was adapted by Jesse Kornblum and published at the DFRWS conference in 2006 in a paper 'Identifying Almost Identical Files Using Context Triggered Piecewise Hashing'."; this.infoURL = "https://forensicswiki.org/wiki/Context_Triggered_Piecewise_Hashing"; this.inputType = "string"; diff --git a/src/core/operations/CompareCTPHHashes.mjs b/src/core/operations/CompareCTPHHashes.mjs index acae6b4261..b8cd4c55a9 100644 --- a/src/core/operations/CompareCTPHHashes.mjs +++ b/src/core/operations/CompareCTPHHashes.mjs @@ -22,7 +22,7 @@ class CompareCTPHHashes extends Operation { super(); this.name = "Compare CTPH hashes"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Compares two Context Triggered Piecewise Hashing (CTPH) fuzzy hashes to determine the similarity between them on a scale of 0 to 100."; this.infoURL = "https://forensicswiki.org/wiki/Context_Triggered_Piecewise_Hashing"; this.inputType = "string"; diff --git a/src/core/operations/CompareSSDEEPHashes.mjs b/src/core/operations/CompareSSDEEPHashes.mjs index fdd38210f6..46aa8dac35 100644 --- a/src/core/operations/CompareSSDEEPHashes.mjs +++ b/src/core/operations/CompareSSDEEPHashes.mjs @@ -22,7 +22,7 @@ class CompareSSDEEPHashes extends Operation { super(); this.name = "Compare SSDEEP hashes"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Compares two SSDEEP fuzzy hashes to determine the similarity between them on a scale of 0 to 100."; this.infoURL = "https://forensicswiki.org/wiki/Ssdeep"; this.inputType = "string"; diff --git a/src/core/operations/DecodeText.mjs b/src/core/operations/DecodeText.mjs index e7a4f1883d..a5d6070685 100644 --- a/src/core/operations/DecodeText.mjs +++ b/src/core/operations/DecodeText.mjs @@ -20,7 +20,7 @@ class DecodeText extends Operation { super(); this.name = "Decode text"; - this.module = "CharEnc"; + this.module = "Encodings"; this.description = [ "Decodes text from the chosen character encoding.", "

", diff --git a/src/core/operations/EncodeText.mjs b/src/core/operations/EncodeText.mjs index f634c3d9ff..dd3241a2d8 100644 --- a/src/core/operations/EncodeText.mjs +++ b/src/core/operations/EncodeText.mjs @@ -20,7 +20,7 @@ class EncodeText extends Operation { super(); this.name = "Encode text"; - this.module = "CharEnc"; + this.module = "Encodings"; this.description = [ "Encodes text into the chosen character encoding.", "

", diff --git a/src/core/operations/Fletcher16Checksum.mjs b/src/core/operations/Fletcher16Checksum.mjs index ff76028284..d23318236f 100644 --- a/src/core/operations/Fletcher16Checksum.mjs +++ b/src/core/operations/Fletcher16Checksum.mjs @@ -19,7 +19,7 @@ class Fletcher16Checksum extends Operation { super(); this.name = "Fletcher-16 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.

The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques."; this.infoURL = "https://wikipedia.org/wiki/Fletcher%27s_checksum#Fletcher-16"; this.inputType = "byteArray"; diff --git a/src/core/operations/Fletcher32Checksum.mjs b/src/core/operations/Fletcher32Checksum.mjs index 5a3ad55b12..30f4bc69ed 100644 --- a/src/core/operations/Fletcher32Checksum.mjs +++ b/src/core/operations/Fletcher32Checksum.mjs @@ -19,7 +19,7 @@ class Fletcher32Checksum extends Operation { super(); this.name = "Fletcher-32 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.

The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques."; this.infoURL = "https://wikipedia.org/wiki/Fletcher%27s_checksum#Fletcher-32"; this.inputType = "byteArray"; diff --git a/src/core/operations/Fletcher64Checksum.mjs b/src/core/operations/Fletcher64Checksum.mjs index 2f60b4f34c..56afe42ea2 100644 --- a/src/core/operations/Fletcher64Checksum.mjs +++ b/src/core/operations/Fletcher64Checksum.mjs @@ -19,7 +19,7 @@ class Fletcher64Checksum extends Operation { super(); this.name = "Fletcher-64 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.

The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques."; this.infoURL = "https://wikipedia.org/wiki/Fletcher%27s_checksum#Fletcher-64"; this.inputType = "byteArray"; diff --git a/src/core/operations/Fletcher8Checksum.mjs b/src/core/operations/Fletcher8Checksum.mjs index 6cc538e2ea..a6dc0e4d6e 100644 --- a/src/core/operations/Fletcher8Checksum.mjs +++ b/src/core/operations/Fletcher8Checksum.mjs @@ -19,7 +19,7 @@ class Fletcher8Checksum extends Operation { super(); this.name = "Fletcher-8 Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The Fletcher checksum is an algorithm for computing a position-dependent checksum devised by John Gould Fletcher at Lawrence Livermore Labs in the late 1970s.

The objective of the Fletcher checksum was to provide error-detection properties approaching those of a cyclic redundancy check but with the lower computational effort associated with summation techniques."; this.infoURL = "https://wikipedia.org/wiki/Fletcher%27s_checksum"; this.inputType = "byteArray"; diff --git a/src/core/operations/FromGeohash.mjs b/src/core/operations/FromGeohash.mjs index b70273dacf..da26155525 100644 --- a/src/core/operations/FromGeohash.mjs +++ b/src/core/operations/FromGeohash.mjs @@ -19,7 +19,7 @@ class FromGeohash extends Operation { super(); this.name = "From Geohash"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Converts Geohash strings into Lat/Long coordinates. For example, ww8p1r4t8 becomes 37.8324,112.5584."; this.infoURL = "https://wikipedia.org/wiki/Geohash"; this.inputType = "string"; diff --git a/src/core/operations/GenerateAllHashes.mjs b/src/core/operations/GenerateAllHashes.mjs index 65820673fa..633337f0c7 100644 --- a/src/core/operations/GenerateAllHashes.mjs +++ b/src/core/operations/GenerateAllHashes.mjs @@ -41,7 +41,7 @@ class GenerateAllHashes extends Operation { super(); this.name = "Generate all hashes"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Generates all available hashes and checksums for the input."; this.infoURL = "https://wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/GroupIPAddresses.mjs b/src/core/operations/GroupIPAddresses.mjs index 1016852b9e..5e5d97c8e3 100644 --- a/src/core/operations/GroupIPAddresses.mjs +++ b/src/core/operations/GroupIPAddresses.mjs @@ -22,7 +22,7 @@ class GroupIPAddresses extends Operation { super(); this.name = "Group IP addresses"; - this.module = "JSBN"; + this.module = "Default"; this.description = "Groups a list of IP addresses into subnets. Supports both IPv4 and IPv6 addresses."; this.infoURL = "https://wikipedia.org/wiki/Subnetwork"; this.inputType = "string"; diff --git a/src/core/operations/HAS160.mjs b/src/core/operations/HAS160.mjs index 642599993b..ab3db6a2ab 100644 --- a/src/core/operations/HAS160.mjs +++ b/src/core/operations/HAS160.mjs @@ -19,7 +19,7 @@ class HAS160 extends Operation { super(); this.name = "HAS-160"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "HAS-160 is a cryptographic hash function designed for use with the Korean KCDSA digital signature algorithm. It is derived from SHA-1, with assorted changes intended to increase its security. It produces a 160-bit output.

HAS-160 is used in the same way as SHA-1. First it divides input in blocks of 512 bits each and pads the final block. A digest function updates the intermediate hash value by processing the input blocks in turn.

The message digest algorithm consists of 80 rounds."; this.infoURL = "https://wikipedia.org/wiki/HAS-160"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/HMAC.mjs b/src/core/operations/HMAC.mjs index 6517c58157..d511febb57 100644 --- a/src/core/operations/HMAC.mjs +++ b/src/core/operations/HMAC.mjs @@ -20,7 +20,7 @@ class HMAC extends Operation { super(); this.name = "HMAC"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Keyed-Hash Message Authentication Codes (HMAC) are a mechanism for message authentication using cryptographic hash functions."; this.infoURL = "https://wikipedia.org/wiki/HMAC"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/Keccak.mjs b/src/core/operations/Keccak.mjs index 2044ee7feb..0c9305892f 100644 --- a/src/core/operations/Keccak.mjs +++ b/src/core/operations/Keccak.mjs @@ -20,7 +20,7 @@ class Keccak extends Operation { super(); this.name = "Keccak"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The Keccak hash algorithm was designed by Guido Bertoni, Joan Daemen, Micha\xebl Peeters, and Gilles Van Assche, building upon RadioGat\xfan. It was selected as the winner of the SHA-3 design competition.

This version of the algorithm is Keccak[c=2d] and differs from the SHA-3 specification."; this.infoURL = "https://wikipedia.org/wiki/SHA-3"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/MD2.mjs b/src/core/operations/MD2.mjs index bc69ecfbd1..dfe2c7a38f 100644 --- a/src/core/operations/MD2.mjs +++ b/src/core/operations/MD2.mjs @@ -19,7 +19,7 @@ class MD2 extends Operation { super(); this.name = "MD2"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The MD2 (Message-Digest 2) algorithm is a cryptographic hash function developed by Ronald Rivest in 1989. The algorithm is optimized for 8-bit computers.

Although MD2 is no longer considered secure, even as of 2014, it remains in use in public key infrastructures as part of certificates generated with MD2 and RSA."; this.infoURL = "https://wikipedia.org/wiki/MD2_(cryptography)"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/MD4.mjs b/src/core/operations/MD4.mjs index 129769af00..7872c7b8eb 100644 --- a/src/core/operations/MD4.mjs +++ b/src/core/operations/MD4.mjs @@ -19,7 +19,7 @@ class MD4 extends Operation { super(); this.name = "MD4"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The MD4 (Message-Digest 4) algorithm is a cryptographic hash function developed by Ronald Rivest in 1990. The digest length is 128 bits. The algorithm has influenced later designs, such as the MD5, SHA-1 and RIPEMD algorithms.

The security of MD4 has been severely compromised."; this.infoURL = "https://wikipedia.org/wiki/MD4"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/MD5.mjs b/src/core/operations/MD5.mjs index 6329b64117..96de7108e0 100644 --- a/src/core/operations/MD5.mjs +++ b/src/core/operations/MD5.mjs @@ -19,7 +19,7 @@ class MD5 extends Operation { super(); this.name = "MD5"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "MD5 (Message-Digest 5) is a widely used hash function. It has been used in a variety of security applications and is also commonly used to check the integrity of files.

However, MD5 is not collision resistant and it isn't suitable for applications like SSL/TLS certificates or digital signatures that rely on this property."; this.infoURL = "https://wikipedia.org/wiki/MD5"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/MD6.mjs b/src/core/operations/MD6.mjs index e29db447e8..0e53a1b087 100644 --- a/src/core/operations/MD6.mjs +++ b/src/core/operations/MD6.mjs @@ -20,7 +20,7 @@ class MD6 extends Operation { super(); this.name = "MD6"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The MD6 (Message-Digest 6) algorithm is a cryptographic hash function. It uses a Merkle tree-like structure to allow for immense parallel computation of hashes for very long inputs."; this.infoURL = "https://wikipedia.org/wiki/MD6"; this.inputType = "string"; diff --git a/src/core/operations/ParseIPRange.mjs b/src/core/operations/ParseIPRange.mjs index 5d50ec2dcf..38bcc222e2 100644 --- a/src/core/operations/ParseIPRange.mjs +++ b/src/core/operations/ParseIPRange.mjs @@ -21,7 +21,7 @@ class ParseIPRange extends Operation { super(); this.name = "Parse IP range"; - this.module = "JSBN"; + this.module = "Default"; this.description = "Given a CIDR range (e.g. 10.0.0.0/24), hyphenated range (e.g. 10.0.0.0 - 10.0.1.0), or a list of IPs and/or CIDR ranges (separated by a new line), this operation provides network information and enumerates all IP addresses in the range.

IPv6 is supported but will not be enumerated."; this.infoURL = "https://wikipedia.org/wiki/Subnetwork"; this.inputType = "string"; diff --git a/src/core/operations/ParseIPv4Header.mjs b/src/core/operations/ParseIPv4Header.mjs index d5efc24bd8..0611432926 100644 --- a/src/core/operations/ParseIPv4Header.mjs +++ b/src/core/operations/ParseIPv4Header.mjs @@ -23,7 +23,7 @@ class ParseIPv4Header extends Operation { super(); this.name = "Parse IPv4 header"; - this.module = "JSBN"; + this.module = "Default"; this.description = "Given an IPv4 header, this operations parses and displays each field in an easily readable format."; this.infoURL = "https://wikipedia.org/wiki/IPv4#Header"; this.inputType = "string"; diff --git a/src/core/operations/ParseIPv6Address.mjs b/src/core/operations/ParseIPv6Address.mjs index 1603d47be1..3cf9f2dd18 100644 --- a/src/core/operations/ParseIPv6Address.mjs +++ b/src/core/operations/ParseIPv6Address.mjs @@ -8,7 +8,7 @@ import Operation from "../Operation"; import Utils from "../Utils"; import OperationError from "../errors/OperationError"; import {strToIpv6, ipv6ToStr, ipv4ToStr, IPV6_REGEX} from "../lib/IP"; -import BigInteger from "jsbn"; +import BigNumber from "bignumber.js"; /** * Parse IPv6 address operation @@ -22,7 +22,7 @@ class ParseIPv6Address extends Operation { super(); this.name = "Parse IPv6 address"; - this.module = "JSBN"; + this.module = "Default"; this.description = "Displays the longhand and shorthand versions of a valid IPv6 address.

Recognises all reserved ranges and parses encapsulated or tunnelled addresses including Teredo and 6to4."; this.infoURL = "https://wikipedia.org/wiki/IPv6_address"; this.inputType = "string"; @@ -147,7 +147,7 @@ class ParseIPv6Address extends Operation { const v4Addr = ipv4ToStr((ipv6[1] << 16) + ipv6[2]), slaId = ipv6[3], interfaceIdStr = ipv6[4].toString(16) + ipv6[5].toString(16) + ipv6[6].toString(16) + ipv6[7].toString(16), - interfaceId = new BigInteger(interfaceIdStr, 16); + interfaceId = new BigNumber(interfaceIdStr, 16); output += "\n\nEncapsulated IPv4 address: " + v4Addr + "\nSLA ID: " + slaId + diff --git a/src/core/operations/RIPEMD.mjs b/src/core/operations/RIPEMD.mjs index fea7116e9f..00b613de54 100644 --- a/src/core/operations/RIPEMD.mjs +++ b/src/core/operations/RIPEMD.mjs @@ -19,7 +19,7 @@ class RIPEMD extends Operation { super(); this.name = "RIPEMD"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "RIPEMD (RACE Integrity Primitives Evaluation Message Digest) is a family of cryptographic hash functions developed in Leuven, Belgium, by Hans Dobbertin, Antoon Bosselaers and Bart Preneel at the COSIC research group at the Katholieke Universiteit Leuven, and first published in 1996.

RIPEMD was based upon the design principles used in MD4, and is similar in performance to the more popular SHA-1.

"; this.infoURL = "https://wikipedia.org/wiki/RIPEMD"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/SHA0.mjs b/src/core/operations/SHA0.mjs index 6982d67cc8..b83a47d742 100644 --- a/src/core/operations/SHA0.mjs +++ b/src/core/operations/SHA0.mjs @@ -19,7 +19,7 @@ class SHA0 extends Operation { super(); this.name = "SHA0"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "SHA-0 is a retronym applied to the original version of the 160-bit hash function published in 1993 under the name 'SHA'. It was withdrawn shortly after publication due to an undisclosed 'significant flaw' and replaced by the slightly revised version SHA-1."; this.infoURL = "https://wikipedia.org/wiki/SHA-1#SHA-0"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/SHA1.mjs b/src/core/operations/SHA1.mjs index 8f16111cca..2dc5ce5c0c 100644 --- a/src/core/operations/SHA1.mjs +++ b/src/core/operations/SHA1.mjs @@ -19,7 +19,7 @@ class SHA1 extends Operation { super(); this.name = "SHA1"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The SHA (Secure Hash Algorithm) hash functions were designed by the NSA. SHA-1 is the most established of the existing SHA hash functions and it is used in a variety of security applications and protocols.

However, SHA-1's collision resistance has been weakening as new attacks are discovered or improved."; this.infoURL = "https://wikipedia.org/wiki/SHA-1"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/SHA2.mjs b/src/core/operations/SHA2.mjs index 4b6b379fbe..05d4c253b1 100644 --- a/src/core/operations/SHA2.mjs +++ b/src/core/operations/SHA2.mjs @@ -19,7 +19,7 @@ class SHA2 extends Operation { super(); this.name = "SHA2"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The SHA-2 (Secure Hash Algorithm 2) hash functions were designed by the NSA. SHA-2 includes significant changes from its predecessor, SHA-1. The SHA-2 family consists of hash functions with digests (hash values) that are 224, 256, 384 or 512 bits: SHA224, SHA256, SHA384, SHA512.

"; this.infoURL = "https://wikipedia.org/wiki/SHA-2"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/SHA3.mjs b/src/core/operations/SHA3.mjs index 061810a0be..cebb8e2391 100644 --- a/src/core/operations/SHA3.mjs +++ b/src/core/operations/SHA3.mjs @@ -20,7 +20,7 @@ class SHA3 extends Operation { super(); this.name = "SHA3"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "The SHA-3 (Secure Hash Algorithm 3) hash functions were released by NIST on August 5, 2015. Although part of the same series of standards, SHA-3 is internally quite different from the MD5-like structure of SHA-1 and SHA-2.

SHA-3 is a subset of the broader cryptographic primitive family Keccak designed by Guido Bertoni, Joan Daemen, Micha\xebl Peeters, and Gilles Van Assche, building upon RadioGat\xfan."; this.infoURL = "https://wikipedia.org/wiki/SHA-3"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/SSDEEP.mjs b/src/core/operations/SSDEEP.mjs index faf3ec3ebd..4ae5a650d9 100644 --- a/src/core/operations/SSDEEP.mjs +++ b/src/core/operations/SSDEEP.mjs @@ -19,7 +19,7 @@ class SSDEEP extends Operation { super(); this.name = "SSDEEP"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "SSDEEP is a program for computing context triggered piecewise hashes (CTPH). Also called fuzzy hashes, CTPH can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length.

SSDEEP hashes are now widely used for simple identification purposes (e.g. the 'Basic Properties' section in VirusTotal). Although 'better' fuzzy hashes are available, SSDEEP is still one of the primary choices because of its speed and being a de facto standard.

This operation is fundamentally the same as the CTPH operation, however their outputs differ in format."; this.infoURL = "https://forensicswiki.org/wiki/Ssdeep"; this.inputType = "string"; diff --git a/src/core/operations/Scrypt.mjs b/src/core/operations/Scrypt.mjs index ec5ce492d6..134a04fcdc 100644 --- a/src/core/operations/Scrypt.mjs +++ b/src/core/operations/Scrypt.mjs @@ -21,7 +21,7 @@ class Scrypt extends Operation { super(); this.name = "Scrypt"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "scrypt is a password-based key derivation function (PBKDF) created by Colin Percival. The algorithm was specifically designed to make it costly to perform large-scale custom hardware attacks by requiring large amounts of memory. In 2016, the scrypt algorithm was published by IETF as RFC 7914.

Enter the password in the input to generate its hash."; this.infoURL = "https://wikipedia.org/wiki/Scrypt"; this.inputType = "string"; diff --git a/src/core/operations/Shake.mjs b/src/core/operations/Shake.mjs index 21d993b2cc..e096ac3194 100644 --- a/src/core/operations/Shake.mjs +++ b/src/core/operations/Shake.mjs @@ -20,7 +20,7 @@ class Shake extends Operation { super(); this.name = "Shake"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Shake is an Extendable Output Function (XOF) of the SHA-3 hash algorithm, part of the Keccak family, allowing for variable output length/size."; this.infoURL = "https://wikipedia.org/wiki/SHA-3#Instances"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/Snefru.mjs b/src/core/operations/Snefru.mjs index fe6f2cf4c4..b7cd65b543 100644 --- a/src/core/operations/Snefru.mjs +++ b/src/core/operations/Snefru.mjs @@ -19,7 +19,7 @@ class Snefru extends Operation { super(); this.name = "Snefru"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Snefru is a cryptographic hash function invented by Ralph Merkle in 1990 while working at Xerox PARC. The function supports 128-bit and 256-bit output. It was named after the Egyptian Pharaoh Sneferu, continuing the tradition of the Khufu and Khafre block ciphers.

The original design of Snefru was shown to be insecure by Eli Biham and Adi Shamir who were able to use differential cryptanalysis to find hash collisions. The design was then modified by increasing the number of iterations of the main pass of the algorithm from two to eight."; this.infoURL = "https://wikipedia.org/wiki/Snefru"; this.inputType = "ArrayBuffer"; diff --git a/src/core/operations/TCPIPChecksum.mjs b/src/core/operations/TCPIPChecksum.mjs index 705d7480a0..1da73359ec 100644 --- a/src/core/operations/TCPIPChecksum.mjs +++ b/src/core/operations/TCPIPChecksum.mjs @@ -19,7 +19,7 @@ class TCPIPChecksum extends Operation { super(); this.name = "TCP/IP Checksum"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Calculates the checksum for a TCP (Transport Control Protocol) or IP (Internet Protocol) header from an input of raw bytes."; this.infoURL = "https://wikipedia.org/wiki/IPv4_header_checksum"; this.inputType = "byteArray"; diff --git a/src/core/operations/TextEncodingBruteForce.mjs b/src/core/operations/TextEncodingBruteForce.mjs index 3919dcd97d..ee5f70d311 100644 --- a/src/core/operations/TextEncodingBruteForce.mjs +++ b/src/core/operations/TextEncodingBruteForce.mjs @@ -22,7 +22,7 @@ class TextEncodingBruteForce extends Operation { super(); this.name = "Text Encoding Brute Force"; - this.module = "CharEnc"; + this.module = "Encodings"; this.description = [ "Enumerates all supported text encodings for the input, allowing you to quickly spot the correct one.", "

", diff --git a/src/core/operations/ToGeohash.mjs b/src/core/operations/ToGeohash.mjs index 0e7f53ace7..7859bd1636 100644 --- a/src/core/operations/ToGeohash.mjs +++ b/src/core/operations/ToGeohash.mjs @@ -19,7 +19,7 @@ class ToGeohash extends Operation { super(); this.name = "To Geohash"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Converts Lat/Long coordinates into a Geohash string. For example, 37.8324,112.5584 becomes ww8p1r4t8."; this.infoURL = "https://wikipedia.org/wiki/Geohash"; this.inputType = "string"; diff --git a/src/core/operations/Whirlpool.mjs b/src/core/operations/Whirlpool.mjs index fb3cdfc92a..1ef8a11ca4 100644 --- a/src/core/operations/Whirlpool.mjs +++ b/src/core/operations/Whirlpool.mjs @@ -19,7 +19,7 @@ class Whirlpool extends Operation { super(); this.name = "Whirlpool"; - this.module = "Hashing"; + this.module = "Crypto"; this.description = "Whirlpool is a cryptographic hash function designed by Vincent Rijmen (co-creator of AES) and Paulo S. L. M. Barreto, who first described it in 2000.

Several variants exist:"; this.infoURL = "https://wikipedia.org/wiki/Whirlpool_(cryptography)"; this.inputType = "ArrayBuffer"; diff --git a/src/web/App.mjs b/src/web/App.mjs index d001f9e472..1dab16e662 100755 --- a/src/web/App.mjs +++ b/src/web/App.mjs @@ -10,6 +10,7 @@ import Manager from "./Manager"; import HTMLCategory from "./HTMLCategory"; import HTMLOperation from "./HTMLOperation"; import Split from "split.js"; +import moment from "moment-timezone"; /** @@ -515,7 +516,8 @@ class App { setCompileMessage() { // Display time since last build and compile message const now = new Date(), - timeSinceCompile = Utils.fuzzyTime(now.getTime() - window.compileTime); + msSinceCompile = now.getTime() - window.compileTime, + timeSinceCompile = moment.duration(msSinceCompile, "milliseconds").humanize(); // Calculate previous version to compare to const prev = PKG_VERSION.split(".").map(n => { diff --git a/test/tests/operations/Code.mjs b/test/tests/operations/Code.mjs index 4c71654630..d9bda06f52 100644 --- a/test/tests/operations/Code.mjs +++ b/test/tests/operations/Code.mjs @@ -334,16 +334,12 @@ TestRegister.addTests([ }, { name: "To MessagePack: no content", - input: "{}", + input: "", expectedMatch: /Unexpected end of JSON input/, recipeConfig: [ { "op": "To MessagePack", "args": [] - }, - { - "op": "To Hex", - "args": ["Space"] } ] },