ESP32 پر وائی فائی کے ساتھ گیمنگ

ESP32 پر وائی فائی کے ساتھ گیمنگ

مجھے وائی فائی نیٹ ورکس کا تجزیہ کرنے کے لیے ایک جیبی ٹول بنانے کا خیال کس چیز نے دیا۔ اس مضمون.

خیال کے لیے ان کا شکریہ۔ میرے پاس بس کچھ نہیں تھا۔

تمام کام ایک مشغلے کے حصے کے طور پر کیا گیا تھا جس کا مقصد تفریح ​​​​کرنا اور نیٹ ورک ٹیکنالوجیز کے شعبے میں اپنے علم کو بڑھانا ہے۔ آہستہ آہستہ، ہفتے میں 1..4 گھنٹے، اس سال کے آغاز سے۔
میں نے کسی عملی استعمال کی منصوبہ بندی نہیں کی۔ وہ. یہ ہیکر کا ٹول نہیں ہے۔

اس وقت، تمام منصوبہ بند فعالیت کام کر رہی ہے۔ تمام ذرائع، اسمبلی کے لیے مکمل طور پر تیار، یہاں پوسٹ کیا. اسمبلی ہدایات وغیرہ بھی ہیں۔ اس نوٹ میں، میں گیتھب پر پوسٹ کی گئی معلومات کو نقل نہیں کروں گا۔ میں صرف وہی بتاؤں گا جسے میں الگ سے بیان کرنا ضروری سمجھتا ہوں۔

"یونیورسل ٹول" پر میری رائے اور ESP32 کو منتخب کرنے کی وجہ

میں سچ ہونے کا دعویٰ نہیں کرتا۔ ہر ایک کا اپنا ہے۔ میں ہارڈ ویئر کے اپنے انتخاب کو درست ثابت کرنے کی کوشش کروں گا۔

مضمون میں تجویز کیا گیا ہے۔ کنٹرولر (STM32) + CC1110 (8051 کور) کی شکل میں لینکس (ابتدائی طور پر Raspberry Pi) + "پیری فیرلز" کے امتزاج کا استعمال اور وہاں ہر ممکن چیز کو کچلنے کا منصوبہ (125kHz, NFC, 433mHz, USB, iButton, bluetooth, ?) میرے لیے مناسب نہیں لگتا تھا۔ البتہ، یہ منصوبہ ایسا لگتا ہے کہ یہ نجی اور بند رہے گا (flipper-zero github "اس تنظیم کا کوئی عوامی ذخیرہ نہیں ہے۔") اور بہت عام ہارڈ ویئر کی طرف چلا گیا۔

شاید میں غلط ہوں، اور مستقبل میں مصنفین سافٹ ویئر کے ذرائع کو عوامی طور پر دستیاب کرائیں گے۔ لیکن اگر نہیں، تو میں سورس کوڈ کے بغیر ہارڈ ویئر کا ایسا ٹکڑا نہیں خریدوں گا۔

"ٹول" کے لیے میری ضروریات

باکس چھوٹا ہونا چاہئے (جتنا چھوٹا اتنا ہی بہتر)۔

لہذا:

  • بلٹ ان بیٹری کی ضرورت نہیں ہے۔ Wifi کے ساتھ کام کرتے وقت کرنٹ > 100 mA کے ساتھ، بلٹ ان بیٹری یا تو بڑی ہوگی یا زیادہ دیر تک نہیں چلے گی۔ لہذا، "باکس" کو معیاری پاور بینک سے چلنے دیں۔ ویسے بھی، میری جیب/کار میں ہمیشہ پاور بینک ہوتا ہے۔
  • اندر ٹولز کے ساتھ ایک لینکس "باکس" رکھیں، تمام زبانوں میں کئی سالوں سے لکھا گیا۔ ایک چھوٹی اسکرین اور کنٹرول بٹنوں کے ایک معمولی سیٹ کے ساتھ، اس کا کوئی مطلب نہیں ہے۔ نتائج کو ایک عام لیپ ٹاپ پر مکمل کی بورڈ اور اسکرین کے ساتھ دیکھا/عمل کیا جا سکتا ہے۔
  • اجزاء کو آسانی سے قابل رسائی اور وسیع پیمانے پر جانا جانا چاہئے (دستیاب SDK، بہت سی مثالیں اور دستاویزات)۔

نتیجے کے طور پر، میرے لئے، انتخاب واضح تھا - ESP32.

