Compare commits

..
17 Commits
Author SHA1 Message Date
n1474335 5e9380b550 6.7.1 2017-12-20 13:43:31 +00:00
n1474335 fc8a0480fb Merge branch 'bug-css-selector' 2017-12-20 13:43:00 +00:00
n1474335 317327d097 CSS selector operation now works in a web worker. Fixes #218 2017-12-20 13:30:51 +00:00
n1474335 ecd0ac2521 Updated dependencies 2017-12-19 16:53:57 +00:00
n1474335 f9eaf67db2 6.7.0 2017-12-19 15:02:23 +00:00
n1474335 99e0c8d5e3 Merge branch 'bwhitn-chi' 2017-12-19 15:02:08 +00:00
n1474335 7a951d86d8 Tidied up Chi Square operation 2017-12-19 15:02:01 +00:00
n1474335 d9dfaec84c Merge branch 'chi' of https://github.com/bwhitn/CyberChef into bwhitn-chi 2017-12-19 14:45:50 +00:00
n1474335 80719ae368 6.6.3 2017-12-19 14:41:34 +00:00
n1474335 9407809356 Merge branch 'bwhitn-fixHOTP' 2017-12-19 14:40:30 +00:00
n1474335 f7e958e7a1 Changed HOTP inputType to byteArray 2017-12-19 14:38:13 +00:00
n1474335 5d75f8636a Resolved conflict 2017-12-19 14:31:40 +00:00
bwhitn 4ca2a30249 Fixed minor errors 2017-12-18 05:33:52 -08:00
bwhitn 08a31523b2 changed the function comment 2017-12-18 05:04:11 -08:00
bwhitn 224d79be05 merged with master 2017-12-17 23:56:30 -05:00
bwhitn 435ed587a5 Fixed HOTP, TOTP and added test for HOTP 2017-12-17 23:53:13 -05:00
bwhitn 9bc6c46dc3 Fixed HOTP, TOTP and added test for HOTP 2017-12-16 09:10:52 -05:00
12 changed files with 1744 additions and 730 deletions

No files matched your search

