Unifi Geräte im Netzwerk ausfindig machen mit Python

In diesem Blogbeitrag werden wir ein Python-Skript vorstellen, das UniFi-Netzwerkgeräte in Ihrem lokalen Netzwerk findet.

Das Skript verwendet die Scapy-Bibliothek, um ARP-Anfragen im Netzwerk zu senden und die Antworten der Geräte zu analysieren. Scapy ist eine leistungsstarke Python-Bibliothek, die zum Erstellen, Manipulieren und Analysieren von Netzwerkpaketen verwendet wird.

pip install scapy

Das Script

import re
from scapy.all import ARP, Ether, srp

def find_unifi_devices(ip_range):
    # Send ARP requests to the specified IP range
    arp = ARP(pdst=ip_range)
    ether = Ether(dst="ff:ff:ff:ff:ff:ff")
    packet = ether / arp

    # Send the packets and capture the responses
    result = srp(packet, timeout=2, verbose=0)[0]

    # Process the responses
    unifi_devices = []
    for sent, received in result:
        mac_address = received.hwsrc
        ip_address = received.psrc

        # Check if the MAC address belongs to a UniFi device
        if is_unifi_mac(mac_address):
            unifi_device = {"ip": ip_address, "mac": mac_address}
            unifi_devices.append(unifi_device)

    return unifi_devices

def is_unifi_mac(mac):
    # UniFi MAC address prefixes
    unifi_mac_prefixes = [
        "04:18:d6", "44:d9:e7", "b4:fb:e4", "78:8a:20", "80:2a:a8", "e0:63:da", "f0:9f:c2"
    ]
    for prefix in unifi_mac_prefixes:
        if mac.lower().startswith(prefix):
            return True
    return False

if __name__ == "__main__":
    ip_range = "192.168.1.0/24"  # Adjust this to your network IP range
    unifi_devices = find_unifi_devices(ip_range)

    if unifi_devices:
        print("UniFi-Geräte gefunden:")
        for device in unifi_devices:
            print(f"IP: {device['ip']}, MAC: {device['mac']}")
    else:
        print("Keine UniFi-Geräte gefunden.")

Das Skript besteht aus zwei Hauptfunktionen: find_unifi_devices() und is_unifi_mac().

Funktion find_unifi_devices()
Die Funktion find_unifi_devices() nimmt einen IP-Bereich als Argument und sendet ARP-Anfragen an alle Geräte in diesem Bereich. Dies geschieht durch Erstellen eines ARP-Pakets und Kombinieren mit einem Ether-Paket, das an die Broadcast-Adresse gesendet wird (ff:ff:ff:ff:ff:ff). Das Paket wird dann mit Hilfe der srp()-Funktion aus der Scapy-Bibliothek gesendet.

Die Antworten werden in der result-Variable gesammelt, und das Skript analysiert sie, um herauszufinden, ob ein Gerät ein UniFi-Gerät ist oder nicht. Dies geschieht durch Überprüfung der MAC-Adresse des Geräts in der Funktion is_unifi_mac().

Funktion is_unifi_mac()
Die Funktion is_unifi_mac() nimmt eine MAC-Adresse als Argument und prüft, ob sie zu einem UniFi-Gerät gehört oder nicht. Dies geschieht durch Überprüfung, ob die MAC-Adresse mit einem der bekannten UniFi-MAC-Adresspräfixe beginnt.

Wenn die MAC-Adresse eines Geräts mit einem der UniFi-Präfixe übereinstimmt, wird es als UniFi-Gerät betrachtet und zu einer Liste von gefundenen UniFi-Geräten hinzugefügt.

Verwendung des Skripts

Um das Skript zu verwenden, passe einfach die Variable ip_range an den IP-Bereich Ihres Netzwerks an und führen Sie das Skript aus. Das Skript gibt die IP- und MAC-Adressen der gefundenen UniFi-Geräte aus.

Beachten Sie, dass dieses Skript möglicherweise nicht alle UniFi-Geräte findet, da es auf den bekannten MAC-Adresspräfixen basiert und manchmal Geräte übersehen werden können.

🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.