Bläddra i källkod

Merge pull request #90 from gchq/feature-ipv6reservedranges

Added EUI-64 detection to 'Parse IPv6 address'
n1474335 8 år sedan
förälder
incheckning
691f156911
1 ändrade filer med 16 tillägg och 0 borttagningar
  1. 16 0
      src/js/operations/IP.js

+ 16 - 0
src/js/operations/IP.js

@@ -209,6 +209,22 @@ var IP = {
                 output += "\nThis is a reserved multicast address.";
                 output += "\nMulticast addresses range: ff00::/8";
             }
+
+
+            // Detect possible EUI-64 addresses
+            if ((ipv6[5] & 0xff === 0xff) && (ipv6[6] >>> 8 === 0xfe)) {
+                output += "\n\nThis IPv6 address contains a modified EUI-64 address, identified by the presence of FF:FE in the 12th and 13th octets.";
+
+                var intIdent = Utils.hex(ipv6[4] >>> 8) + ":" + Utils.hex(ipv6[4] & 0xff) + ":" +
+                    Utils.hex(ipv6[5] >>> 8) + ":" + Utils.hex(ipv6[5] & 0xff) + ":" +
+                    Utils.hex(ipv6[6] >>> 8) + ":" + Utils.hex(ipv6[6] & 0xff) + ":" +
+                    Utils.hex(ipv6[7] >>> 8) + ":" + Utils.hex(ipv6[7] & 0xff),
+                    mac = Utils.hex((ipv6[4] >>> 8) ^ 2) + ":" + Utils.hex(ipv6[4] & 0xff) + ":" +
+                    Utils.hex(ipv6[5] >>> 8) + ":" + Utils.hex(ipv6[6] & 0xff) + ":" +
+                    Utils.hex(ipv6[7] >>> 8) + ":" + Utils.hex(ipv6[7] & 0xff);
+                output += "\nInterface identifier: " + intIdent +
+                    "\nMAC address:          " + mac;
+            }
         } else {
             return "Invalid IPv6 address";
         }