diff --git a/src/core/operations/ParseIPv4Header.mjs b/src/core/operations/ParseIPv4Header.mjs index 4eed5d46..a1ab93b3 100644 --- a/src/core/operations/ParseIPv4Header.mjs +++ b/src/core/operations/ParseIPv4Header.mjs @@ -138,7 +138,7 @@ class ParseIPv4Header extends Operation { } else if (outputFormat === "Data (hex)") { return toHex(data); } else if (outputFormat === "Data (raw)") { - return Utils.byteArrayToChars(data); + return Utils.escapeHtml(Utils.byteArrayToChars(data)); } } diff --git a/tests/operations/index.mjs b/tests/operations/index.mjs index 03ad0e10..c12c2710 100644 --- a/tests/operations/index.mjs +++ b/tests/operations/index.mjs @@ -126,6 +126,7 @@ import "./tests/NormaliseUnicode.mjs"; import "./tests/NTLM.mjs"; import "./tests/OTP.mjs"; import "./tests/ParseEthernetFrame.mjs"; +import "./tests/ParseIPv4Header.mjs"; import "./tests/ParseIPRange.mjs"; import "./tests/ParseObjectIDTimestamp.mjs"; import "./tests/ParseQRCode.mjs"; diff --git a/tests/operations/tests/ParseIPv4Header.mjs b/tests/operations/tests/ParseIPv4Header.mjs new file mode 100644 index 00000000..47c2592a --- /dev/null +++ b/tests/operations/tests/ParseIPv4Header.mjs @@ -0,0 +1,23 @@ +/** + * Parse IPv4 header tests. + * + * @author C85297 [95289555+C85297@users.noreply.github.com] + * @copyright Crown Copyright 2026 + * @license Apache-2.0 + */ + +import TestRegister from "../../lib/TestRegister.mjs"; + +TestRegister.addTests([ + { + name: "Parse IPv4 header: Correctly formatted HTML output", + input: "45 00 00 3c 1c 46 40 00 40 06 b1 e6 c0 a8 00 01 c0 a8 00 02 3c 73 63 72 69 70 74 3e 61 6c 65 72 74 28 31 33 33 37 29 3c 2f 73 63 72 69 70 74 3e", + expectedOutput: "<script>alert(1337)</script>", + recipeConfig: [ + { + op: "Parse IPv4 header", + args: ["Hex", "Data (raw)"] + } + ] + } +]);