WiFi-Mac-Adresse (WiFi-Sniffer) mit ESP32

Im folgenden habe ich das Beispiel aus der "Wemos Lolin32 Lite Bib" so erweitert, dass es auch die MAC-Adressen zu den gefunden Netzwerken findet.
Ich benutze es um einen WiFi-sniffler zu bauen.

/*
 *  This sketch demonstrates how to scan WiFi networks.
 *  The API is based on the Arduino WiFi Shield library, but has significant changes as newer WiFi functions are supported.
 *  E.g. the return value of `encryptionType()` different because more modern encryption is supported.
 */
#include "WiFi.h"
void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected.
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    Serial.println("Setup done");
}

void loop()
{

    Serial.println("Scan start");
    
    // WiFi.scanNetworks will return the number of networks found.
    int n = WiFi.scanNetworks();
    Serial.println("Scan done");


    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        Serial.println("Nr | SSID                             | RSSI | CH |        MAC        | Encryption");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.printf("%2d",i + 1);
            Serial.print(" | ");
            Serial.printf("%-32.32s", WiFi.SSID(i).c_str());
            Serial.print(" | ");
            Serial.printf("%4d", WiFi.RSSI(i));
            Serial.print(" | ");
            Serial.printf("%2d", WiFi.channel(i));
            Serial.print(" | ");

            //MAC adress sniffing
            //BSSID returns a pointer to the memory location where the BSSID is saved (uint8_t arry)
            //This means that the next memory locations contain the next "packets" of the MAC address 
            Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X", *WiFi.BSSID(i),*(WiFi.BSSID(i)+1),*(WiFi.BSSID(i)+2),*(WiFi.BSSID(i)+3),*(WiFi.BSSID(i)+4),*(WiFi.BSSID(i)+5));

            Serial.print(" | ");
            switch (WiFi.encryptionType(i))
            {
            case WIFI_AUTH_OPEN:
                Serial.print("open");
                break;
            case WIFI_AUTH_WEP:
                Serial.print("WEP");
                break;
            case WIFI_AUTH_WPA_PSK:
                Serial.print("WPA");
                break;
            case WIFI_AUTH_WPA2_PSK:
                Serial.print("WPA2");
                break;
            case WIFI_AUTH_WPA_WPA2_PSK:
                Serial.print("WPA+WPA2");
                break;
            case WIFI_AUTH_WPA2_ENTERPRISE:
                Serial.print("WPA2-EAP");
                break;
            case WIFI_AUTH_WPA3_PSK:
                Serial.print("WPA3");
                break;
            case WIFI_AUTH_WPA2_WPA3_PSK:
                Serial.print("WPA2+WPA3");
                break;
            case WIFI_AUTH_WAPI_PSK:
                Serial.print("WAPI");
                break;
            default:
                Serial.print("unknown");
            }
            Serial.println();
            delay(10);
        }
    }
    Serial.println("");

    // Delete the scan result to free memory for code below.
    WiFi.scanDelete();

    // Wait a bit before scanning again.
    delay(10000);
}

Schön und was ist Deine Frage?

Gruß Tommy

Hi Tommy,

ich hatte hier auf der Plattform nur nach der Lösung gesucht und fand nur viele Themen, wo andere das gleiche Problem hatten. Nach Stunden langem ausprobieren habe ich es geschafft und wollte den anderen auch helfen, aber die Themen waren schon geschlossen.
Ich bin neu auf dieser Plattform und wusste nicht, wie ich dann die Lösung unter einem geschlossenen Thema posten konnte.
Ich hoffe, so war es einigermaßen in Ordnung.

Gruß Kevin

1 Like

Wie du siehst geht man hier überwiegend davon aus, das Leute eine Frage posten. Aber man kann natürlich auch etwas posten zum herzeigen. Einfach beim nächsten mal ein deutchliches "ich zeig euch einen Sketch wie ich das Problem XY gelöst habe und das macht jetzt..." schreiben und dann ist klar, dass es nur ein Demo Sketch ist und keine Frage.

Alte Threads könnte man über die Moderation aufmachen lassen (mit der Flagge reporten und hinschreiben warum man glaubt dass es wichtig wäre...)

1 Like

Kann ich gut gebrauchen Kevin! Auf meinen PV Wechselrichtern kann ich nämlich keine Mac finden...

Danke für's Posten!:+1:

1 Like

Mit Wifinina und Nano RP2040 funktioniert der Code leider nicht.

Ist doch klar must für RP2040 anpassen, vermutlich hier

#include "WiFi.h"
void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected.
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);
    Serial.println("Setup done");
}

Ist doch für ESP8266 :slight_smile:

Mall in die Wifinina reinschauen die Funktionen sind bestimmt da, wo möglich unter anderer Bezeichnung, Nahmen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.