ألعاب مع Wifi على ESP32

ألعاب مع Wifi على ESP32

دفعتني فكرة صنع أداة جيب لتحليل شبكات WiFi هذه المقالة.

شكرا لهم على الفكرة. لم يكن لدي شيء لأفعله.

كل العمل كان هواية لغرض المتعة وتوسيع معرفتي في مجال تقنيات الشبكات. ببطء ، 1..4 ساعة في الأسبوع ، منذ بداية هذا العام.
لم يتم التخطيط لاستخدام التطبيق. أولئك. إنها ليست أداة قراصنة.

في الوقت الحالي ، تعمل جميع الوظائف المقصودة. جميع المصادر جاهزة تمامًا للتجميع ، نشرت هنا. هناك أيضًا تعليمات التجميع ، إلخ. في هذه الملاحظة ، لن أقوم بتكرار المعلومات المنشورة على github. سأخبرك فقط بما أعتبره ضروريًا لوصفه بشكل منفصل.

رأيي في "الأداة العالمية" وسبب اختيار ESP32

أنا لا أدعي الحقيقة. لكل فرد خاصتها. سأحاول تبرير اختياري لـ "حديد".

اقترح في المقال خيار استخدام مزيج من Linux (في الأصل Raspberry Pi) + "الأجهزة الطرفية" في شكل وحدة تحكم (STM32) + CC1110 (8051 نواة) وخطة لحشر كل ما هو ممكن (125 كيلو هرتز ، NFC ، 433 ميجا هرتز ، USB ، iButton ، bluetooth ،؟) لا يبدو مناسبًا لي. لكن، هذا المشروع يبدو أنها ستبقى خاصة ومغلقة (flipper-zero github "هذه المؤسسة ليس لديها مستودعات عامة.") وتوجهت نحو أجهزة غير شائعة جدًا.

ربما أكون مخطئًا ، وفي المستقبل ، سيضع المؤلفون الكود المصدري للبرنامج في المجال العام. ولكن إذا لم يكن الأمر كذلك ، فلن أشتري قطعة حديد كهذه بدون رموز المصدر.

متطلبات أداتي

يجب أن يكون الصندوق صغيرًا (أصغر كان ذلك أفضل).

وبناء عليه:

  • ليست هناك حاجة لبطارية مدمجة. مع تيار> 100 مللي أمبير عند العمل مع Wifi ، ستكون البطارية المدمجة إما كبيرة أو لن تدوم طويلاً. لذلك ، دع "الصندوق" يتم تشغيله بواسطة بنك طاقة قياسي. ومع ذلك ، لدي دائمًا بنك طاقة في جيبي / سيارتي.
  • احتفظ بداخل "الصندوق" Linux مع الأدوات ، كتب على مدى سنوات عديدة بجميع اللغات في وجود شاشة صغيرة ومجموعة هزيلة من أزرار التحكم ، لا معنى له. يمكن الاطلاع على النتائج / معالجتها على كمبيوتر محمول عادي مع لوحة مفاتيح وشاشة كاملة.
  • يجب أن تكون المكونات سهلة الوصول ومعروفة على نطاق واسع (SDK متاح ، الكثير من الأمثلة والوثائق).

نتيجة لذلك ، بالنسبة لي ، كان الاختيار واضحًا - ESP32.

بالنسبة لجميع المهام المذكورة في المقالة ، والتي دفعتني إلى اتخاذ إجراء ، فإن قدرات ESP32 كافية. على الرغم من أن أكثر ما أريد فعله هو هذا:

  • العب مع البلوتوث.
  • العب مع نطاق 433 ميجا هرتز مع أبسط الأجهزة (فقط تعديل السعة ، وهو ما يكفي للاحتياجات العملية).

يطير في المرهم في ESP32

  • SDK (IDF) ESP32 أخرق إلى حد ما.
  • يأتي جزء من الوظيفة (مكدس WiFi ، على سبيل المثال) بدون أكواد مصدر في شكل مكتبات ثابتة مجمعة.
  • النطاق 5 جيجاهرتز غير مدعوم وهناك بعض القيود والحماقات في العمل مع شبكة WiFi.

لكن السعر / الحجم يعوض بالكامل عن أوجه القصور هذه.

الوظيفة الرئيسية للبرنامج

سأصف بإيجاز الوظيفة ورأيي حول ...

إدارة الإعدادات وتحميل الملفات من SD

