@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
JavaScript
;
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;