TextEncodingBruteForce: input is byteArray

closes Bug report: Text Encoding Brute Force: `inputType` is `"string"` instead of `"byteArray"`
Fixes #2281
This commit is contained in:
Willi Ballenthin 2026-03-23 19:02:13 +00:00
parent b0fa1f8d1b
commit 3312392d64
2 changed files with 20 additions and 4 deletions

View File

@ -32,7 +32,7 @@ class TextEncodingBruteForce extends Operation {
"</ul>" "</ul>"
].join("\n"); ].join("\n");
this.infoURL = "https://wikipedia.org/wiki/Character_encoding"; this.infoURL = "https://wikipedia.org/wiki/Character_encoding";
this.inputType = "string"; this.inputType = "byteArray";
this.outputType = "json"; this.outputType = "json";
this.presentType = "html"; this.presentType = "html";
this.args = [ this.args = [
@ -45,21 +45,22 @@ class TextEncodingBruteForce extends Operation {
} }
/** /**
* @param {string} input * @param {byteArray} input
* @param {Object[]} args * @param {Object[]} args
* @returns {json} * @returns {json}
*/ */
run(input, args) { run(input, args) {
const output = {}, const output = {},
charsets = Object.keys(CHR_ENC_CODE_PAGES), charsets = Object.keys(CHR_ENC_CODE_PAGES),
mode = args[0]; mode = args[0],
stringInput = Utils.arrayBufferToStr(input);
charsets.forEach(charset => { charsets.forEach(charset => {
try { try {
if (mode === "Decode") { if (mode === "Decode") {
output[charset] = cptable.utils.decode(CHR_ENC_CODE_PAGES[charset], input); output[charset] = cptable.utils.decode(CHR_ENC_CODE_PAGES[charset], input);
} else { } else {
output[charset] = Utils.arrayBufferToStr(cptable.utils.encode(CHR_ENC_CODE_PAGES[charset], input)); output[charset] = Utils.arrayBufferToStr(cptable.utils.encode(CHR_ENC_CODE_PAGES[charset], stringInput));
} }
} catch (err) { } catch (err) {
output[charset] = "Could not decode."; output[charset] = "Could not decode.";

View File

@ -30,6 +30,21 @@ TestRegister.addTests([
args: ["Decode"], args: ["Decode"],
}, },
], ],
},
{
name: "Text Encoding Brute Force - Decode preserves raw UTF-8 bytes",
input: "63 61 66 c3 a9",
expectedMatch: /UTF-8 Unicode \(65001\).{1,10}café/,
recipeConfig: [
{
op: "From Hex",
args: ["Auto"],
},
{
op: "Text Encoding Brute Force",
args: ["Decode"],
},
],
} }
]); ]);