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

View File

@ -30,6 +30,21 @@ TestRegister.addTests([
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"],
},
],
}
]);