From 779707761fce37bbe47a3f6cb064627354420f28 Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Mon, 4 Aug 2025 13:25:17 +1000 Subject: [PATCH] heuristics refactor #1129 --- back/device_heuristics_rules.json | 200 ++++++++++++++ front/systeminfoNetwork.php | 2 +- server/initialise.py | 2 +- server/scan/device_heuristics.py | 422 ++++++++++++++---------------- 4 files changed, 394 insertions(+), 232 deletions(-) create mode 100755 back/device_heuristics_rules.json diff --git a/back/device_heuristics_rules.json b/back/device_heuristics_rules.json new file mode 100755 index 00000000..419c3da1 --- /dev/null +++ b/back/device_heuristics_rules.json @@ -0,0 +1,200 @@ +[ + { + "dev_type": "Gateway", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "INTERNET", "vendor": "" } + ], + "name_pattern": [] + }, + { + "dev_type": "Access Point", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "74ACB9", "vendor": "Ubiquiti" }, + { "mac_prefix": "002468", "vendor": "Cisco" }, + { "mac_prefix": "F4F5D8", "vendor": "TP-Link" }, + { "mac_prefix": "F88E85", "vendor": "Netgear" } + ], + "name_pattern": ["router", "gateway", "ap", "access point", "access-point", "switch"] + }, + { + "dev_type": "Phone", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "001A79", "vendor": "Apple" }, + { "mac_prefix": "B0BE83", "vendor": "Samsung" }, + { "mac_prefix": "BC926B", "vendor": "Motorola" } + ], + "name_pattern": ["iphone", "ipad", "pixel", "galaxy", "redmi"] + }, + { + "dev_type": "Phone", + "icon_html": "", + "matching_pattern": [ + ], + "name_pattern": ["android","samsung"] + }, + { + "dev_type": "Tablet", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "001B63", "vendor": "Apple" }, + { "mac_prefix": "BC4C4C", "vendor": "Samsung" } + ], + "name_pattern": ["tablet", "pad"] + }, + { + "dev_type": "IoT", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "B827EB", "vendor": "Raspberry Pi" }, + { "mac_prefix": "DCA632", "vendor": "Raspberry Pi" } + ], + "name_pattern": ["raspberry", "pi"] + }, + { + "dev_type": "IoT", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "840D8E", "vendor": "Espressif" }, + { "mac_prefix": "ECFABC", "vendor": "Espressif" }, + { "mac_prefix": "7C9EBD", "vendor": "Espressif" } + ], + "name_pattern": ["raspberry", "pi"] + }, + { + "dev_type": "Desktop", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "001422", "vendor": "Dell" }, + { "mac_prefix": "001874", "vendor": "Lenovo" }, + { "mac_prefix": "00E04C", "vendor": "Hewlett Packard" } + ], + "name_pattern": ["desktop", "pc", "computer"] + }, + { + "dev_type": "Laptop", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "3C0754", "vendor": "HP" }, + { "mac_prefix": "0017A4", "vendor": "Dell" }, + { "mac_prefix": "F4CE46", "vendor": "Lenovo" }, + { "mac_prefix": "409F38", "vendor": "Acer" } + ], + "name_pattern": ["macbook", "imac", "laptop", "notebook"] + }, + { + "dev_type": "Server", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "001CBF", "vendor": "Supermicro" }, + { "mac_prefix": "002186", "vendor": "Dell" }, + { "mac_prefix": "D02788", "vendor": "Hewlett Packard" }, + { "mac_prefix": "002590", "vendor": "IBM" } + ], + "name_pattern": ["server", "nas"] + }, + { + "dev_type": "VM", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "525400", "vendor": "QEMU" }, + { "mac_prefix": "005056", "vendor": "VMware" }, + { "mac_prefix": "000C29", "vendor": "VMware" }, + { "mac_prefix": "000569", "vendor": "VMware" }, + { "mac_prefix": "00163E", "vendor": "Xen" }, + { "mac_prefix": "080027", "vendor": "VirtualBox" } + ] + }, + { + "dev_type": "TV", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "0013CE", "vendor": "Samsung" }, + { "mac_prefix": "0017C8", "vendor": "LG" }, + { "mac_prefix": "D46E0E", "vendor": "Sony" } + ], + "name_pattern": ["tv", "television", "smarttv"] + }, + { + "dev_type": "Gaming Console", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "001FA7", "vendor": "Sony" }, + { "mac_prefix": "7C04D0", "vendor": "Nintendo" }, + { "mac_prefix": "EC26CA", "vendor": "Sony" } + ], + "name_pattern": ["playstation", "xbox"] + }, + { + "dev_type": "Camera", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "A45E60", "vendor": "Hikvision" }, + { "mac_prefix": "00408C", "vendor": "Axis" }, + { "mac_prefix": "00156D", "vendor": "Amcrest" }, + { "mac_prefix": "AC9E17", "vendor": "Reolink" } + ], + "name_pattern": ["camera", "cam", "webcam"] + }, + { + "dev_type": "Smart Speaker", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "44650D", "vendor": "Amazon" }, + { "mac_prefix": "74ACB9", "vendor": "Google" } + ], + "name_pattern": ["echo", "alexa", "dot"] + }, + { + "dev_type": "Router", + "icon_html": "", + "matching_pattern": [ + { "mac_prefix": "000C29", "vendor": "Cisco" }, + { "mac_prefix": "00155D", "vendor": "MikroTik" } + ], + "name_pattern": ["router", "gateway", "ap", "access point", "access-point"], + "ip_pattern": [ + "^192\\.168\\.[0-1]\\.1$", + "^10\\.0\\.0\\.1$" + ] + }, + { + "dev_type": "Smart Light", + "icon_html": "", + "matching_pattern": [], + "name_pattern": ["hue", "lifx", "bulb"] + }, + { + "dev_type": "Smart Home", + "icon_html": "", + "matching_pattern": [], + "name_pattern": ["google", "chromecast", "nest"] + }, + { + "dev_type": "Smartwatch", + "icon_html": "", + "matching_pattern": [], + "name_pattern": ["watch", "wear"] + }, + { + "dev_type": "Printer", + "icon_html": "", + "matching_pattern": [], + "name_pattern": ["printer", "print"] + }, + { + "dev_type": "Security Device", + "icon_html": "", + "matching_pattern": [], + "name_pattern": ["doorbell", "lock", "security"] + }, + { + "dev_type": "Smart Light", + "icon_html": "", + "matching_pattern": [ + ], + "name_pattern": ["light","bulb"] + } +] diff --git a/front/systeminfoNetwork.php b/front/systeminfoNetwork.php index c38b8384..373e9818 100755 --- a/front/systeminfoNetwork.php +++ b/front/systeminfoNetwork.php @@ -169,7 +169,7 @@ echo '
?> - +