UNPKG

@network-utils/vendor-lookup

Version:

Returns the IEEE registered vendor name from the MAC address, using an up-to-date database (with a script to update it automatically).

34 lines (33 loc) 1.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toVendor = exports.isRandomMac = void 0; const VendorDatabase_1 = require("./VendorDatabase"); function isRandomMac(mac) { return ["2", "6", "A", "E", "a", "e"].includes(mac.charAt(1)); } exports.isRandomMac = isRandomMac; const vendorPrefixMap = {}; var intialized = false; function loadDatabase() { for (var vendor in VendorDatabase_1.MAC_PREFIX_PER_VENDOR) { VendorDatabase_1.MAC_PREFIX_PER_VENDOR[vendor].forEach(prefix => vendorPrefixMap[prefix] = vendor); } } function toVendor(mac) { if (isRandomMac(mac)) return "<random MAC>"; if (!intialized) { loadDatabase(); intialized = true; } const macFormatted = mac.replace(/:/g, "").toUpperCase(); const vendor = vendorPrefixMap[macFormatted.slice(0, 9)] || vendorPrefixMap[macFormatted.slice(0, 7)] || vendorPrefixMap[macFormatted.slice(0, 6)]; if (vendor === undefined) return "<unknown>"; if (vendor === "Private") return "<private>"; return vendor; } exports.toVendor = toVendor;