generated from Dicken/dickendock
62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
/**
|
|
* Ordnet die ersten drei Oktette einer MAC-Adresse (OUI-Präfix) einem
|
|
* Hersteller zu. Bewusst eine KLEINE, aber jeweils einzeln online
|
|
* verifizierte Auswahl (nicht aus dem Gedächtnis geraten) - NICHT die
|
|
* vollständige IEEE-OUI-Registrierung (die hat >50.000 Einträge). Komplett
|
|
* offline zur Laufzeit, kein externer Dienst.
|
|
*
|
|
* Deckt bewusst die im Homelab-Kontext häufigsten "Kern"-Geräte ab: Single-
|
|
* Board-Computer, NAS-Systeme und Virtualisierung. Router/Switches/IoT
|
|
* wurden nicht aufgenommen, weil sich die exakten Präfixe nicht ohne
|
|
* weitere ausführliche Recherche verlässlich verifizieren ließen - lieber
|
|
* gar keinen Treffer als einen falschen.
|
|
*
|
|
* Unbekannte Präfixe liefern null, das Feld bleibt dann leer und frei
|
|
* editierbar. Bereits gesetzte Werte werden nie überschrieben (siehe
|
|
* Aufrufer in devices.ts).
|
|
*/
|
|
const OUI_VENDORS: Record<string, string> = {
|
|
// Raspberry Pi Foundation / Raspberry Pi Trading Ltd
|
|
// Quelle: forums.raspberrypi.com/viewtopic.php?t=347926, maclookup.app/macaddress/b827eb
|
|
"28CDC1": "Raspberry Pi",
|
|
B827EB: "Raspberry Pi",
|
|
D83ADD: "Raspberry Pi",
|
|
DCA632: "Raspberry Pi",
|
|
E45F01: "Raspberry Pi",
|
|
|
|
// VMware (virtuelle Netzwerkkarten)
|
|
// Quelle: maclookup.app/macaddress/005056, maclookup.app/macaddress/000c29
|
|
"005056": "VMware (VM)",
|
|
"000C29": "VMware (VM)",
|
|
|
|
// Synology
|
|
// Quelle: maclookup.app/vendors/synology-incorporated
|
|
"001132": "Synology",
|
|
"9009D0": "Synology",
|
|
|
|
// QNAP
|
|
// Quelle: maclookup.app/vendors/qnap-systems-inc
|
|
"245EBE": "QNAP",
|
|
E843B6: "QNAP",
|
|
|
|
// QEMU/KVM (Standard-Präfix für automatisch generierte VM-MACs,
|
|
// u. a. von Proxmox VE verwendet) - allgemein bekannte Konvention.
|
|
"525400": "QEMU/Proxmox (VM)",
|
|
|
|
// Docker (docker0-Bridge-Netzwerk) - Software-Konvention, kein
|
|
// IEEE-registriertes OUI, aber in der Praxis sehr zuverlässig.
|
|
"0242AC": "Docker (virtuell)",
|
|
};
|
|
|
|
function normalizeOui(mac: string): string | null {
|
|
const cleaned = mac.replace(/[^0-9A-Fa-f]/g, "").toUpperCase();
|
|
if (cleaned.length < 6) return null;
|
|
return cleaned.slice(0, 6);
|
|
}
|
|
|
|
export function lookupVendorFromMac(mac: string): string | null {
|
|
const oui = normalizeOui(mac);
|
|
if (!oui) return null;
|
|
return OUI_VENDORS[oui] ?? null;
|
|
}
|