ESP32 ile Wi-Fi Paket Analizörü (Sniffer) ve Siber Trafik İzleme

👤 Yazar: ozcan 📅 Tarih: 05.06.2026 15:26 👁️ Görüntüleme: 28

ESP32 ile Wi-Fi Paket Analizörü (Sniffer) ve Siber Trafik İzleme

Wi-Fi ağları havada sürekli olarak veri paketleri uçurur. Normal şartlarda bir kablosuz ağ kartı, sadece kendisine yönlendirilmiş paketleri işler ve diğer tüm trafiği çöpe atar. Bu projede, ESP32 donanımının en dip katmanındaki "Promiscuous Mode" (Rastgele Paket Yakalama) özelliğini aktif ederek, havada uçuşan tüm verileri (modem yayınları, cihaz arama sinyalleri, veri paketleri) nasıl havada yakalayabileceğimizi ve ağ yoğunluğunu nasıl analiz edeceğimizi inceliyoruz.

SİBER GÜVENLİK NOTU: Bu proje tamamen yerel ağ frekans yoğunluğunu test etmek ve siber trafiği izlemek amacıyla geliştirilmiştir. Havada uçuşan paketlerin yönetim ve veri yoğunluğunu (Beacon, Probe Request, Data) donanım seviyesinde raporlamaktadır.

Projenin Analiz Ettiği Paket Türleri

Nasıl Çalışır? (Channel Hopping)

2.4GHz Wi-Fi bandında 1 ile 13 arasında farklı frekans kanalları bulunur. Yazdığımız kod, her 3 saniyede bir kanalı otomatik olarak değiştirir (Kanal Gezintisi). Böylece ESP32, sabit bir kanalda kalmak yerine etraftaki tüm modemlerin ve cihazların yayın yaptığı farklı frekans dalgalarını sırayla dinleyerek tam zamanlı bir tarama raporu oluşturur.

Kaynak Kodu

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_wifi.h"
#include "esp_wifi_types.h"
#include "esp_system.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include <Arduino.h>

unsigned long toplamPaket = 0;
unsigned long beaconPaket = 0;
unsigned long dataPaket = 0;
unsigned long probePaket = 0;

void snifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) {
  toplamPaket++;
  
  wifi_promiscuous_pkt_t* pkt = (wifi_promiscuous_pkt_t*)buf;
  int rssi = pkt->rx_ctrl.rssi; 

  if (type == WIFI_PKT_MGMT) {
    uint8_t altTip = (pkt->payload[0] >> 2) & 0x0F;
    
    if (altTip == 0x08) { 
      beaconPaket++;
    } 
    else if (altTip == 0x04) { 
      probePaket++;
    }
  } 
  else if (type == WIFI_PKT_DATA) {
    dataPaket++;
  }
}

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("\n=== Wi-Fi Paket Analizoru Baslatiliyor ===");

  esp_err_t ret = nvs_flash_init();
  if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
    ESP_ERROR_CHECK(nvs_flash_erase());
    ret = nvs_flash_init();
  }
  ESP_ERROR_CHECK(ret);

  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  ESP_ERROR_CHECK(esp_wifi_init(&cfg));
  
  ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
  ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL)); 
  ESP_ERROR_CHECK(esp_wifi_start());

  wifi_promiscuous_filter_t filtre;
  filtre.filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT | WIFI_PROMIS_FILTER_MASK_DATA;
  ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filtre));
  
  ESP_ERROR_CHECK(esp_wifi_set_promiscuous_rx_cb(&snifferCallback));
  ESP_ERROR_CHECK(esp_wifi_set_promiscuous(true));

  ESP_ERROR_CHECK(esp_wifi_set_channel(1, WIFI_SECOND_CHAN_NONE));
  Serial.println("Sniffer Aktif! Havada ucusan paketler yakalaniyor...\n");
}

void loop() {
  static unsigned long sonRaporZamani = 0;
  static uint8_t mevcutKanal = 1;

  if (millis() - sonRaporZamani >= 3000) {
    sonRaporZamani = millis();

    Serial.println("---------------------------------------------");
    Serial.print("[KANAL "); Serial.print(mevcutKanal); Serial.println(" RAPORU]");
    Serial.print("Yakalalan Toplam Paket : "); Serial.println(toplamPaket);
    Serial.print("Modem Sinyalleri (Beacon): "); Serial.println(beaconPaket);
    Serial.print("Cihaz Arama (Probe Req) : "); Serial.println(probePaket);
    Serial.print("Saf Veri Trafigi (Data) : "); Serial.println(dataPaket);
    
    toplamPaket = 0; beaconPaket = 0; dataPaket = 0; probePaket = 0;

    mevcutKanal++;
    if (mevcutKanal > 13) mevcutKanal = 1;
    
    esp_wifi_set_channel(mevcutKanal, WIFI_SECOND_CHAN_NONE);
  }
}
    

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1