diff --git a/README.md b/README.md index 299b5d87..c0996378 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ [![Build Status](https://travis-ci.org/gchq/CyberChef.svg?branch=master)](https://travis-ci.org/gchq/CyberChef) [![dependencies Status](https://david-dm.org/gchq/CyberChef/status.svg)](https://david-dm.org/gchq/CyberChef) [![npm](https://img.shields.io/npm/v/cyberchef.svg)](https://www.npmjs.com/package/cyberchef) -![](https://reposs.herokuapp.com/?path=gchq/CyberChef&color=blue) [![](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/gchq/CyberChef/blob/master/LICENSE) [![Gitter](https://badges.gitter.im/gchq/CyberChef.svg)](https://gitter.im/gchq/CyberChef?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) diff --git a/src/core/operations/ParseUDP.mjs b/src/core/operations/ParseUDP.mjs index 234a08f6..0a88fd5d 100644 --- a/src/core/operations/ParseUDP.mjs +++ b/src/core/operations/ParseUDP.mjs @@ -24,37 +24,35 @@ class ParseUDP extends Operation { this.module = "Default"; this.description = "Parses a UDP header and payload (if present)."; this.infoURL = "https://wikipedia.org/wiki/User_Datagram_Protocol"; - this.inputType = "byteArray"; + this.inputType = "ArrayBuffer"; this.outputType = "json"; this.presentType = "html"; this.args = []; } /** - * @param {Uint8Array} input + * @param {ArrayBuffer} input * @returns {Object} */ run(input, args) { - - if (input.length < "8"){ + if (input.byteLength < 8) { throw new OperationError("Need 8 bytes for a UDP Header"); } - const s = new Stream(input); - //Parse Header + const s = new Stream(new Uint8Array(input)); + // Parse Header const UDPPacket = { "Source port": s.readInt(2), "Destination port": s.readInt(2), "Length": s.readInt(2), - "Checksum": toHex(s.getBytes(2), "0x") + "Checksum": toHex(s.getBytes(2), "") }; - //Parse data if present - if (s.hasMore()){ - UDPPacket.Data = toHex(s.getBytes(UDPPacket.Length - 8), "0x"); + // Parse data if present + if (s.hasMore()) { + UDPPacket.Data = toHex(s.getBytes(UDPPacket.Length - 8), ""); } return UDPPacket; - } /** @@ -64,21 +62,17 @@ class ParseUDP extends Operation { */ present(data) { const html = []; - html.push(""); + html.push("
"); html.push(""); html.push(""); html.push(""); html.push(""); for (const key in data) { - switch (key){ - default: { - html.push(""); - html.push(""); - html.push(""); - html.push(""); - } - } + html.push(""); + html.push(""); + html.push(""); + html.push(""); } html.push("
FieldValue
" + key + "" + data[key] + "
" + key + "" + data[key] + "
"); return html.join(""); diff --git a/tests/operations/tests/ParseUDP.mjs b/tests/operations/tests/ParseUDP.mjs index f6bf54d0..2c519232 100644 --- a/tests/operations/tests/ParseUDP.mjs +++ b/tests/operations/tests/ParseUDP.mjs @@ -12,7 +12,7 @@ TestRegister.addTests([ { name: "Parse UDP: No Data - JSON", input: "04 89 00 35 00 2c 01 01", - expectedOutput: "{\"Source port\":1161,\"Destination port\":53,\"Length\":44,\"Checksum\":\"0x010x01\"}", + expectedOutput: "{\"Source port\":1161,\"Destination port\":53,\"Length\":44,\"Checksum\":\"0101\"}", recipeConfig: [ { op: "From Hex", @@ -30,7 +30,7 @@ TestRegister.addTests([ }, { name: "Parse UDP: With Data - JSON", input: "04 89 00 35 00 2c 01 01 02 02", - expectedOutput: "{\"Source port\":1161,\"Destination port\":53,\"Length\":44,\"Checksum\":\"0x010x01\",\"Data\":\"0x020x02\"}", + expectedOutput: "{\"Source port\":1161,\"Destination port\":53,\"Length\":44,\"Checksum\":\"0101\",\"Data\":\"0202\"}", recipeConfig: [ { op: "From Hex",