Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Preferred-Network-List-Sniffer — Ein Reconnaissance-Tool zum Erfassen und Anzeigen von SSIDs aus der Liste der bevorzugten Netzwerke eines Geräts. | Kitploit
Tools/GitHubGitHub/aleksamcode/preferred-network-list-sniffer
Paket-Sniffing & AnalyseAufklärungWi-Fi-PrüfungInformationsbeschaffungDrahtlose SicherheitRed Teaming
GitHubaleksamcode/preferred-network-list-sniffer

Preferred-Network-List-Sniffer

Ein Reconnaissance-Tool zum Erfassen und Anzeigen von SSIDs aus der Liste der bevorzugten Netzwerke eines Geräts.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
1759vor 7 MonatenVon Kitploit geprüft

Sniffer für bevorzugte Netzwerklisten - PNLS

License: MIT

Sniffer für bevorzugte Netzwerklisten (PNLS) ist ein Red-Team-Wi-Fi-Auditing-Tool mit einer einfachen Web-Oberfläche, das in der Lage ist, SSIDs1 aus der bevorzugten Netzwerkliste (PNL)2 des Geräts abzufangen. Dies wird erreicht, indem Probe Requests in der nahen Umgebung gesnifft werden, die dann nach SSID und anderen Informationen durchsucht und schließlich an die Web-UI weitergegeben werden. Die Hauptmotivation für dieses Projekt war die Untersuchung von 802.11-Probe-Requests und der Datenschutzrisiken, die mit den von ihnen übertragenen Daten verbunden sind.

PNLS system overview

Abb. 1: PNLS-Systemüberblick

[!WARNING] Alle Inhalte dieses Projekts dienen ausschließlich Sicherheitsforschungszwecken.

[!NOTE]

  • Dieses Projekt ist Teil meiner laufenden Forschung zu Datenschutz in Wi-Fi-Netzwerken.

    • Präsentation zum Arbeitsumfang
  • Um die laufenden Arbeiten am PNLS zu verfolgen, siehe das Projekt-Board.

Inhaltsverzeichnis

  • Sniffer für bevorzugte Netzwerklisten - PNLS
    • Inhaltsverzeichnis
    • So bauen Sie den PNLS
      • Anforderungen
      • Voraussetzungen
    • Einrichtung
      • Mit Docker
      • Mit vorgebautem Docker-Image
      • Ohne Docker
    • Probe Requests
    • SSID-Filterung
    • Architektur
      • Warum Asynchronous Server Gateway Interface?
      • Warum WebSockets?
      • Pub-Sub-Modell
    • Screenshots
    • Akronyme
    • Referenzen

So bauen Sie den PNLS

Hier ist, was Sie benötigen, um dieses Projekt zu duplizieren und bereitzustellen, einschließlich der Hardware- und Softwarekomponenten. Sobald Ihre Arbeitsumgebung bereit ist, gehen Sie zu den Einrichtungsabschnitten.

Anforderungen

  • Raspberry Pi (RPi)
  • Geeignetes RPi-Netzteil (siehe die Dokumentation zum Netzteil für Details)
  • Micro-SD-Karte (siehe die SD-Karten-Dokumentation für Details)
  • USB-Wi-Fi-Adapter (optional)
    • Wird verwendet, um eine größere Reichweite beim Erfassen von Paketen zu erreichen.
  • HDMI-Kabel (optional)
    • Wird verwendet, um die Web-UI vom RPi aus anzuzeigen, anstatt sich remote von Ihrem Computer aus zu verbinden.

