diff --git a/src/core/operations/TextEncodingBruteForce.mjs b/src/core/operations/TextEncodingBruteForce.mjs index ef2d6500b..9c606eaa0 100644 --- a/src/core/operations/TextEncodingBruteForce.mjs +++ b/src/core/operations/TextEncodingBruteForce.mjs @@ -26,7 +26,13 @@ class TextEncodingBruteForce extends Operation { this.infoURL = "https://wikipedia.org/wiki/Character_encoding"; this.inputType = "string"; this.outputType = "string"; - this.args = []; + this.args = [ + { + name: "Mode", + type: "option", + value: ["Encode", "Decode"] + } + ]; } /** @@ -36,12 +42,23 @@ class TextEncodingBruteForce extends Operation { */ run(input, args) { const output = [], - charSets = Object.keys(IO_FORMAT); + charSets = Object.keys(IO_FORMAT), + mode = args[0]; for (let i = 0; i < charSets.length; i++) { - let currentEncoding = Utils.printable(charSets[i] + ": ", false); - currentEncoding += cptable.utils.encode(IO_FORMAT[charSets[i]], input); - output.push(currentEncoding); + let currentEncoding = charSets[i] + ": "; + + try { + if (mode === "Decode") { + currentEncoding += cptable.utils.decode(IO_FORMAT[charSets[i]], input); + } else { + currentEncoding += cptable.utils.encode(IO_FORMAT[charSets[i]], input); + } + } catch (err) { + currentEncoding += "Could not decode."; + } + + output.push(Utils.printable(currentEncoding, true)); } return output.join("\n"); diff --git a/test/tests/operations/TextEncodingBruteForce.mjs b/test/tests/operations/TextEncodingBruteForce.mjs index e79b24af5..3b16453d9 100644 --- a/test/tests/operations/TextEncodingBruteForce.mjs +++ b/test/tests/operations/TextEncodingBruteForce.mjs @@ -10,13 +10,24 @@ import TestRegister from "../../TestRegister"; TestRegister.addTests([ { - name: "Text Encoding Brute Force", + name: "Text Encoding Brute Force - Encode", input: "Булкі праз ляніва сабаку.", expectedMatch: /Windows-1251 Cyrillic \(1251\): Булкі праз ляніва сабаку\./, recipeConfig: [ { op: "Text Encoding Brute Force", - args: [], + args: ["Encode"], + }, + ], + }, + { + name: "Text Encoding Brute Force - Decode", + input: "Áóëê³ ïðàç ëÿí³âà ñàáàêó.", + expectedMatch: /Windows-1251 Cyrillic \(1251\): Булкі праз ляніва сабаку\./, + recipeConfig: [ + { + op: "Text Encoding Brute Force", + args: ["Decode"], }, ], }