مضمون میں بیان کردہ تمام کاموں کے لیے جنہوں نے مجھے کارروائی کرنے کی ترغیب دی، ESP32 کی صلاحیتیں کافی ہیں۔ اگرچہ میں اب بھی سب سے زیادہ کرنا چاہتا ہوں:

  • بلوٹوتھ کے ساتھ کھیلو۔
  • آسان ترین ہارڈ ویئر کے ساتھ 433mHz رینج کے ساتھ کھیلو (صرف طول و عرض ماڈیولیشن، جو کہ عملی ضروریات کے لیے کافی ہے)۔

ESP32 میں مرہم میں فلائی

  • ESP32 SDK (IDF) کچھ اناڑی ہے۔
  • کچھ فعالیت (مثال کے طور پر وائی فائی اسٹیک) جمع شدہ جامد لائبریریوں کی شکل میں سورس کوڈ کے بغیر آتی ہے۔
  • 5gHz بینڈ تعاون یافتہ نہیں ہے اور WiFi کے ساتھ کام کرنے میں کچھ حدود اور اناڑی پن ہیں۔

لیکن قیمت/سائز ان کوتاہیوں کی مکمل تلافی کرتی ہے۔

اہم سافٹ ویئر کی فعالیت

میں مختصراً فعالیت اور اس بارے میں اپنی رائے بیان کروں گا...

ترتیبات کا انتظام اور SD سے فائلیں اپ لوڈ کرنا

تمام بیرونی کنٹرول ایک سادہ ویب صفحہ کے ذریعے کیا جاتا ہے، جسے ایک علیحدہ مینو آئٹم میں لانچ کیا جاتا ہے۔ ESP32 WiFi AP موڈ میں شروع ہوتا ہے اور ایک مقررہ IP ایڈریس پر صفحہ دکھاتا ہے۔

اگرچہ ESP32 کور کافی تیز ہیں، جیسا کہ تجربات نے دکھایا ہے، بلٹ ان ویب سروس کا بیک وقت آپریشن اور مثال کے طور پر، راؤٹر موڈ زیادہ مطابقت نہیں رکھتے۔ لہذا، کوئی متحرک کنٹرول نہیں ہے اور صفحہ دیگر تمام طریقوں میں دستیاب نہیں ہے۔
مزید یہ کہ تحقیقی مقاصد کے لیے متحرک کنٹرول کی ضرورت نہیں ہے۔

بیکن پیکجوں کے ساتھ کام کرنے کا طریقہ

موڈ عام ہیں اور زیادہ دلچسپ نہیں ہیں۔ بنایا گیا "کیونکہ یہ ممکن ہے۔" چیک کے لیے۔
سرکاری Espressif مثالوں میں مثالیں موجود ہیں۔

اے پی لسٹ اسکیننگ موڈ۔
دراصل، کوئی بھی اسمارٹ فون یہ کرسکتا ہے۔
ٹھیک ہے، اس موڈ میں اے پی لسٹ محفوظ ہو جائے گی۔
بیکن اسپامر۔
ESP32 ایک پوشیدہ SSID اور ایک بے ترتیب میک کے ساتھ AP کے طور پر شروع ہوتا ہے اور SSIDs کی پہلے سے تیار کردہ فہرست کے مطابق [بیکن فریم] بھیجنا شروع کرتا ہے (دستی طور پر بنایا گیا یا AP فہرست کو اسکین کرکے پہلے حاصل کیا گیا)

وائی ​​فائی پیکٹ سنفنگ موڈ

ایسپریسیف ڈویلپرز نے ایپلیکیشن سافٹ ویئر کے لیے کال بیک فنکشن کے ذریعے تمام وائی فائی پیکٹ "ہوا میں اڑتے ہوئے" وصول کرنے کی صلاحیت شامل کی ہے۔ اصل میں سب نہیں، کیونکہ آپ صرف ایک فکسڈ چینل کے لیے موڈ سیٹ کر سکتے ہیں۔

کال بیک فنکشن پر کارروائی کرنے پر وقت کی بہت سخت پابندیاں عائد کی جاتی ہیں۔ اگر اس سے اعدادوشمار جمع کرنے کے سادہ موڈ میں مسائل پیدا نہیں ہوتے ہیں، تو SD کارڈ پر PCAP فائل ریکارڈنگ موڈ کے لیے مجھے ٹنکر کرنا پڑا، ریکارڈنگ کو میموری اور سیمفورس میں قطار کے ذریعے ترتیب دینا تھا۔ اس خاصیت کو مدنظر رکھتے ہوئے کہ کال بیک کو کال کرنے کا عمل ایک کور پر چلتا ہے، اور وہ عمل جو SD کو دوسرے میں لکھتا ہے۔