تتم جميع عمليات التحكم الخارجية من خلال صفحة ويب بسيطة يتم تشغيلها في عنصر قائمة منفصل. يبدأ ESP32 في وضع WiFi AP ويعرض صفحة بعنوان IP ثابت.

على الرغم من أن نوى ESP32 سريعة جدًا ، ولكن كما أظهرت التجارب ، فإن التشغيل المتزامن لخدمة الويب المدمجة ، ووضع جهاز التوجيه ، على سبيل المثال ، لا يختلطان جيدًا. لذلك ، لا يوجد تحكم ديناميكي ولا تتوفر الصفحة في جميع الأوضاع الأخرى.
علاوة على ذلك ، لا يلزم التحكم الديناميكي لأغراض البحث.

العمل مع حزم منارة

الأنماط مبتذلة وليست مثيرة جدًا للاهتمام. صنعت "لأنك تستطيع". لفحص.
هناك أمثلة في أمثلة Espressif الرسمية.

وضع مسح قائمة AP.
في الواقع ، يمكن لأي هاتف ذكي القيام بذلك.
حسنًا ، في هذا الوضع ، سيتم حفظ قائمة نقاط الوصول.
منارة سبامر.
يبدأ ESP32 كنقطة وصول مع SSID مخفي و MAC عشوائي ويبدأ في إرسال [إطار إشارة] على قائمة SSID تم إنشاؤها مسبقًا (تم إنشاؤها يدويًا أو الحصول عليها مسبقًا عن طريق مسح قائمة AP)

وضع استنشاق WiFi

أضاف مطورو Espressif القدرة على البرامج التطبيقية لاستقبال جميع حزم WiFi "تطير في الهواء" من خلال وظيفة رد الاتصال. في الواقع ، ليس كل شيء ، حيث يمكنك ضبط الوضع لقناة ثابتة واحدة فقط.

يتم فرض حدود زمنية صارمة للغاية على معالجة استدعاء وظيفة رد الاتصال. إذا كان هذا لا يسبب مشاكل بالنسبة لطريقة جمع الإحصائيات البسيطة ، فعندئذٍ بالنسبة لوضع كتابة ملف PCAP على بطاقة SD ، كان عليّ أن أقوم بتنظيم التسجيل من خلال قائمة انتظار في الذاكرة والإشارات. مع الأخذ في الاعتبار خصوصية أن العملية التي تستدعي رد الاتصال تدور على نواة واحدة ، والعملية التي تكتب إلى SD في نواة أخرى.

مع وجود "هواء صاخب" يتم فقد بعض الحزم (لا توجد مساحة في قائمة الانتظار ويتم التخلص منها) ، ولكن مع وجود "هواء" نموذجي للشقة في المساء (5..7 نقاط وصول على مرمى البصر) ، اكتب إلى PCAP لديه الوقت لإكمال دون فقدان الحزمة.

بالإضافة إلى ذلك ، من أجل مراقبة وتسجيل PCAP ، يوجد وضع تصفية يعتمد على قائمة MAC في رؤوس الحزمة.

على سبيل المثال ، يمكنك تتبع مظهر شخص ما في نادٍ / مقهى ، قبل أن يدخل أو يظهر في مجال الرؤية. قلة من الناس يقومون بإيقاف تشغيل WiFi والاتصالات التلقائية لنقاط الوصول المعروفة. (أنا أطفئه الآن ..)

تعد مشاهدة حركة المرور المسجلة في Wireshark مفيدة ومثيرة للاهتمام لفهم الخرائط ، فكلها تعمل.

طريقة العمل مع حزم deauth

افتراضيًا ، يُحظر إرسال هذه الحزم في مكتبة libnet80211.a ، والتي تأتي بدون مصادر. لكن من السهل إيقاف هذا عن طريق تصحيح بعض الطعم. في البداية ، شككت فيما إذا كان الأمر يستحق تحميل التصحيح. ولكن بعد التجول في أماكن مختلفة مع تمكين وضع المسح [إطار إلغاء المصادقة] ، فكرت: "ما هذا بحق الجحيم". علاوة على ذلك ، في esp8266 ، لم يتم إغلاق إرسال هذه الحزم وهناك تجميعات على github تحت esp8266.

في العديد من الأماكن (لن أقول أين) يتم استخدام منع AP غير المرغوب فيه من خلال هذه الطريقة. وهي ليست "مثيري الشغب" ...

وما زلت متفاجئًا أن توزيعي للإنترنت من هاتفي كان لا يعمل في الأماكن ...

يعد وضع تتبع الرقم و RSSI لهذه الحزم مفيدًا جدًا لفهم "الأماكن التي لا تحبها نقاط الوصول المتبقية."

وضع جهاز التوجيه

ربما تكون هذه الميزة هي الأكثر إثارة للاهتمام لاستكشافها.

يدعم ESP32 التشغيل المتزامن في وضع STA + SoftAP. لذلك ، من الممكن تنفيذ جهاز توجيه NAT كلاسيكي عليه.

لدعم مكدس الشبكات ، يستخدم Espressif شوكة (لم تتغير تقريبًا) من مكتبة lwip.

ولكن ، بشكل افتراضي ، في التجميع القياسي ، في مكتبة esp-lwip ، لا توجد إعادة توجيه بين واجهات netif 'ap' (SoftAP) و 'st' (STA).

بالطبع ، يمكنك القيام بذلك بدون NAT ، ولكن هناك مشكلة في الاتصال المتزامن لاثنين أو أكثر من STAs بواجهة 'ap' ومزامنة عناوين IP من واجهة الشبكة 'st' إلى 'ap'. لذا فإن التعقيد لا يستحق كل هذا العناء وهو أسهل من خلال NAT.

علاوة على ذلك ، هناك شوكة esp-lwip من marting-ger تضيف تطبيقًا بسيطًا لـ NAT لـ IP4.

على الرغم من أن يدي كانت تحكهما في إعادته بشكل تجميلي بحت (في رأيي ، كان الأمر أسهل بدون مشروع شوكة ، ولكن من خلال LWIPHOOK وظائف محددة للبناء) ، ولكن الكسل فاز ويتم استخدام إصدار marting-ger كما هو.

في وضع جهاز التوجيه ، يتم عرض حركة مرور IP4 الواردة والصادرة.

على وجه الخصوص ، يتم استخراجه منه لعرضه على الشاشة وجمع الإحصائيات في ملف:

  • اسم الجهاز المتصل بـ SoftAP ESP32 (حزم DHCP)
  • URL من استعلامات DNS (منفذ UDP 53) من جهاز متصل بـ SoftAP ESP32.

بالإضافة إلى ذلك ، يمكنك تمكين تسجيل حركة المرور في ملف PCAP.

هذا الوضع مفيد جدًا ، على سبيل المثال ، لفهم ما يرسله هاتفك إلى الشبكة وأين يذهب ، على سبيل المثال.

يمكنك التفكير في طرق أخرى لاستخدام هذا الوضع ، مع مراعاة القدرة على التحكم برمجيًا في حركة مرور SoftAP ESP32 الواردة والصادرة على مستوى واجهة الشبكة: رأس Ehernet (destMAC [6] + srcMAC [6] + type [2]) + الحمولة (نوع IP4 ، IP6 ، DCHP ، إلخ).

من حيث المبدأ ، يتكيف ESP32 جيدًا مع وظيفة جهاز التوجيه WiFi-> WiFi ، ويمرر حركة المرور المنتظمة عبر نفسه دون تأخير كبير. بشكل ذاتي ، لا يمكن ملاحظة التأخيرات في الهاتف المتصل عبر جهاز توجيه بـ ESP32.

لسوء الحظ ، لا توجد طريقة في Espressif API لتعيين مرشح بواسطة MAC متصل بـ SoftAP EPS32. بدلاً من ذلك ، يُقترح قول "وداعًا" (esp_wifi_deauth_sta) لـ STAs المتصلة بالفعل والتي "غير مرغوب فيها".

يجب إجراء التصفية بواسطة MAC لأجهزة STA المتصلة من خلال استدعاء esp_wifi_deauth_sta ()

في الختام

على الرغم من أنني لم أتوصل إلى أي شيء جديد في إطار العمل مع ESP32 ، فربما يكون هناك شخص ما مهتمًا بالنتيجة (المصادر).

أود أن أشير إلى أن الكود تمت كتابته لأغراض تعليمية فقط. بالنسبة إلى "القرصنة" ، وما إلى ذلك ، فقد تم تصنيعها بشكل خاص غير مريحة للغاية.

لم أصنع لوحة دوائر مطبوعة ، لأن الأمر استغرق 1.5-2 ساعة لحام الأوشحة النهائية بسلك.

وإذا قمت بذلك ، فأنت بحاجة إلى تجميعها ليس من ألواح جاهزة ، ولكن من مكونات فردية. ثم ستكون الأبعاد أصغر.

المصدر: www.habr.com

إضافة تعليق