SkyLift V0.4
سيُنشر في 15 يونيو
- python3
- click
- سير عمل محلل أوامر CLI أسهل استخداماً
- إصلاح الطابع الزمني
SkyLift V0.3
SkyLift هو جهاز منخفض التكلفة لانتحال الموقع الجغرافي. يستخدم حالياً ESP8266 لبث إطارات WiFi Beacon Frames لاستغلال ثغرة قديمة (منذ 2008) في خدمات تحديد الموقع الجغرافي عبر WiFi.
تم تطوير هذا الإصدار النموذجي الثالث من SkyLift بشكل إضافي خلال إقامة ويب مع Akademie Schloss Solitude وZKM. اقرأ مقابلة حول المشروع. أو اصنع نسختك الخاصة باتباع التعليمات أدناه بأقل من 5 دولارات.
التحديثات
- 13 مايو 2017: أُضيف مسح جديد من محاضرة جون كيرياكو (المُبلّغ عن مخالفات في CIA) في Gruener Salon في برلين

طُوّر SkyLift في الأصل بالتعاون مع Surya Mattu لصالح !Mediengruppe Bitnik في غرفة أسانج ضمن معرض «Welcome to Ecuador!» في Zoo Galerie في نانت عام 2016. بدأ تطوير هذا الإصدار المحدّث، V0.3، في نوفمبر 2016 وتم إطلاقه أخيراً في مايو 2017 بدعم من إقامة ويب في Schloss Solitude. يُدخل هذا الإصدار عدة تحسينات على النظام الأولي (SkyLift V0.1)، بما في ذلك:
- خفض تكلفة البناء من 50 دولاراً إلى حوالي 5 دولارات
- تقليص وقت إعداد التقنية الأساسية من عدة ساعات إلى حوالي 15 دقيقة
- تحسين تشغيل المستخدم (ما عليك سوى توفير طاقة USB)
- تحسين الأداء عبر تنقّل القنوات (channel hopping)
- تحسين بنية الحزم (إضافة بايت فاصل الطابع الزمني)
- إضافة خيار SSID المخفي (الفارغ) "\x00"
- إضافة نصوص برمجية مساعدة لإنشاء مواقع مخصصة
- عزل التقنية في جهاز واحد
- إضافة شاشة OLED اختيارية للعرض
لمعلومات حول SkyLift الأصلي (V0.1)، راجع https://ahprojects.com/notebook/2016/skylift-geolocation/
SkyLift هو مشروع مفتوح المصدر يُشرف عليه Adam Harvey، ويستكشف الثغرات الأمنية والفرص الإبداعية في خدمات تحديد الموقع الجغرافي للهواتف الذكية الموجهة للمستهلكين.
إذا كنت مهتماً بالحصول على جهاز مكتمل وجاهز للاستخدام، فأضف نفسك إلى قائمتي البريدية على https://undisclosed.cc/.
البداية السريعة
- اشترِ ESP8266 NodeMCU 12 أو 12E | eBay (أرخص) أو Amazon.com (أسرع)
git clone https://github.com/adamhrv/skylift/
- من "
arduino/skylift_v03_embassy" ارفع الرسم البرمجي "skylift_v03_embassy.ino"
- تأكد من تفعيل خدمة تحديد الموقع الجغرافي عبر WiFi على هاتفك الذكي
- ضع ESP8266 على مسافة 1 - 2 متر من الهاتف (ضمن 0.25 - 0.5 متر في مناطق WiFi المزدحمة)
- الإعداد الكامل واستكشاف الأخطاء وإصلاحها أدناه
الإعداد
ما ستحتاج إليه:
مع شاشة OLED (اختياري):
يمكن شراء كل من شاشة OLED وESP8266 NodeMCU بنصف السعر تقريباً على eBay إذا كنت مستعداً للانتظار من 1-2 أسبوع للتوصيل. يمكن أن يصل سعر ESP8266 إلى 3 دولارات فقط.
نصوص الاختبار
اختبار WiFi
- تأكد من استخدامك إصداراً حديثاً من Arduino (تم استخدام 1.6.12 للبناء)
- تأكد من تثبيت لوحات ESP8266. في Preferences > Additional Boards أضف "http://arduino.esp8266.com/stable/package_esp8266com_index.json"
- من Tools > Board: اختر "NodeMCU 0.9 (ESP12 Module)" أو 12E
- اختبر باستخدام الرسم البرمجي
Arduino/test_single_beacon_frame
- تحقق من شبكات WiFi لديك. يجب أن يكون الاسم Network1 ظاهراً على القناة 1.
اختبار شاشة OLED
- صل شاشة OLED بـ ESP8266 على الجانب الخلفي من لوحة PCB
- أزل البلاستيك الأسود عن أطراف التوصيل (headers) لتقليل الارتفاع
- وصّل منفذ D2 في ESP8266 -> منفذ SDA في OLED
- وصّل منفذ D3 في ESP8266 -> منفذ SCL في OLED
- وصّل الطاقة PWR (3.3V)
- وصّل الأرضي GND
- ارفع الرسم البرمجي
Arduino/test_oled_screen
- يجب أن يظهر النص "Scrolling Text Demo 123 456" متحركاً عبر الشاشة
السفارة الإكوادورية
اختبار SkyLift مع موقع السفارة الإكوادورية
- ارفع الرسم البرمجي
Arduino/skylift_v03_embassy
- تأكد من تفعيل خدمات تحديد الموقع عبر WiFi على هاتفك
- تأكد من وجود اتصال بيانات نشط (شبكة خلوية أو WiFi. عنوان IP الخاص بك لا يهم)
- افتح تطبيق الخرائط الذي تفضله (أو أي تطبيق يستخدم موقعك)
- إذا لم يعمل، فهناك عدة أسباب. على الأرجح يوجد عدد كبير جداً من أجهزة التوجيه (routers) القريبة التي تتداخل مع درجة الثقة التي يعيدها API لتحديد الموقع عبر WiFi.
- إذا وُجدت شبكات متعددة بقوة -60 إلى -40dB، فمن غير المرجح أن يعيد SkyLift موقعاً جغرافياً جديداً
نصائح لتحسين الأداء:
- قلل عدد إشارات WiFi القريبة إلى أقل من 5 شبكات @ بقوة أقل من -80dB
- يجب أن يعمل مع 10+ شبكات إذا كانت قوة إشارتها أقل من -80dB
- راقب الشبكات القريبة باستخدام NetSpot (النسخة التجريبية المجانية) وابتعد عن أجهزة توجيه WiFi الموجودة إذا أمكن
- ابتعد عن النوافذ حيث تكون إشارة GPS الفضائية أقوى
- تأكد من أن الهاتف قريب من ESP8266 (من الناحية المثالية على مسافة 0.1 - 1 متر في مناطق WiFi المزدحمة، و1-2 متر في مناطق WiFi متوسطة الكثافة، وحتى 10 أمتار في مناطق WiFi منخفضة الكثافة) وبعيداً عن أجهزة التوجيه القريبة
- للمسافات التي تتجاوز 10 أمتار، يمكنك قص هوائي PCB المطبوع ولحام موصّل SMA لإضافة هوائي +7dB أو مضخم WiFi، أو ببساطة أكثر، إضافة عدة أجهزة SkyLift لتعمل كمكررات (repeaters)
- الأسقف والهياكل المعدنية ستُضعف إشارات WiFi القريبة
- ألواح الجبس (Sheetrock) والخشب والخرسانة نافذة لإشارات WiFi ولن تُضعف الإشارة بشكل ملحوظ
- البشر، الذين يتكونون من حوالي 65% ماء، هم ممتصات طبيعية لإشارات WiFi (2.4GHz هو التردد الرنيني للماء)، وسيعملون على تخفيف إشارات WiFi القريبة في البيئات المزدحمة، مما يؤدي إلى أداء أفضل لانتحال الموقع الجغرافي في المناطق المزدحمة
- المواقع الموصى بها لتحقيق الأداء الأمثل هي الملاجئ والحانات أو المناطق الأخرى التي تكون فيها إشارات GPS والخلوية وWiFi ضعيفة. لكن لا تتردد في التجربة في أي مكان.
- أفضل النتائج حتى الآن تحققت في الطابق السفلي في La Gaîté Lyrique، وفي الحفلات الموسيقية، وفي بيئة اختبار خاضعة للتحكم (بالطبع).
- ملاحظة: SkyLift ليس حلاً مضموناً. إذا كان هناك عدد كبير جداً من إشارات WiFi المنافسة في الجوار، فسيعيد API لخدمة الموقع درجة ثقة منخفضة وسيلجأ إلى التثليث الخلوي أو GPS الفضائي كبديل.
إذا كنت في مكان داخلي لا توجد فيه أجهزة توجيه WiFi أخرى ولم يعمل SkyLift، فيرجى فتح تقرير مشكلة (issue report) وتضمين أكبر عدد ممكن من التفاصيل:
- نتائج المسح من NetSpot أو أي تطبيق آخر
- القنوات المستخدمة بواسطة ESP8266 الخاص بك
- المسافة بين SkyLift والهاتف الذكي
- ما إذا كان لديك اتصال بيانات نشط على هاتفك
- نوع اتصال البيانات المتاح (LTE، 4G، 3G، EDGE، GPRS)
- iOS أو Android، وإذا كنت لا تمانع، طراز الهاتف
المواقع المخصصة
يمكنك إنشاء بيانات مواقع SkyLift الخاصة بك باستخدام iOS أو OSX أو Wigle.net API. (عمليات Android وLinux غير موثقة بعد).
1أ) مسح شبكات WiFi على OSX
python utils/osx_scan_to_json.py -o data/json/my_osx_scan.json