"شوری ہوا" کے دوران، کچھ پیکٹ ضائع ہو جاتے ہیں (قطار میں کوئی جگہ نہیں ہوتی اور انہیں ضائع کر دیا جاتا ہے)، لیکن شام کے وقت اپارٹمنٹ کی مخصوص "ہوا" کے ساتھ (5..7 APs مرئیت کے اندر)، PCAP میں ریکارڈنگ پیکٹ کے نقصان کے بغیر مکمل کیا جاتا ہے.

مزید برآں، PCAP کی نگرانی اور ریکارڈنگ کے لیے، پیکٹ ہیڈر میں MAC کی فہرست پر مبنی فلٹرنگ موڈ موجود ہے۔

مثال کے طور پر، آپ کلب/کیفے میں کسی شخص کے داخل ہونے یا نظر آنے سے پہلے ہی اس کی ظاہری شکل کو ٹریک کر سکتے ہیں۔ بہت کم لوگ معروف APs سے وائی فائی اور خودکار کنکشن کو غیر فعال کرتے ہیں۔ (میں اسے ابھی بند کر رہا ہوں ..)

Wireshark میں ریکارڈ شدہ ٹریفک دیکھنا تعلیمی اور نقشوں کو سمجھنے کے لیے دلچسپ ہے - یہ سب کام کرتا ہے۔

ڈیوتھ پیکجوں کے ساتھ کام کرنے کا طریقہ

پہلے سے طے شدہ طور پر، libnet80211.a لائبریری میں ان پیکجوں کو بھیجنا ممنوع ہے، جو ذرائع کے بغیر آتا ہے۔ لیکن کچھ بٹس کو موافقت کرکے اسے ٹھیک کرنا آسان ہے۔ پہلے میں نے شک کیا کہ آیا یہ پیچ پوسٹ کرنے کے قابل ہے یا نہیں۔ لیکن تصدیق کرنے والے فریم اسکیننگ موڈ کو آن کرنے کے ساتھ مختلف جگہوں پر گھومنے کے بعد، میں نے سوچا: "کیا بات ہے۔" مزید برآں، esp8266 میں ان پیکجوں کی ترسیل بند نہیں ہے اور esp8266 کے لیے گیتھب پر اسمبلیاں موجود ہیں۔

بہت سی جگہوں پر (میں یہ نہیں کہوں گا کہ کہاں) اس طریقہ کے ذریعے ناپسندیدہ APs کو دبانے کا استعمال کیا جاتا ہے۔ اور یہ "بدمعاش" نہیں ہیں...

اور میں حیران بھی تھا کہ میرے فون سے انٹرنیٹ کی تقسیم کچھ جگہوں پر کام نہیں کر رہی تھی...

اس طرح کے پیکٹوں کے نمبر اور RSSI کو ٹریک کرنے کا طریقہ یہ سمجھنے کے لیے بہت مفید ہے کہ "کہاں بائیں اے پیز اسے پسند نہیں کرتے۔"

روٹر موڈ

یہ خصوصیت شاید دریافت کرنے میں سب سے زیادہ دلچسپ ہے۔

ESP32 STA + SoftAP موڈ میں بیک وقت آپریشن کو سپورٹ کرتا ہے۔ لہذا، آپ اس پر ایک کلاسک NAT راؤٹر نافذ کر سکتے ہیں۔

نیٹ ورک اسٹیک کو سپورٹ کرنے کے لیے، Espressif lwip لائبریری کا کانٹا (عملی طور پر غیر تبدیل شدہ) استعمال کرتا ہے۔

لیکن، بطور ڈیفالٹ، معیاری تعمیر میں، esp-lwip لائبریری netif انٹرفیس 'ap' (SoftAP) اور 'st' (STA) کے درمیان فارورڈنگ فراہم نہیں کرتی ہے۔

بلاشبہ، آپ اسے NAT کے بغیر کر سکتے ہیں، لیکن بیک وقت دو یا دو سے زیادہ STAs کو 'ap' انٹرفیس سے جوڑنے اور 'st' نیٹ ورک انٹرفیس سے 'ap' میں IP پتوں کو ہم آہنگ کرنے میں ایک مسئلہ ہے۔ لہذا مشکلات اس کے قابل نہیں ہیں اور یہ NAT کے ذریعے آسان ہے۔

