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.
Schreibe einen Kommentar