From 33e8400d51b785eb18f8e680d1e4934d68d5f58e Mon Sep 17 00:00:00 2001 From: MrUnknownDE Date: Sat, 29 Mar 2025 17:12:44 +0100 Subject: [PATCH] fix ismacvalid func --- backend/server.js | 20 ++++++++++++-------- frontend/app/mac-lookup.html | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/server.js b/backend/server.js index 6978621..3470e76 100644 --- a/backend/server.js +++ b/backend/server.js @@ -96,7 +96,7 @@ function isValidMac(mac) { return false; } // Erlaubt Formate wie 00:1A:2B:3C:4D:5E, 00-1A-2B-3C-4D-5E, 001A.2B3C.4D5E - const macRegex = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$|^([0-9A-Fa-f]{4}\.){2}([0-9A-Fa-f]{4})$/; + const macRegex = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$|^([0-9A-Fa-f]{4}\.){2}([0-9A-Fa-f]{4})$|^([0-9A-Fa-f]{12})$/; // Auch ohne Trennzeichen erlaubt return macRegex.test(mac.trim()); } @@ -698,20 +698,24 @@ app.get('/api/mac-lookup', async (req, res) => { } try { - // Verwende macaddress.one() für asynchronen Lookup - const result = await macaddress.one(mac); + // Bereinige die MAC-Adresse: Entferne alle nicht-hexadezimalen Zeichen + const cleanedMac = mac.replace(/[^0-9a-fA-F]/g, ''); + logger.debug({ requestIp, originalMac: mac, cleanedMac }, 'Cleaned MAC address for lookup'); + + // Verwende die bereinigte MAC-Adresse für den Lookup + const result = await macaddress.one(cleanedMac); if (result && result.vendor) { // Prüfe, ob Ergebnis und Vendor existieren - logger.info({ requestIp, mac, vendor: result.vendor }, 'MAC lookup successful'); - res.json({ success: true, mac, vendor: result.vendor }); + logger.info({ requestIp, mac: cleanedMac, vendor: result.vendor }, 'MAC lookup successful'); + res.json({ success: true, mac: mac, vendor: result.vendor }); // Gib die originale MAC zurück } else { - logger.info({ requestIp, mac }, 'MAC lookup successful, but no vendor found'); - res.json({ success: true, mac, vendor: null, message: 'Vendor not found for this MAC address prefix.' }); + logger.info({ requestIp, mac: cleanedMac }, 'MAC lookup successful, but no vendor found'); + res.json({ success: true, mac: mac, vendor: null, message: 'Vendor not found for this MAC address prefix.' }); // Gib die originale MAC zurück } } catch (error) { // Fehler können auftreten, wenn die interne DB nicht geladen werden kann - // oder die Eingabe ungültig ist + // oder die Eingabe ungültig ist (trotz Bereinigung, falls die Bibliothek weitere Prüfungen macht) logger.error({ requestIp, mac, error: error.message }, 'MAC lookup failed'); res.status(500).json({ success: false, error: `MAC lookup failed: ${error.message}` }); } diff --git a/frontend/app/mac-lookup.html b/frontend/app/mac-lookup.html index 5fdfd00..8e8f071 100644 --- a/frontend/app/mac-lookup.html +++ b/frontend/app/mac-lookup.html @@ -47,7 +47,7 @@
-

MAC Address Lookup (OUI)

+

MAC Address Lookup