Как да освободим смарт часовниците на Garmin от неработещите облачни услуги

Оригиналът е на популярният в своите среди хакер Андрю Хуан с никнейм bunnie, който споделя своето виждане за сриналия се електронен облак на Garmin

3
2442

Често обичам да казвам, че ако започнем да считаме, че дадена технология е магия, то рискуваме да станем нейни заложници. Съвсем наскоро попаднах в подобна ситуация, но за щастие намерих решение в отворения сорс код.

Към датата на писане на тази статия Garmin бе атакуван от твърде неприятен рансъмуер. Това засегна и мен, понеже имам смарт часовника Garmin Instinct. Изключително съм доволен от него и в много отношения този часовник е просто вълшебен – толкова много възможности са реализирани в едно толкова малко устройство.

Овен това, аз имам хоби – гребане с кану каяк.

Аз съм на мнение, че GPS часовникът е незаменим елемент от безопасността, особено в навигацията, понеже е трудно да се определи скоростта на водата когато се намирате на стотици метри от брега. А ако попаднете в някое от опасните течения, без разбиране и осъзнаване на ситуацията, можете да се окажете далече в открито море, че и нещо много по-лошо.

Около Сингапур винаги може да се появят бързи и опасни течения. При смяната на прилива с отлива Южнокитайско море в крайна сметка намира своя път до Андаманско море през Сингапурския пролив, като по този начин се образуват предателски течения, които променят своето направление с течение на времето. Ето защо след всяко гребане моите GPS данни се качват в електронния облак Garmin Connect за по-късен преглед на маршрута и за да бъдат отбелязани по-важните промени в тези течения, свързани с приливите и отливите.

Разбирам, че качването на подобни данни в електронния облак на Garmin създава явен риск за конфиденциалността, но всички ние разбираме, че е необходим компромис: времето е малко, за да се тревожим непрекъснато за подобни неща, а и тази онлайн услуга си работеше много добре.

Довчера.

Точно това се случи – попаднахме в твърде необичайно течение и моят партньор поиска да разбере какви са скоростите в някои особено сложни места. Стартирах приложението за да получа тези данни и… разбрах, че компанията Garmin е атакувана.

Данните на Garmin бяха взети за заложници, включително и персоналните данни за моето гребане. Ето как малка част от моя живот стана заложника на технологиите.

Срещу Garmin бе използван рансъмуерът WastedLocker, а порталът публикува скрийншоти с криптираните файлове, както и текста, с който се иска огромен откуп. За декриптирането на файловете хакерите искат сериозните $10 милиона.

Моите приятели ме посъветваха да използвам уеб услугата Strava. Хубавата новина в тази ситуация е, че Strava дава възможност за изтегляне на данните от часовниците Instinct, като след това тези данни могат да бъдат обработвани от най-различни онлайн услуги. Необходимо е часовникът да се свърже с най-обикновен USB порт, след което устройството се появява като mass storage device.

Лошата новина е, че когато се опитах да си направя свой акаунт в Strava се вдигнаха всички червени флагове. Този уеб сайт е пълен с тъмни шаблони, а след като натиснах бутона „Забрани на Strava достъпа до моите данни свързани със здравето’, изведнъж се появи цяла серия програмни прозорци:

Кликваме върху ‘Отказвам’…

 

Натискаме ‘Забрана на достъпа’…

Тук вече избираме ‘ОК’…

Три клика, за да се забрани достъпа, а ако небрежно продължите да натискате този бутон в долната част на прозореца, ще направите друг избор – случайно. След това се появява един дълъг списък от хора (как успяха да разберат толкова много за мен само по един адрес на електронна поща?) и после хитър диалогов програмен прозорец, на който ако отговорите неправилно, ще ви предложат да въведете информация за кредитната си карта в рамките на ‘безплатна пробна версия’.

Помислих си, че Garminвече е спечелил $200 след като ми е продал това устройство и събирането на моите лични данни ще му дойде като десерт. Само че за Strava това е основното ястие. На мен ми е пределно ясно, че Strava показва на своите инвеститори, че могат да получат една добра печалба от продажбата на моите лични данни, включително информацията за моето здраве.

За мен това е абсолютно неприемливо. Вместо да освободя своите данни, трябва да направя преход от Garmin към Strava, което означава да скоча от тигана направо в огъня.

Възнамерявам вдругиден отново да изляза с кануто и би било отлично да имам анализ на различните скорости на течението. Но Strava така ме ядоса, че, че реших да създам собствена алтернатива с надеждна защита на данните.

С радост открих open source алтернативата gpsbabel (огромно благодаря на разработчиците! Дарих необходимата сума!), която конвертира данните на Garmin със собствен формат, в съвместимия .GPX формат. Оттам успях да извадя фрагментите на XML парсинга и да го обединя с OpenStreetMaps чрез Folium API за създаване на собствени карти с моите си данни.

Дори и като се има предвид, че доста сбърках с използването на Google Maps API, който поставя ужасни водни знаци ‘само за разработчици’ във всички тайлове на картата, работата отне само една вечер. Немалко изгубено време, но като цяло това бе правилният път за търсене на най-подходящите фрагменти с отворен код и тяхното залепване с помощта на Python. Между другото, Python е отлично лепило, но ужасен структурен материал – не го използвайте за големи проекти. Качеството на кода никак не е на ниво, но Python позволява това и си върши работата. Като вземете предвид тези съвети, можете да го използвате като начална точка за търсенето и намирането на нещо по-добро.

Сега вече изцяло контролирам своите данни и мога смислено да ги визуализирам. Така например, мога да изведа скоростта във вид на карта с нивата на скоростта през целия изминат от мен маршрут и моя пулс във всеки един момент.

Именно тези данни са ми необходими – нито повече, нито по-малко. Освен това, всичко е един обикновен html файл към който може да се даде директен линк. Няма никаква аналитика, никакви текстови бисквитки – нищо такова. Само данните, които реших да споделя със всички.

Ето го фрагмента на сорс кода, който използвам за изграждането на картографията:

def plot_osm_map(track, output='speed-map.html', hr=None):
    for i in range(len(track['speed'])):
        track['speed'] = speed_conversion(track['speed'])
    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)

Както вече казах, кодът не е с особено добро качество, но работи и бе написан много бързо, без да се губи излишно време.

Най-хубавото е, че не качвам никакви данни в който и да било електронен облак. Това е едно особено удоволствие – да премахнеш още един канал за следене на личния живот, без да загубиш качество или удобство.

Това е и една метафизична история, която показва доколко добре се е развила open source системата. Когато електронният облак на Garmin се срина, аз успях само за един ден да заменя най-важните функции на моето устройство за носене чрез събиране на едно място на различни фреймуъркове с отворен код.

Смисълът на отворения код не е в ритуалното компилиране. Смисълът му е в това, че чрез него осъзнаваш, че технологията не е магия и че винаги има алтернатива, която всеки може да избере за себе си, за да избегне потенциалната ситуация с цифрови заложници. Стига да поискаме, open source дава възможност за създаването и използването на собствени инструменти и онлайн услуги.

5 5 гласа
Оценете статията
Абонирай се
Извести ме за
guest
3 Коментара
стари
нови оценка
Отзиви
Всички коментари