Voraussetzungen

  • Kali Linux OS
    • Erforderlich, um den Überwachungsmodus und das Tool aircrack-ng zu nutzen. Sie können das Kali Linux ARM-Image von hier herunterladen.
      • Alternativ könnten Sie ein anderes Betriebssystem verwenden, müssen dann aber den Kernel mit nexmon3 patchen4 oder einen WLAN-Adapter verwenden, der den Überwachungsmodus unterstützt. Hier ist ein Link zu unterstützten USB-Adaptern für Raspberry Pi.
      • Sie müssen auch das Tool aircrack-ng installieren, da es nur auf Kali Linux vorinstalliert ist.
  • Starten Sie Ihre Netzwerkschnittstelle im Überwachungsmodus mit: sudo airmon-ng start wlan0 [2].

[!NOTE]

Das Kali-Image verwendet den Kernel von Re4son, der die Treiber für externe Wi-Fi-Karten und die Nexmon-Firmware für die eingebaute WLAN-Karte auf dem RPi 3 und 4 enthält [3].

PNLS RPi 4 device

Abb. 2: PNLS läuft auf einem RPi 4 mit einer externen Antenne und einer Powerbank

PNLS RPi 4 device AWUS036ACS

Abb. 3: PNLS läuft auf einem RPi 4 mit einem Gehäuse und einer AWUS036ACS-Antenne

PNLS RPi 4 device AWUS036ACM

Abb. 4: PNLS läuft auf einem RPi 4 mit einer AWUS036ACM-Antenne

Einrichtung

Wenn Sie Docker nicht verwenden möchten, gehen Sie zu Einrichtung ohne Docker.

Mit Docker

Schnell eine Entwicklungsumgebung einrichten:

root@kitploit:~
# First clone this repo.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Move to the project root folder.
cd Preferred-Network-List-Sniffer
# Build backend and frontend image.
docker compose build
# Bring up both the backend and the frontend server.
docker compose up
# Move into the sniffer folder.
cd sniffer
# Run the Sniffer service.
sudo python3 sniffer.py

Mit vorgebautem Docker-Image

Derzeit sind keine Multi-Plattform-Images verfügbar, und das Projekt unterstützt nur die ARM64v8-Architektur. Laden Sie die neuesten vorgebauten Images aus der GitHub Container Registry herunter und führen Sie sie lokal aus.

root@kitploit:~
# First clone this repo.
git clone https://github.com/AleksaMCode/Preferred-Network-List-Sniffer.git
# Move to the project root folder.
cd Preferred-Network-List-Sniffer
# Download the prebuild images.
docker pull ghcr.io/aleksamcode/pnls-backend-ghcr:latest
docker pull ghcr.io/aleksamcode/pnls-frontend-ghcr:latest
# Bring up both the backend and the frontend server.
docker compose up
# Move into the sniffer folder.
cd sniffer
# Run the Sniffer service.
sudo python3 sniffer.py

Ohne Docker

  • Backend: Um den ASGI- und Redis-Server zu starten und die benötigten Dienste auszuführen, siehe diese Anleitung.

  • Frontend: Um den React-Server auszuführen, siehe diese Anleitung.

Hier ist ein Screenshot, als alles "manuell" ausgeführt wurde:

  • Oben links: Redis-Server
  • Oben rechts: ASGI-Server
  • Unten links: Sniffer-Dienst
  • Unten rechts: React-Server

PNLS Kali screenshot

Abb. 5: PNLS-Screenshot

Probe Requests

Probe Requests sind Management-802.11-Frames, die verwendet werden, um Geräte mit zuvor assoziierten drahtlosen Access Points (AP) zu verbinden. Wenn ein Gerät Wi-Fi aktiviert, aber nicht mit einem Netzwerk verbunden ist, sendet es periodisch einen Burst von Probe Requests, die SSIDs aus seiner PNL enthalten. Diese Frames werden unverschlüsselt gesendet, und jeder, der Funkfrequenz (RF) überwacht, kann sie erfassen und lesen. Probes werden an die Broadcast-DA-Adresse (ff:ff:ff:ff:ff:ff) gesendet. Nach dem Senden startet das Gerät den Probe Timer. Am Ende des Timers verarbeitet das Gerät die empfangene Antwort. Wenn das Gerät keine Antwort erhalten hat, wechselt es zum nächsten Kanal und wiederholt den Vorgang. Es gibt zwei Arten von Probe Requests:

  • Gezielte Probe Requests: Verwendung einer bestimmten SSID aus der PNL des Geräts

  • Null Probe Requests: Verwendung der Wildcard-SSID (leere SSID)

    • Leere Requests werden gesendet, um eine Antwort von allen verfügbaren APs in Reichweite zu erhalten.

    • Zusätzlich zum Filtern von 802.11-Probe-Request-Frames aus allen erfassten Paketen filtert Sniffer auch die Wildcard-SSIDs heraus.

