mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-20 14:56:19 -04:00
'To Braille' and 'From Braille' operations added. Closes #255
This commit is contained in:
parent
3d4f54e8bc
commit
2a49af1ec3
5 changed files with 163 additions and 1 deletions
|
@ -1,6 +1,9 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
All notable changes to CyberChef will be documented in this file.
|
All notable changes to CyberChef will be documented in this file.
|
||||||
|
|
||||||
|
### [8.5.0] - 2018-08-23
|
||||||
|
- 'To Braille' and 'From Braille' operations added [@n1474335] | [#255]
|
||||||
|
|
||||||
### [8.4.0] - 2018-08-23
|
### [8.4.0] - 2018-08-23
|
||||||
- 'To Base85' and 'From Base85' operations added [@PenguinGeorge] | [#340]
|
- 'To Base85' and 'From Base85' operations added [@PenguinGeorge] | [#340]
|
||||||
|
|
||||||
|
@ -41,6 +44,7 @@ All notable changes to CyberChef will be documented in this file.
|
||||||
- Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306)
|
- Initial open source commit [@n1474335] | [b1d73a72](https://github.com/gchq/CyberChef/commit/b1d73a725dc7ab9fb7eb789296efd2b7e4b08306)
|
||||||
|
|
||||||
|
|
||||||
|
[8.5.0]: https://github.com/gchq/CyberChef/releases/tag/v8.5.0
|
||||||
[8.4.0]: https://github.com/gchq/CyberChef/releases/tag/v8.4.0
|
[8.4.0]: https://github.com/gchq/CyberChef/releases/tag/v8.4.0
|
||||||
[8.3.0]: https://github.com/gchq/CyberChef/releases/tag/v8.3.0
|
[8.3.0]: https://github.com/gchq/CyberChef/releases/tag/v8.3.0
|
||||||
[8.2.0]: https://github.com/gchq/CyberChef/releases/tag/v8.2.0
|
[8.2.0]: https://github.com/gchq/CyberChef/releases/tag/v8.2.0
|
||||||
|
@ -65,6 +69,7 @@ All notable changes to CyberChef will be documented in this file.
|
||||||
[#224]: https://github.com/gchq/CyberChef/pull/224
|
[#224]: https://github.com/gchq/CyberChef/pull/224
|
||||||
[#239]: https://github.com/gchq/CyberChef/pull/239
|
[#239]: https://github.com/gchq/CyberChef/pull/239
|
||||||
[#248]: https://github.com/gchq/CyberChef/pull/248
|
[#248]: https://github.com/gchq/CyberChef/pull/248
|
||||||
|
[#255]: https://github.com/gchq/CyberChef/issues/255
|
||||||
[#281]: https://github.com/gchq/CyberChef/pull/281
|
[#281]: https://github.com/gchq/CyberChef/pull/281
|
||||||
[#284]: https://github.com/gchq/CyberChef/pull/284
|
[#284]: https://github.com/gchq/CyberChef/pull/284
|
||||||
[#294]: https://github.com/gchq/CyberChef/pull/294
|
[#294]: https://github.com/gchq/CyberChef/pull/294
|
||||||
|
|
|
@ -51,7 +51,9 @@
|
||||||
"Decode text",
|
"Decode text",
|
||||||
"Swap endianness",
|
"Swap endianness",
|
||||||
"To MessagePack",
|
"To MessagePack",
|
||||||
"From MessagePack"
|
"From MessagePack",
|
||||||
|
"To Braille",
|
||||||
|
"From Braille"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
15
src/core/lib/Braille.mjs
Normal file
15
src/core/lib/Braille.mjs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
/**
|
||||||
|
* Braille resources.
|
||||||
|
*
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @copyright Crown Copyright 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Braille lookup table.
|
||||||
|
*/
|
||||||
|
export const BRAILLE_LOOKUP = {
|
||||||
|
ascii: " A1B'K2L@CIF/MSP\"E3H9O6R^DJG>NTQ,*5<-U8V.%[$+X!&;:4\\0Z7(_?W]#Y)=",
|
||||||
|
dot6: "⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿"
|
||||||
|
};
|
70
src/core/operations/FromBraille.mjs
Normal file
70
src/core/operations/FromBraille.mjs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
/**
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @copyright Crown Copyright 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from "../Operation";
|
||||||
|
import {BRAILLE_LOOKUP} from "../lib/Braille";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* From Braille operation
|
||||||
|
*/
|
||||||
|
class FromBraille extends Operation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FromBraille constructor
|
||||||
|
*/
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = "From Braille";
|
||||||
|
this.module = "Default";
|
||||||
|
this.description = "Converts six-dot braille symbols to text.";
|
||||||
|
this.infoURL = "https://wikipedia.org/wiki/Braille";
|
||||||
|
this.inputType = "string";
|
||||||
|
this.outputType = "string";
|
||||||
|
this.args = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
run(input, args) {
|
||||||
|
return input.split("").map(b => {
|
||||||
|
const idx = BRAILLE_LOOKUP.dot6.indexOf(b);
|
||||||
|
return idx < 0 ? b : BRAILLE_LOOKUP.ascii[idx];
|
||||||
|
}).join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Highlight From Braille
|
||||||
|
*
|
||||||
|
* @param {Object[]} pos
|
||||||
|
* @param {number} pos[].start
|
||||||
|
* @param {number} pos[].end
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {Object[]} pos
|
||||||
|
*/
|
||||||
|
highlight(pos, args) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Highlight From Braille in reverse
|
||||||
|
*
|
||||||
|
* @param {Object[]} pos
|
||||||
|
* @param {number} pos[].start
|
||||||
|
* @param {number} pos[].end
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {Object[]} pos
|
||||||
|
*/
|
||||||
|
highlightReverse(pos, args) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default FromBraille;
|
70
src/core/operations/ToBraille.mjs
Normal file
70
src/core/operations/ToBraille.mjs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
/**
|
||||||
|
* @author n1474335 [n1474335@gmail.com]
|
||||||
|
* @copyright Crown Copyright 2018
|
||||||
|
* @license Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Operation from "../Operation";
|
||||||
|
import {BRAILLE_LOOKUP} from "../lib/Braille";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To Braille operation
|
||||||
|
*/
|
||||||
|
class ToBraille extends Operation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ToBraille constructor
|
||||||
|
*/
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.name = "To Braille";
|
||||||
|
this.module = "Default";
|
||||||
|
this.description = "Converts text to six-dot braille symbols.";
|
||||||
|
this.infoURL = "https://wikipedia.org/wiki/Braille";
|
||||||
|
this.inputType = "string";
|
||||||
|
this.outputType = "string";
|
||||||
|
this.args = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} input
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
run(input, args) {
|
||||||
|
return input.split("").map(c => {
|
||||||
|
const idx = BRAILLE_LOOKUP.ascii.indexOf(c.toUpperCase());
|
||||||
|
return idx < 0 ? c : BRAILLE_LOOKUP.dot6[idx];
|
||||||
|
}).join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Highlight To Braille
|
||||||
|
*
|
||||||
|
* @param {Object[]} pos
|
||||||
|
* @param {number} pos[].start
|
||||||
|
* @param {number} pos[].end
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {Object[]} pos
|
||||||
|
*/
|
||||||
|
highlight(pos, args) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Highlight To Braille in reverse
|
||||||
|
*
|
||||||
|
* @param {Object[]} pos
|
||||||
|
* @param {number} pos[].start
|
||||||
|
* @param {number} pos[].end
|
||||||
|
* @param {Object[]} args
|
||||||
|
* @returns {Object[]} pos
|
||||||
|
*/
|
||||||
|
highlightReverse(pos, args) {
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ToBraille;
|
Loading…
Add table
Add a link
Reference in a new issue