From e59a0b294345a28c9312cdfbc01676a2cc7b7373 Mon Sep 17 00:00:00 2001 From: John Shaver Date: Mon, 25 Sep 2017 11:06:36 -0700 Subject: [PATCH] We need to deal with the tcpdump headers as well :eyeroll: --- index.js | 35 +++++++++++++++++++++++++++++++++-- package.json | 1 + 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 2d3c426..75d4afd 100644 --- a/index.js +++ b/index.js @@ -5,10 +5,17 @@ if(typeof(atob) === 'undefined') { 'use strict'; var encodedPacket = "1MOyoQIABAAAAAAAAAAAAAAABAABAAAAKPfFWWMZCwBRAAAAUQAAAExg3kp+6eSzGAoxpggARQAAQ66CQABAEXgXCgAAEAoAAAG90gA1AC+qDJSEAQAAAQAAAAAAAAphc3NldHMtY2RuBmdpdGh1YgNjb20AAAEAAQ==" + //convert to binary string to create ArrayBuffer var packet = atob(encodedPacket); - console.log(packet.length); + console.log("tcpdump length:", packet.length); + //The first 40 bytes are the tcpdump header + packet = packet.slice(40); + + console.log("UDP length:", packet.length); + + //We now have the raw UDP packet! var buffer = new ArrayBuffer(packet.length); var view = new DataView(buffer) @@ -18,7 +25,31 @@ if(typeof(atob) === 'undefined') { } for(i = 0; i < packet.length; ++i) { - console.log(view.getUint8(i).toString(16)); + } + + console.log("Result:", parseDNSHeader(view)); + + //Parse DNS Header (given the UDP payload) + function parseDNSHeader(view) { + return { + MessageID: getHId(view) + }; + } + + function getHId(view) { + return view.getUint16(0, false) + } + function getQR(view) { + + } + function getOPCode(view) { + + } + function getAA(view) { + + } + function getTC(view) { + } })(); diff --git a/package.json b/package.json index 24bca3f..1e481f7 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "", "main": "index.js", "scripts": { + "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "repository": {