Przeglądaj źródła

Tidied up 'Parse UDP' operation

n1474335 6 lat temu
rodzic
commit
0031345383
3 zmienionych plików z 16 dodań i 23 usunięć
  1. 0 1
      README.md
  2. 14 20
      src/core/operations/ParseUDP.mjs
  3. 2 2
      tests/operations/tests/ParseUDP.mjs

+ 0 - 1
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)
 

+ 14 - 20
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("<table class='table table-hover table-sm table-bordered' style='table-layout: fixed'>");
+        html.push("<table class='table table-hover table-sm table-bordered table-nonfluid' style='table-layout: fixed'>");
         html.push("<tr>");
         html.push("<th>Field</th>");
         html.push("<th>Value</th>");
         html.push("</tr>");
 
         for (const key in data) {
-            switch (key){
-                default: {
-                    html.push("<tr>");
-                    html.push("<td style=\"word-wrap:break-word\">" + key + "</td>");
-                    html.push("<td>" + data[key] + "</td>");
-                    html.push("</tr>");
-                }
-            }
+            html.push("<tr>");
+            html.push("<td style=\"word-wrap:break-word\">" + key + "</td>");
+            html.push("<td>" + data[key] + "</td>");
+            html.push("</tr>");
         }
         html.push("</table>");
         return html.join("");

+ 2 - 2
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",