SSID-Filterung

Beim Erfassen von Probe Requests an Orten mit einem großen lokalen Netzwerk und vielen Wi-Fi-Clients wird PNLS unweigerlich viele Probe Requests erfassen, die die SSID dieses Netzwerks enthalten. Das Filtern solcher SSIDs kann vorteilhaft sein, da sie für uns wertlos sind und eine Erhöhung der Socket-Last verursachen können. Das Herausfiltern dieser SSIDs reduziert nicht nur die Last auf Socket-Verbindungen, sondern verhindert auch das Spammen der genannten SSIDs in der Web-UI.

Wenn Sie diese Funktion nutzen, müssen Sie geringfügige Anpassungen am Quellcode vornehmen. Genauer gesagt müssen Sie die Liste SSID_FILTER in der Datei settings.py mit dem Wert aktualisieren, den der Sniffer ignorieren soll. Nach der Aktualisierung bauen Sie das Projekt neu und starten den PNLS.

Architektur

Dieses Projekt verwendet eine ereignisgesteuerte Architektur (Event-Driven Architecture, EDA), die auf Basis nachrichtengesteuerter Architekturen aufgebaut ist. Obwohl dieses Projekt eine zentralisierte Lösung verwendet (alles wird vom RPi ausgeführt), ist es aufgrund der lose gekoppelten Komponenten durch die Verwendung von EDA möglich, bei Bedarf eine dezentrale Lösung zu erstellen. PNLS besteht aus einem Ereignis-Herausgeber (Sniffer), einem Ereignis-Verbraucher (Webanwendung) und einem Ereignis-Kanal. Hier wird der Ereignis-Kanal als nachrichtenorientierte Middleware (Message-Oriented Middleware, MOM) implementiert.

PNLS system deployment diagram

Abb. 6: PNLS-Systembereitstellungsdiagramm

Warum Asynchronous Server Gateway Interface?

Das Asynchronous Server Gateway Interface (ASGI) bietet eine standardisierte Schnittstelle zwischen asynchron-fähigen Python-Webservern und -Diensten [4]. Das ASGI wurde gewählt, da das Projekt eine langlebige WebSocket-Verbindung benötigt, um asynchrone Kommunikation zwischen verschiedenen Clients zu ermöglichen. Darüber hinaus erlaubt es die Nutzung von Hintergrund-Coroutinen während API-Aufrufen. Der PNLS verwendet die uvicorn-Implementierung für Python, um den ASGI-Webserver zu nutzen.

Warum WebSockets?

Durch die Nutzung des WebSocket-Kommunikationsprotokolls können wir eine Vollduplex-Zweiwegkommunikation ermöglichen. Obwohl dieses Projekt keine Zweiwegkommunikation benötigt, besteht ein Bedarf an Echtzeit-Interaktion zwischen den Systemkomponenten. Auf diese Weise stehen die gesnifften Daten dem Endbenutzer sofort nach der Erfassung zur Verfügung.

Pub-Sub-Modell

