z4y5f3
z4y5f3

Reputation: 11

How to sniff Wi-Fi AP name and associated devices

I am recently working on a traffic monitoring projet based on counting how many wi-fi devices are present. I want to get a list of available AP SSIDs and all the client devices that are connected to that AP. Basically, I want to get a list of information like follows:

Network-Name    BSSID    RSSI
    Client-Mac1 RSSI
    Client-Mac2 RSSI
    Client-Mac3 RSSI
Orphan Clients:
    Client-Mac4 RSSI

I hope this can be done by using a raspberry pi with Wi-Fi adapter using python. If that is not possible, I have an ESP 8266 and can link it to a Linux machine/Arduino.

Please post your ideas about how this could be implemented with what type of platform/library. It would be the best if you can include some code samples!

Upvotes: 1

Views: 489

Answers (1)

bluevoid
bluevoid

Reputation: 1359

Copied from esp8266 examples - ESP8266Wifi - WifiScan: Then you can send it using serial connection to your main process

    /*
 *  This sketch demonstrates how to scan WiFi networks. 
 *  The API is almost the same as with the WiFi Shield library, 
 *  the most obvious difference being the different file you need to include:
 */
#include "ESP8266WiFi.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");
    for (int i = 0; i < n; ++i)
    {
      // Print SSID and RSSI for each network found
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");
      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
      delay(10);
    }
  }
  Serial.println("");

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

Upvotes: 1

Related Questions