كيفية تحرير ساعة Garmin الذكية الخاصة بك من الخدمات السحابية التي لا تعمل بسبب هجوم

مؤلف المقال هو المخترق الشهير أندرو هوانج (بوني).



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



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



بالإضافة إلى ذلك ، لدي هواية - مداد تجديف [زورق مداد - تقريبًا. لكل.]



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



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



في حين أن تحميل مثل هذه البيانات على سحابة Garmin يشكل خطرًا واضحًا وحقيقيًا على الخصوصية ، فإننا نتفهم جميعًا المفاضلة: لا يوجد وقت كافٍ للقلق بشأن مثل هذه الأشياء ، وقد عملت الخدمة بشكل جيد.



حتى يوم أمس.



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







تم أخذ بيانات Garmin كرهائن ، بما في ذلك بيانات التجديف الشخصية الخاصة بي: لقد أصبح جزء صغير من حياتي رهينة التكنولوجيا.



أخبرني مجموعة من الأصدقاء أن أجرب Strava. والخبر السار هو أن Garmin يسمح لك باستخراج ملفات البيانات من ساعة Instinct لتحميلها إلى خدمات الجهات الخارجية. تحتاج فقط إلى توصيل الساعة بمنفذ USB عادي ، وسيظهر كجهاز تخزين كبير السعة.



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







انقر فوق







رفض ... انقر فوق رفض السماح ...







انقر فوق موافق ...



ثلاث نقرات رفض الوصول ، وإذا واصلت الضغط بهدوء على الزر السفلي ، فستقوم باختيار آخر - عن طريق الصدفة. بعد ذلك ، تم الترحيب بي بقائمة مخيفة من الأشخاص الذين يجب متابعتهم ( هل تعلموا الكثير عني من عنوان بريد إلكتروني واحد؟ ) ثم مربع حوار صعب حيث إذا أجبت بشكل غير صحيح ، سيُطلب منك إدخال معلومات بطاقتك الائتمانية كجزء من "المجاني" نسخه تجريبيه ".



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



هذا غير مقبول إطلاقا بالنسبة لي. بدلاً من تحرير البيانات من الضمانات ، فإن الانتقال من Garmin إلى Strava يشبه الانتقال من مقلاة إلى نار.



أخطط للخروج على القارب مرة أخرى بعد غد وسيكون من الرائع الحصول على بعض تحليلات السرعة. لكنني كنت غاضبًا جدًا من Strava لدرجة أنني لم أعد أبحث عن خيار آخر ، لكنني قررت تطوير بديلي مع حماية موثوقة للبيانات الشخصية.



لقد اكتشفت بسعادة أداة مفتوحة المصدر تسمىgpsbabel ( بفضل المطورين! أنا مزعج! ) ، والذي يحول البيانات من تنسيق Garmin شبه المملوك إلى تنسيق .GPX متوافق. من هناك ، تمكنت من استخراج أجزاء تحليل XML ودمجها مع OpenStreetMaps عبر Folium API لإنشاء خرائط مخصصة باستخدام بياناتي.



على الرغم من أنني "فقدت" محاولة استخدام واجهة برمجة تطبيقات خرائط Google ، والتي تضع علامات مائية "للتطوير فقط" مروعة على جميع مربعات الخرائط ، إلا أن الأمر استغرق ليلة واحدة فقط. ليس هذا هو أفضل إهدار لوقتي ، كل الأشياء التي تم أخذها في الاعتبار ، ولكن كان الأمر في الغالب يتعلق بالعثور على القطع مفتوحة المصدر المناسبة ولصقها معًا في Python (بالمناسبة ، Python عبارة عن مادة لاصقة رائعة ، لكنها عناصر هيكلية رهيبة. لا تقم بإنشاء مشاريع كبيرة منها) جودة الشفرة سيئة للغاية ، لكن Python تسمح بذلك ، وهي تؤدي وظيفتها. مع وضع هذه المحاذير في الاعتبار ، يمكنك استخدامه كنقطة انطلاق للبحث عن شيء أفضل.



الآن لدي سيطرة كاملة على بياناتي ويمكنني تصورها بشكل مفيد. على سبيل المثال،عرض السرعة كخريطة حرارية طوال الدورة مع دوائر تتناسب مع السرعة في الوقت الحالي ، ونص ، عند تحريك المؤشر ، يُظهر السرعة المحددة ومعدل ضربات القلب في الوقت الحالي: هذه هي بالضبط البيانات التي أحتاجها بالتنسيق المطلوب ، لا أكثر ولا أقل ... بالإضافة إلى ذلك ، فإن المشكلة هي ملف html واحد يمكن ربطه مباشرة . لا تحليلات ولا ملفات تعريف الارتباط. فقط البيانات التي قررت مشاركتها معك. هذا هو جزء الكود الذي أستخدمه لرسم بيانات الخريطة:















def plot_osm_map(track, output='speed-map.html', hr=None):
    for i in range(len(track['speed'])):
        track['speed'][i] = speed_conversion(track['speed'][i])
    speeds = track['speed']
    minima = min(speeds)
    maxima = max(speeds)

    norm = matplotlib.colors.Normalize(vmin=minima, vmax=maxima, clip=True)
    mapper = cm.ScalarMappable(norm=norm, cmap=cm.plasma)
    m = folium.Map(location=[track['lat'][0], track['lon'][0]], zoom_start=15)
    for index in range(len(track['lat'])):
        if track['speed'][index] == 0:
            track['speed'][index] = 0.01
        else:
            track['speed'][index] = track['speed'][index]
        if hr:
            try:
                tooltip=str(track['speed'][index]) + ' ' + str(hr['hr'][index]) +'bpm'
            except:
                tooltip=str(track['speed'][index])
        else:
            tooltip=str(track['speed'][index])
        folium.CircleMarker(
            location=(track['lat'][index], track['lon'][index]),
            radius=track['speed'][index]**2 / 8,
            tooltip=tooltip,
            fill_color=matplotlib.colors.to_hex(mapper.to_rgba(track['speed'][index])),
            fill=True,
            fill_opacity=0.2,
            weight=0,
        ).add_to(m)

    m.save(output)


كما قلت ، الكود ليس بأفضل جودة ، لكنه يعمل وسرعان ما يكتب.



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



إنها أيضًا metahistory مثيرة للاهتمام حول مدى جودة أداء النظام البيئي مفتوح المصدر اليوم. عندما تعطلت سحابة Garmin ، تمكنت من استبدال أهم الميزات في يوم واحد فقط ، حيث جمعت بين العديد من أطر العمل مفتوحة المصدر.



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



أنظر أيضا:






All Articles