Die MOM des Projekts wird durch den Message Broker mittels Redis realisiert. Im Publish-Subscribe-Modell (Pub-Sub) ist der Sniffer für die Erzeugung von Nachrichten verantwortlich, während die Webanwendung (Abonnent) sich für das spezifische Thema (Redis-Kanal) registriert. Wenn der Sniffer eine Nachricht an ein Thema sendet, wird sie an alle abonnierten Verbraucher verteilt, was eine asynchrone und skalierbare Kommunikation ermöglicht. PNLS verwendet das leichte Messaging-Protokoll Redis Pub/Sub für die Nachrichtenverteilung, um kurzlebige Nachrichten mit geringer Latenz und hohem Durchsatz zu verbreiten [5][6]. Auf diese Weise wurde der Overhead vermieden, der mit der Codierung von Datenstrukturen in eine Form verbunden ist, die auf eine Festplatte geschrieben werden kann. Dadurch hat diese Lösung potenziell eine bessere Leistung [7]. Die folgende Abbildung zeigt die vereinfachte Systemaktivität durch den ereignisgesteuerten Workflow.

pub-sub sequence diagram

Abb. 7: Sequenzdiagramm des PNLS Pub-Sub-Modells

[!NOTE] Die implementierte MOM bietet keine dauerhafte Speicherung oder eine Nachrichtenwarteschlange für die Datenakkumulation, was bedeutet, dass Nachrichten verloren gehen, wenn sie ohne Abonnenten an ein Thema veröffentlicht werden.

Screenshots

Nachfolgend ein Beispiel einer Web-UI, die veröffentlichte Test-SSIDs anzeigt.

PNLS web - example with test SSIDs

Abb. 8: PNLS-Web – Beispiel mit Test-SSIDs

Akronyme

Referenzen

  1. Nexmon Git-Repository
  2. Aircrack-ng-Dokumentation
  3. Kali On ARM-Dokumentation
  4. ASGI-Dokumentation
  5. Niedriglatenz-Message-Queue- und Broker-Software
  6. Redis – Pub/Sub definiert
  7. Stephen M. Rumble, Ankita Kejriwal, and John K. Ousterhout, “Log-Structured Memory for DRAM-Based Storage,” at 12th USENIX Conference on File and Storage Technologies (FAST)
  8. Monitor Mode & Packet Injection auf dem Raspberry Pi aktivieren

Footnotes

  1. Ein Service Set Identifier (SSID) ist eine 802.11-Kennung, die zur Benennung eines Wi-Fi-Netzwerks verwendet wird; sie besteht aus maximal 32 Zeichen, die Groß- und Kleinschreibung, Zahlen und Sonderzeichen enthalten können, und ist nicht länger als 32 Zeichen. ↩

  2. Eine bevorzugte Netzwerkliste (Preferred Network List) ist eine Sammlung gespeicherter SSIDs mit zusätzlichen Einstellungen, die Sie beim ersten Verbinden Ihres Geräts mit diesen Netzwerken erstellt haben. ↩

  3. Das C-basierte Firmware-Patching-Framework für Broadcom/Cypress-Wi-Fi-Chips, das den Überwachungsmodus, Frame-Injection und vieles mehr ermöglicht. ↩

  4. Broadcom hat den Überwachungsmodus nie offiziell unterstützt, was den Nutzen der WLAN-Karten in Raspberry Pi-Geräten einschränkte [8]. Das Nexmon-Projekt ist ein Firmware-Patch für die in RPi-Geräten verwendeten Broadcom-Chips [1]. Dieser Patch erlaubt die Nutzung des Überwachungsmodus auf Ihrem RPi-Gerät. ↩

Tool herunterladen
PNLBevorzugte Netzwerkliste
PNLSSniffer für bevorzugte Netzwerklisten
SSIDService Set Identifier
UIBenutzeroberfläche
RPiRaspberry Pi
OSBetriebssystem
APAccess Points
RFFunkfrequenz
EDAEreignisgesteuerte Architektur
MOMNachrichtenorientierte Middleware
ASGIAsynchronous Server Gateway Interface
pub-subPublish-Subscribe