mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-20 23:06:16 -04:00
Added 'Decimal' option for toggleStrings. Closes #337.
This commit is contained in:
parent
c1b2fc9400
commit
affe057cab
10 changed files with 51 additions and 21 deletions
|
@ -8,6 +8,7 @@ import utf8 from "utf8";
|
||||||
import moment from "moment-timezone";
|
import moment from "moment-timezone";
|
||||||
import {fromBase64} from "./lib/Base64";
|
import {fromBase64} from "./lib/Base64";
|
||||||
import {fromHex} from "./lib/Hex";
|
import {fromHex} from "./lib/Hex";
|
||||||
|
import {fromDecimal} from "./lib/Decimal";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -297,7 +298,7 @@ class Utils {
|
||||||
* Accepts hex, Base64, UTF8 and Latin1 strings.
|
* Accepts hex, Base64, UTF8 and Latin1 strings.
|
||||||
*
|
*
|
||||||
* @param {string} str
|
* @param {string} str
|
||||||
* @param {string} type - One of "Hex", "Base64", "UTF8" or "Latin1"
|
* @param {string} type - One of "Hex", "Decimal", "Base64", "UTF8" or "Latin1"
|
||||||
* @returns {byteArray}
|
* @returns {byteArray}
|
||||||
*
|
*
|
||||||
* @example
|
* @example
|
||||||
|
@ -314,6 +315,8 @@ class Utils {
|
||||||
switch (type.toLowerCase()) {
|
switch (type.toLowerCase()) {
|
||||||
case "hex":
|
case "hex":
|
||||||
return fromHex(str);
|
return fromHex(str);
|
||||||
|
case "decimal":
|
||||||
|
return fromDecimal(str);
|
||||||
case "base64":
|
case "base64":
|
||||||
return fromBase64(str, null, "byteArray");
|
return fromBase64(str, null, "byteArray");
|
||||||
case "utf8":
|
case "utf8":
|
||||||
|
|
37
src/core/lib/Decimal.mjs
Normal file
37
src/core/lib/Decimal.mjs
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/**
|
||||||
|
* Decimal functions.
|
||||||
|
*
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @copyright Crown Copyright 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Utils from "../Utils";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a string of decimal values into a byte array.
|
||||||
|
*
|
||||||
|
* @param {string} data
|
||||||
|
* @param {string} [delim]
|
||||||
|
* @returns {byteArray}
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // returns [10,20,30]
|
||||||
|
* fromDecimal("10 20 30");
|
||||||
|
*
|
||||||
|
* // returns [10,20,30]
|
||||||
|
* fromDecimal("10:20:30", "Colon");
|
||||||
|
*/
|
||||||
|
export function fromDecimal(data, delim="Auto") {
|
||||||
|
delim = Utils.charRep(delim);
|
||||||
|
const output = [];
|
||||||
|
let byteStr = data.split(delim);
|
||||||
|
if (byteStr[byteStr.length-1] === "")
|
||||||
|
byteStr = byteStr.slice(0, byteStr.length-1);
|
||||||
|
|
||||||
|
for (let i = 0; i < byteStr.length; i++) {
|
||||||
|
output[i] = parseInt(byteStr[i], 10);
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Byte representation functions.
|
* Hexadecimal functions.
|
||||||
*
|
*
|
||||||
* @author n1474335 [n1474335@gmail.com]
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
* @copyright Crown Copyright 2016
|
* @copyright Crown Copyright 2016
|
||||||
|
@ -83,8 +83,7 @@ export function toHexFast(data) {
|
||||||
* // returns [10,20,30]
|
* // returns [10,20,30]
|
||||||
* fromHex("0a:14:1e", "Colon");
|
* fromHex("0a:14:1e", "Colon");
|
||||||
*/
|
*/
|
||||||
export function fromHex(data, delim, byteLen=2) {
|
export function fromHex(data, delim="Auto", byteLen=2) {
|
||||||
delim = delim || "Auto";
|
|
||||||
if (delim !== "None") {
|
if (delim !== "None") {
|
||||||
const delimRegex = delim === "Auto" ? /[^a-f\d]/gi : Utils.regexRep(delim);
|
const delimRegex = delim === "Auto" ? /[^a-f\d]/gi : Utils.regexRep(delim);
|
||||||
data = data.replace(delimRegex, "");
|
data = data.replace(delimRegex, "");
|
||||||
|
|
|
@ -29,7 +29,7 @@ class ADD extends Operation {
|
||||||
"name": "Key",
|
"name": "Key",
|
||||||
"type": "toggleString",
|
"type": "toggleString",
|
||||||
"value": "",
|
"value": "",
|
||||||
"toggleValues": ["Hex", "Base64", "UTF8", "Latin1"]
|
"toggleValues": ["Hex", "Decimal", "Base64", "UTF8", "Latin1"]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ class AND extends Operation {
|
||||||
"name": "Key",
|
"name": "Key",
|
||||||
"type": "toggleString",
|
"type": "toggleString",
|
||||||
"value": "",
|
"value": "",
|
||||||
"toggleValues": ["Hex", "Base64", "UTF8", "Latin1"]
|
"toggleValues": ["Hex", "Decimal", "Base64", "UTF8", "Latin1"]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import Operation from "../Operation";
|
import Operation from "../Operation";
|
||||||
import Utils from "../Utils";
|
|
||||||
import {DELIM_OPTIONS} from "../lib/Delim";
|
import {DELIM_OPTIONS} from "../lib/Delim";
|
||||||
|
import {fromDecimal} from "../lib/Decimal";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* From Decimal operation
|
* From Decimal operation
|
||||||
|
@ -71,16 +71,7 @@ class FromDecimal extends Operation {
|
||||||
* @returns {byteArray}
|
* @returns {byteArray}
|
||||||
*/
|
*/
|
||||||
run(input, args) {
|
run(input, args) {
|
||||||
const delim = Utils.charRep(args[0]),
|
return fromDecimal(input, args[0]);
|
||||||
output = [];
|
|
||||||
let byteStr = input.split(delim);
|
|
||||||
if (byteStr[byteStr.length-1] === "")
|
|
||||||
byteStr = byteStr.slice(0, byteStr.length-1);
|
|
||||||
|
|
||||||
for (let i = 0; i < byteStr.length; i++) {
|
|
||||||
output[i] = parseInt(byteStr[i], 10);
|
|
||||||
}
|
|
||||||
return output;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ class FromHex extends Operation {
|
||||||
* @returns {byteArray}
|
* @returns {byteArray}
|
||||||
*/
|
*/
|
||||||
run(input, args) {
|
run(input, args) {
|
||||||
const delim = args[0] || "Space";
|
const delim = args[0] || "Auto";
|
||||||
return fromHex(input, delim, 2);
|
return fromHex(input, delim, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ class OR extends Operation {
|
||||||
"name": "Key",
|
"name": "Key",
|
||||||
"type": "toggleString",
|
"type": "toggleString",
|
||||||
"value": "",
|
"value": "",
|
||||||
"toggleValues": ["Hex", "Base64", "UTF8", "Latin1"]
|
"toggleValues": ["Hex", "Decimal", "Base64", "UTF8", "Latin1"]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ class SUB extends Operation {
|
||||||
"name": "Key",
|
"name": "Key",
|
||||||
"type": "toggleString",
|
"type": "toggleString",
|
||||||
"value": "",
|
"value": "",
|
||||||
"toggleValues": ["Hex", "Base64", "UTF8", "Latin1"]
|
"toggleValues": ["Hex", "Decimal", "Base64", "UTF8", "Latin1"]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ class XOR extends Operation {
|
||||||
"name": "Key",
|
"name": "Key",
|
||||||
"type": "toggleString",
|
"type": "toggleString",
|
||||||
"value": "",
|
"value": "",
|
||||||
"toggleValues": ["Hex", "Base64", "UTF8", "Latin1"]
|
"toggleValues": ["Hex", "Decimal", "Base64", "UTF8", "Latin1"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Scheme",
|
"name": "Scheme",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue