From 934b604b655d72560ef69508e95c227c50b93272 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 23 Jul 2026 15:36:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(mac-vendor):=20=E4=BF=AE=E5=A4=8D=20OUI=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=20key=20=E6=A0=BC=E5=BC=8F=E4=B8=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=AF=BC=E8=87=B4=E6=B0=B8=E8=BF=9C=E6=9F=A5?= =?UTF-8?q?=E4=B8=8D=E5=88=B0=E5=8E=82=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题原因: - oui.txt 中的 key 格式为 AABBCC(无冒号,6位十六进制) - 代码中提取的 oui = mac[:8] 是 AA:BB:CC(带冒号,8字符) - db.get(oui) 永远匹配不到,且回退的遍历逻辑在4万条字典上 每次查都全扫描,性能极差 解决方案: - 提取 OUI 后去掉冒号再查询:oui.replace(':', '') - 直接 db.get() 精确匹配,O(1) 时间复杂度 --- backend/app/services/enhanced_scan_service.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/backend/app/services/enhanced_scan_service.py b/backend/app/services/enhanced_scan_service.py index 66d6c4f..ee5ef99 100644 --- a/backend/app/services/enhanced_scan_service.py +++ b/backend/app/services/enhanced_scan_service.py @@ -86,15 +86,11 @@ class EnhancedScanService: # 1️⃣ 优先使用本地 OUI 数据库(免网络、高性能) db = _get_oui_db() if db: - # 精确匹配 AA:BB:CC - vendor = db.get(oui) + # 数据库 key 是 AABBCC 格式(无冒号) + oui_key = oui.replace(':', '') + vendor = db.get(oui_key) if vendor: return vendor - # 去掉冒号的格式匹配 AABBCC - oui_no_colon = oui.replace(':', '') - for prefix, v in db.items(): - if prefix == oui_no_colon: - return v # 2️⃣ 回退:mac_vendor_lookup 在线库 if MAC_LOOKUP_AVAILABLE: