پیاده سازی مک فیلتر در esp8266

ا سلام من می خوام برای یک پروژه ، زمانی که esp8266 در حالت AP پیکربندی شده ، با بررسی آدرس مک کلاینتهایی که یم خواند به esp وصل بشند، اجازه دسترسی یا عدم دسترسی رو صادر کنم و بعضی از کلاینت ها رو ریجکت کنم.
در بررسیهایی که انجام دادم به چند نکته رسیدم :
1- زمانی که تنظیمات ap رو با دستور WiFi.softap انجام میدیم ، یکی از آرگومانهای این متد تنظیم حداکثر تعداد کانکشن مجاز هست.مثلا اگر من این عدد رو روی 1 تنظیم کنم و در حال حال حاضر یک کلاینت بهش متصل باشه،کلاینت دوم به محض تلاش برای اتصال فورا ریجکت میشه. و متاسفانه هر چه تلاش کردم که تابعی که در بک اند داره این کار رو انجام میده ، پیدا کنم نتونستم و فقط میرسیدم جایی که توابع تعریف میشدند و بدنه تابع رو نتونستم پیدا کنم. از این نکته فهمیدم که esp8266 توان ریجکت کلاینت رو داره
2- در بررسیهام توی نت به یک کد رسیدم که داره یک بسته داده میفرسته اما وقتی با نرم افزار wireshark چک کردم همچین پکیج داده ای ارسال نمیشه که فکر می کنم دو حالت محتمل هست و اون هم اینه که یا پکیج ارسال نمیشه یا اینکه من نتونستم پکیج رو خوب ردیابی کنم و اون کد رو در انتهای کدش رو می نویستم
3- یک پروژه دیدم که اساسا کارش قطع اتصال کلاینت از سرورشون هست و یه جور ابزار هک هست و اون هم داره تو یه قسمتهاییش پکیجی رو با دستور
wifi_send_pkt_freedom(deauthPacket, packSize, 0); ارسال می کنه اما چون لوازم تست پروژه رو نداشتم نتونستم تست کنم و در هر چی هم تلاش کردم که بفهمم این پکیج داده چه مقادیری رو داره ، نتونستم که لینکش : Download | ESP8266 Deauther.
ممنون میشم اگر کسی بهم کمک کنه خیلی ضروری هست برام
با تشکر


void deauthStation(const uint8_t* mac) {
 const uint8_t packSize = 26;  // اندازه بسته Deauthentication
 uint8_t deauthPacket[packSize];  // تعریف آرایه برای بسته Deauthentication

 deauthPacket[0] = 0xc0;  // تنظیم فریم کنترل
 deauthPacket[1] = 0x00;  // تنظیم مدت زمان
 deauthPacket[2] = 0x3a;  // تنظیم شماره توالی
 deauthPacket[3] = 0x01;  // تنظیم شماره توالی

 memcpy(&deauthPacket[4], mac, 6);  // کپی کردن آدرس MAC مقصد (کلاینت) در بسته
 memcpy(&deauthPacket[10], WiFi.softAPmacAddress(), 6);  // کپی کردن آدرس MAC منبع (AP) در بسته
 memcpy(&deauthPacket[16], WiFi.softAPmacAddress(), 6);  // کپی کردن BSSID (AP) در بسته

 deauthPacket[22] = 0x07;  // تنظیم کد دلیل (کلاس 3، فریم دریافت شده از STA غیرمتصل)
 deauthPacket[23] = 0x00;  // تنظیم کد دلیل (ادامه)

 deauthPacket[24] = 0x00;  // تنظیم شماره توالی
 deauthPacket[25] = 0x00;  // تنظیم شماره قطعه

 // ارسال بسته Deauthentication برای قطع اتصال کلاینت
 wifi_send_pkt_freedom(deauthPacket, packSize, 0);
}

در قسمت کد دلیل من کد 1 و 5 رو هم تست کردم که باز جواب نداد.

سلام دوست عزیز،
دلیل اینکه به سورس کد لایه های پایین تر شبکه و وای فای ESP8266 دسترسی ندارید این هست که open source نیستند و شما فقط میتونید از فانکشن های تعریف شده در هدرفایل ها استفاده کنید.

فیلترینگ مک ها روی webserver به رو بهتون پییشنهاد نمیکنم چون شما ریسوری های حافطه محدودی دارید ! و اگر نگرانی از بابت متدهای امنیتی دارید، پیشنهاد میکنم از مکانیسیم HTTP request استفاده کنید.

همچنین، با استفاده از فانکشن های زیر میتونید مک های متصل شده به AP تون رو ببینید، اما اینکه چطور بتونید ریجکتشون کنید رو در پلتفرم اردوینو نمیدونم :

wifi_softap_get_station_num()
wifi_softap_get_station_info()

سلام.چیزی که شما میخواهید شدنی و خیلی راحته:

#include <WiFi.h>
 
void WiFiStationConnected(WiFiEvent_t event, WiFiEventInfo_t info){
   
  Serial.println("Station connected");
   
  for(int i = 0; i< 6; i++){
     
    Serial.printf("%02X", info.sta_connected.mac[i]);  
    if(i<5)Serial.print(":");
  }
 
  Serial.println();
}
2 پسندیده