+1 -1
View File
@@ -2,7 +2,7 @@
[![Build Status](https://travis-ci.org/gchq/CyberChef.svg?branch=master)](https://travis-ci.org/gchq/CyberChef)
[![dependencies Status](https://david-dm.org/gchq/CyberChef/status.svg)](https://david-dm.org/gchq/CyberChef)
[![npm](http://img.shields.io/npm/v/cyberchef.svg)](https://www.npmjs.com/package/cyberchef)
[![npm](https://img.shields.io/npm/v/cyberchef.svg)](https://www.npmjs.com/package/cyberchef)
![](https://reposs.herokuapp.com/?path=gchq/CyberChef&color=blue)
[![](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/gchq/CyberChef/blob/master/LICENSE)
[![Gitter](https://badges.gitter.im/gchq/CyberChef.svg)](https://gitter.im/gchq/CyberChef?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+1635 -704
View File
File diff suppressed because it is too large. Load diff
+10 -9
View File
@@ -1,6 +1,6 @@
{
"name": "cyberchef",
"version": "6.6.2",
"version": "6.7.1",
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
"author": "n1474335 <n1474335@gmail.com>",
"homepage": "https://gchq.github.io/CyberChef",
@@ -36,7 +36,7 @@
"css-loader": "^0.28.7",
"exports-loader": "^0.6.4",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.5",
"file-loader": "^1.1.6",
"grunt": ">=1.0.1",
"grunt-accessibility": "~5.0.0",
"grunt-chmod": "~1.1.1",
@@ -56,13 +56,13 @@
"less-loader": "^4.0.5",
"postcss-css-variables": "^0.8.0",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"style-loader": "^0.19.0",
"postcss-loader": "^2.0.9",
"style-loader": "^0.19.1",
"url-loader": "^0.6.2",
"val-loader": "^1.1.0",
"web-resource-inliner": "^4.2.0",
"webpack": "^3.8.1",
"webpack-dev-server": "^2.9.4",
"webpack": "^3.10.0",
"webpack-dev-server": "^2.9.7",
"webpack-node-externals": "^1.6.0",
"worker-loader": "^1.1.0"
},
@@ -81,21 +81,22 @@
"google-code-prettify": "^1.0.5",
"jquery": "^3.2.1",
"js-crc": "^0.2.0",
"js-sha3": "^0.6.1",
"js-sha3": "^0.7.0",
"jsbn": "^1.1.0",
"jsonpath": "^1.0.0",
"jsrsasign": "8.0.4",
"lodash": "^4.17.4",
"moment": "^2.19.2",
"moment": "^2.20.1",
"moment-timezone": "^0.5.14",
"node-md6": "^0.1.0",
"nwmatcher": "^1.4.3",
"otp": "^0.1.3",
"sladex-blowfish": "^0.8.1",
"sortablejs": "^1.7.0",
"split.js": "^1.3.5",
"vkbeautify": "^0.99.3",
"xmldom": "^0.1.27",
"xpath": "0.0.24",
"xpath": "0.0.27",
"zlibjs": "^0.3.1"
},
"scripts": {
+1
View File
@@ -302,6 +302,7 @@ const Categories = [
ops: [
"Entropy",
"Frequency distribution",
"Chi Square",
"Detect File Type",
"Scan for Embedded Files",
"Disassemble x86",
+8 -1
View File
@@ -3205,6 +3205,13 @@ const OperationConfig = {
}
]
},
"Chi Square": {
module: "Default",
description: "Calculates the Chi Square distribution of values.",
inputType: "byteArray",
outputType: "number",
args: []
},
"Numberwang": {
module: "Default",
description: "Based on the popular gameshow by Mitchell and Webb.",
@@ -3840,7 +3847,7 @@ const OperationConfig = {
"Generate HOTP": {
module: "Default",
description: "The HMAC-based One-Time Password algorithm (HOTP) is an algorithm that computes a one-time password from a shared secret key and an incrementing counter. It has been adopted as Internet Engineering Task Force standard RFC 4226, is the cornerstone of Initiative For Open Authentication (OATH), and is used in a number of two-factor authentication systems.<br><br>Enter the secret as the input or leave it blank for a random secret to be generated.",
inputType: "string",
inputType: "byteArray",
outputType: "string",
args: [
{
+1
View File
@@ -143,6 +143,7 @@ OpModules.Default = {
"Microsoft Script Decoder": MS.runDecodeScript,
"Entropy": Entropy.runEntropy,
"Frequency distribution": Entropy.runFreqDistrib,
"Chi Square": Entropy.runChiSq,
"Detect File Type": FileType.runDetect,
"Scan for Embedded Files": FileType.runScanForEmbeddedFiles,
"Generate UUID": UUID.runGenerateV4,
+16 -15
View File
@@ -2,9 +2,10 @@ import {camelCase, kebabCase, snakeCase} from "lodash";
import Utils from "../Utils.js";
import vkbeautify from "vkbeautify";
import {DOMParser as dom} from "xmldom";
import {DOMParser} from "xmldom";
import xpath from "xpath";
import jpath from "jsonpath";
import nwmatcher from "nwmatcher";
import prettyPrintOne from "imports-loader?window=>global!exports-loader?prettyPrintOne!google-code-prettify/bin/prettify.min.js";
@@ -336,7 +337,7 @@ const Code = {
let doc;
try {
doc = new dom().parseFromString(input);
doc = new DOMParser().parseFromString(input, "application/xml");
} catch (err) {
return "Invalid input XML.";
}
@@ -423,7 +424,7 @@ const Code = {
let query = args[0],
delimiter = args[1],
parser = new DOMParser(),
html,
dom,
result;
if (!query.length || !input.length) {
@@ -431,32 +432,32 @@ const Code = {
}
try {
html = parser.parseFromString(input, "text/html");
dom = parser.parseFromString(input);
} catch (err) {
return "Invalid input HTML.";
}
try {
result = html.querySelectorAll(query);
const matcher = nwmatcher({document: dom});
result = matcher.select(query, dom);
} catch (err) {
return "Invalid CSS Selector. Details:\n" + err.message;
}
const nodeToString = function(node) {
return node.toString();
/* xmldom does not return the outerHTML value.
switch (node.nodeType) {
case Node.ELEMENT_NODE: return node.outerHTML;
case Node.ATTRIBUTE_NODE: return node.value;
case Node.COMMENT_NODE: return node.data;
case Node.TEXT_NODE: return node.wholeText;
case Node.DOCUMENT_NODE: return node.outerHTML;
case node.ELEMENT_NODE: return node.outerHTML;
case node.ATTRIBUTE_NODE: return node.value;
case node.TEXT_NODE: return node.wholeText;
case node.COMMENT_NODE: return node.data;
case node.DOCUMENT_NODE: return node.outerHTML;
default: throw new Error("Unknown Node Type: " + node.nodeType);
}
}*/
};
return Array.apply(null, Array(result.length))
.map(function(_, i) {
return result[i];
})
return result
.map(nodeToString)
.join(delimiter);
},
+25
View File
@@ -135,6 +135,31 @@ const Entropy = {
},
/**
* Chi Square operation.
*
* @param {byteArray} data
* @param {Object[]} args
* @returns {number}
*/
runChiSq: function(input, args) {
let distArray = new Array(256).fill(0),
total = 0;
for (let i = 0; i < input.length; i++) {
distArray[input[i]]++;
}
for (let i = 0; i < distArray.length; i++) {
if (distArray[i] > 0) {
total += Math.pow(distArray[i] - input.length / 256, 2) / (input.length / 256);
}
}
return total;
},
/**
* Calculates the Shannon entropy for a given chunk of data.
*
+1
View File
@@ -1,6 +1,7 @@
import otp from "otp";
import Base64 from "./Base64.js";
/**
* One-Time Password operations.
*
+1
View File
@@ -27,6 +27,7 @@ import "./tests/operations/MorseCode.js";
import "./tests/operations/MS.js";
import "./tests/operations/PHP.js";
import "./tests/operations/NetBIOS.js";
import "./tests/operations/OTP.js";
import "./tests/operations/StrUtils.js";
import "./tests/operations/SeqUtils.js";
+22
View File
@@ -310,4 +310,26 @@ TestRegister.addTests([
}
],
},
{
name: "CSS selector",
input: '<div id="test">\n<p class="a">hello</p>\n<p>world</p>\n<p class="a">again</p>\n</div>',
expectedOutput: '<p class="a">hello</p>\n<p class="a">again</p>',
recipeConfig: [
{
"op": "CSS selector",
"args": ["#test p.a", "\\n"]
}
]
},
{
name: "XPath expression",
input: '<div id="test">\n<p class="a">hello</p>\n<p>world</p>\n<p class="a">again</p>\n</div>',
expectedOutput: '<p class="a">hello</p>\n<p class="a">again</p>',
recipeConfig: [
{
"op": "XPath expression",
"args": ["/div/p[@class=\"a\"]", "\\n"]
}
]
}
]);
+23
View File
@@ -0,0 +1,23 @@
/**
* OTP HOTP tests.
*
* @author bwhitn [brian.m.whitney@outlook.com]
*
* @copyright Crown Copyright 2017
* @license Apache-2.0
*/
import TestRegister from "../../TestRegister.js";
TestRegister.addTests([
{
name: "Generate HOTP",
input: "12345678901234567890",
expectedOutput: "URI: otpauth://hotp/OTPAuthentication?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ\n\nPassword: 755224",
recipeConfig: [
{
op: "Generate HOTP",
args: ["", 32, 6, 0],
},
],
},
]);