مزید برآں، martin-ger کی طرف سے ایک فورک esp-lwip ہے، جو IP4 کے لیے NAT کے سادہ نفاذ کا اضافہ کرتا ہے۔

اگرچہ میرے ہاتھ اسے خالصتاً کاسمیٹک طور پر دوبارہ بنانے کے لیے خارش کر رہے تھے (میری رائے میں، یہ پروجیکٹ کے کانٹے کے بغیر آسان تھا، لیکن LWIP کے ذریعےکانٹا اسمبلی کے دوران بیان کردہ افعال)، لیکن سستی غالب رہی اور martin-ger سے آپشن استعمال کیا جاتا ہے۔

روٹر موڈ میں، آنے والی اور جانے والی IP4 ٹریفک کو دیکھا جاتا ہے۔

خاص طور پر، اسکرین پر ڈسپلے کرنے اور فائل میں اعداد و شمار جمع کرنے کے لیے اس سے درج ذیل کو نکالا گیا ہے۔

  • ڈیوائس کا نام جو SoftAP ESP32 (DHCP پیکٹ) سے منسلک ہے
  • SoftAP ESP53 سے منسلک ڈیوائس سے DNS درخواستوں (UDP پورٹ 32) کا URL۔

مزید برآں، آپ PCAP فائل میں ٹریفک ریکارڈنگ کو فعال کر سکتے ہیں۔

یہ موڈ بہت مفید ہے، مثال کے طور پر، سمجھنے کے لیے، مثال کے طور پر، آپ کا فون نیٹ ورک کو کیا بھیجتا ہے اور کہاں جاتا ہے۔

آپ نیٹ ورک انٹرفیس کی سطح پر softAP ESP32 آنے والی اور جانے والی ٹریفک کو مکمل طور پر کنٹرول کرنے کی صلاحیت کو مدنظر رکھتے ہوئے اس موڈ کو استعمال کرنے کے دوسرے طریقوں کے بارے میں سوچ سکتے ہیں: Ehernet ہیڈر (destMAC[6]+srcMAC[6]+type[2]) + پے لوڈ (IP4، IP6، DCHP، وغیرہ کی قسم)۔

اصولی طور پر، ESP32 WiFi->WiFi راؤٹر فنکشن کے ساتھ کافی اچھی طرح سے مقابلہ کرتا ہے، بغیر کسی خاص تاخیر کے عام ٹریفک سے گزرتا ہے۔ موضوعی طور پر، ESP32 پر روٹر کے ذریعے جڑے ہوئے فون میں تاخیر قابل توجہ نہیں ہے۔

بدقسمتی سے، Espressif API میں SoftAP EPS32 سے منسلک MAC کے لیے فلٹر سیٹ کرنے کی صلاحیت نہیں ہے۔ اس کے بجائے، پہلے سے منسلک ایس ٹی اے کو "الوداع" (esp_wifi_deauth_sta) کہنے کی تجویز ہے جو "مطلوبہ نہیں" ہیں۔

منسلک STAs کے لیے MAC کے ذریعے فلٹرنگ esp_wifi_deauth_sta() کال کے ذریعے کی جانی تھی۔

آخر میں

اگرچہ میں ESP32 کے ساتھ کام کرنے کے فریم ورک کے اندر کوئی نئی چیز نہیں لے کر آیا، شاید نتیجہ (ماخذ کوڈ) کسی کے لیے دلچسپ ہو گا۔

میں نوٹ کرنا چاہوں گا کہ کوڈ مکمل طور پر تعلیمی مقاصد کے لیے لکھا گیا تھا۔ "ہیکنگ" وغیرہ کے لیے، یہ جان بوجھ کر بہت آسان نہیں بنایا گیا تھا۔

میں نے پرنٹ شدہ سرکٹ بورڈ نہیں بنایا کیونکہ تیار شدہ اسکارف کو تار سے ٹانکا لگانے میں 1.5-2 گھنٹے لگے۔

اور اگر آپ ایسا کرتے ہیں، تو آپ کو اسے ریڈی میڈ بورڈز سے نہیں بلکہ انفرادی اجزاء سے جمع کرنے کی ضرورت ہے۔ پھر طول و عرض بھی چھوٹے ہوں گے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں