Препарируем Яндекс-карты: «Вас поставили подслушивать, а Вы тут подглядываете». Информация о точках доступа Wi-fi используется для определения местоположения

    Эта статья в большей степени совсем не о яндекс-картах, а о способе прослушки траффика на symbian 9.
    Итак, снифферов для 9 симбы я не нашел, однако острое шило в .... желание поковыряться в технологии определения местоположения без GPS меня не покидало.

    Технология эксперимента


    Сначала я решил рубить всё под корень, т.е под DNS.
    А именно: прописать в свойствах подключения MTS-Internet свои левые DNS, которые будут отдавать на все хосты один и тот же IP с прокси и сниффером.
    Но в процессе прописки левых резолверов меня ждал приятный сюрприз, я наткнулся на возможность прямо прописать прокси, что с радостью и сделал.

    Так как IP у меня белый, процедура настройки прокси и снифера не заняла много времени и не потребовала сторонних серверов, а свелась лишь к перебросу портов с точки доступа на ноут.

    В качестве прокси был выбран freeproxy, а сниффера — wireshark.

    Freeproxy внезапно оказался совсем не сложный, вся процедура свелась к прописке нужного порта и «from any to any» и не потребовала даже открытия хелпа.

    Передаваемые данные


    Итак, начнем.

    Сразу после старта программа шлёт все о об устройстве
    GET /startup?app_version=370&app_platform=s60v3&screen_w=240&screen_h=320&manufacturer=Nokia&model=E52-1&utf&uuid=222afe80620551cf7f03f33f44e28ba0&clid=43593 HTTP/1.1\r\n
    На что получает ответ

    <?xml version="1.0" encoding="UTF-8"?>
    <startup>
    <wap_warning>0</wap_warning>
    <app cur_app_version="347" min_app_version="200">m.ya.ru/download/maps/update-mts/yandexmaps-s60v3.sisx</app>
    <changelog>
    </changelog>
    <hellostr timeout="5"></hellostr>
    <ui_actions_log events="0,1,4,5,6,7,8,9">1</ui_actions_log>
    <banner timeout="5" url_text="" phone_text="" action_url="" action_phone="" call_warning="" call_counter="" banner_timeout="32000" user_inactive="32000" first_timeout="32000"></banner><maps_updated>1249254602</maps_updated>
    <uuid>222afe80620551cf7f03f33f44e28ba0</uuid>
    <operator></operator>
    <maps min_map_version="1" cur_map_version="5">
    <changes version="5">{бинарные данные}</changes>
    <changes version="1"></changes>
    </maps>
    <openpos lat="55.454039" lon="37.3190485" zoomid="12" success="0" /><query_hosts><host type="default">mts.mobile-partners.maps.yandex.net</host></query_hosts><objectshowintervals><interval object="semaphores" min_zoom="7" max_zoom="17" /><interval object="userpoi" min_zoom="10" max_zoom="17" /><interval object="scaleline" min_zoom="5" max_zoom="17" /></objectshowintervals></startup>


    * This source code was highlighted with Source Code Highlighter.


    Ответ содержит: информацию о версии приложения и ссылку на её скачку, информацию об изменении карты, сервер, координаты на которых приложение было закрыто в прошлый раз.

    Пока ничего интересного.

    Далее:
    GET /cellid_location/?lac=6315&cellid=54105&operatorid=01&countrycode=250&signalstrength=83&wifinetworks=0022B03EE503:-83,0022158EBB72:-43,0022154880FF:-75,0016B6AC649B:-91,00221548159C:-89&uuid=222afe80620551cf7f03f33f44e28ba0 HTTP/1.1\\r\\n

    А вот тут приложение шлёт не что иное, как MAC близжайших точек доступа.
    //«ради вот этой строчки всё остальное и писалось»
    На что приходят долгожданные координаты

    <?xml version="1.0" encoding="UTF-8"?>
    <location source="FoundByWifi">
    <coordinates latitude="55.4490813" longitude="37.1869310" nlatitude="55.5499704" nlongitude="37.1885115" />
    </location>


    * This source code was highlighted with Source Code Highlighter.


    Виден источник их получения, и сами координаты.

    Далее запрашиваются категории значков(ремонтные работы и дтп в окрестности пользователя).

    GET /userpoi/getcatlist?uuid=222afe80620551cf7f03f33f44e28ba0&ver=1 HTTP/1.1\\r\\n

    <?xml version="1.0" encoding="windows-1251"?><catlist iconsversion="10" count="6"> <cat idx="0" name="ДТП" default_show="1" editable="1"></cat><cat idx="1" name="Дорожные работы" default_show="1" editable="1"></cat><cat idx="2" name="Камера" default_show="0" editable="1"></cat><cat idx="3" name="Прочее" default_show="0" editable="1"></cat><cat idx="4" name="Перекрытие" default_show="0" editable="0"></cat><cat idx="5" name="Разведение мостов" default_show="0" editable="0"></cat></catlist>

    * This source code was highlighted with Source Code Highlighter.



    Потом идет отправка непонятой закриптованой пачки. Видимо путь, ответ не интересный. error=0
    (Chat/Sequence): POST /uiactionslog HTTP/1.1\r\n

    Далее обмен информацией превращается в что-то совсем не информативное
    Отправка координат> OK> запрос POI> POI> отправка статистики(скорость координаты)> OK> запрос POI>…
    Ну и иногда подгружаются участки карты.

    Собственно в остатке:
    • Яндекс собирает данные о wifi и использует их для определения местоположения
    • Узнать как определить свое положение по БС оператора не удалось, может положение определяется совсем не по БС?
    • Появились и вопросы.


    Вопросы:
    Как сэмулировать телефон с вставленной симкой или прослушать траффик на симбе или телефоне с java?
    Как использовать, а главное получать данные о БС?
    Куда стучится приложения для преобразования информации о БС в координаты?

    Надеюсь услышать интересные вопросы и еще более интересные ответы.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 58

      0
      Вообще команда карт — молодцы.
      Гугл даже и собрать то толком не успел, а ЯК уже собрали и используют.

      Причем, если у мобилы есть GPS, передаются уточнённые координаты и wi-fi окружение.
        –5
        все просто: кто-то с gps и вафлей собирает маки в своем районе в первый раз, кто-то с вафлей, но без gps — просто использует уже собранные. данные от точек и bss суммируются для улучшения точности.
          +32
          ну хоть убейте, не понимаю, почему WiFi называют вафлей? тошнит от такого жаргона
          0
          То есть, например, Yota Egg может запросто сбить с толку Я.К в телефоне? Мак один, а местоположение меняется.
          Собственно, любой мак, обнаруженный сначала в одном месте, а потом в совершенно другом, вносит элемент хаоса?
            0
            не забывайте про секторы вышек опсосов.
            кроме того, наверняка ребята из яндекса не аппрувят некоторые маки по маскам, если они висят на подобного рода девайсах.
              0
              Когда еще альтер гео рассказывали о подобной своей технологии, они говорили, что каждая точка имеет свой вес. Видимо еггам когда его увидят в 2х местах присваивают маленький вес.
            +1
            вообще-то гугл по такому же принципу собирал данные о вышках операторов и по ним уже определял местаположение(соответственно менее точное). для сбора данных вайфай у них есть гугломобили судя по всему
              +1
              Не только гугломобили. Но и, главным образом, аппараты с приемом wifi (например смартфоны) с установленным ПО Google Maps и подключением к интернету.
              С этих устройств тоже слышимые ими маки с координатами (если они устройству известны) сливаются.
              Я уже приводил пример, когда я сидел в тайской деревне, где никаких гугломобилей быть не могло, тем не менее положение мое на гуглмапах по wifi показывалось весьма точно, до дома на улице.
                0
                я написал это к тому, что сама технология была придумана гуглом, раньше вроде как всех(ну реализована точно раньше всех), а собирание вайфая это просто возможность реализации
              +1
              А гуглокарты как по-вашему работают?
                +4
                я уже писал на эту тему карт тут:
                habrahabr.ru/blogs/infosecurity/94089/

                с разницей только лишь в том, что там гугл, а тут яндекс.
                По РУ, гугл не ездит в автомобиле и не «снимает» данные, т.е. фактически
                вся сеть построена на «добровольцах» с телефонами, поддерживающими GPS.
                А видимо яндекс собирал все данные вручную, отсюда и возможно большая точность в некоторых регионах.

                la0, отвечу на ваши вопросы.
                У гугла есть свой Geolocation API Network Protocol ( code.google.com/intl/ru/apis/gears/geolocation_network_protocol.html ).
                Скорее всего, такой-же аналог и у яндекса.
                Свой телефон вы можете подсоединить к компьютеру через usb кабель либо через Wi-fi,
                и после воспользоваться стандартными средствами для перехвата трафика.
                Под ваш смартфон Nokia E52 есть утилита CellPos v 1.42, которая при движении по местности программа ведет лог базовых станций, собирая базу данных, в которой указываются долгота и широта базовой станции, уровень сигнала, имя соты, ID, вашу текущую скорость и другие данные. Все данные экспортируются в текстовый файл.
                Еще есть PyNetMony 2.0, это более продвинутая программа для мониторинга.
                Описание, думаю, сами найдете. :)
                +3
                А что непонятного в определении положения по БС? Там же вон в том же запросе все параметры и идут: lac, cellid, mcc и т.д. Сервер уже похоже выбирает по чему удобней позиционироваться и возвращает координату и допуски…

                Что же касается сбора данных о wifi и их использовании — дык это не секрет ни для кого, даже пресс-релиз официальный был относительно ввода этой фичи…
                  0
                  непонятно, почему он не сообщает неактивные lac и cellid
                    0
                    Какие ещё неактивные? Те, на которые GSM-модуль будет перепрыгивать при потере текущей? Ну так их вообще-то и не получить штатными средствами, по крайней мере в WM.
                      0
                      я так и думал.
                      Это очень усложняет навигацию по БС.
                  0
                  Буквально 2 дня назад поставил на телефон яндекс карты… и даже не подозревая подвоха, запустил их… но когда я увидел что они определили мое место расположение как соседний дом, глаза у меня были больше 10 рублевой монеты…

                  тема также интересна )))… а особенно интересно, можно ли с помощью этого узнать место расположения другого человека
                    0
                    З.Ы. нокия 5500 спорт, GPS и не пахнет
                      0
                      А сделайте то же самое, что делал и я ))
                      Почитаем логи вместе!
                        –5
                        можно, у мегафона например есть тариф «смешарики» типа для детей, там можно определять координаты номера по запросу.
                        0
                        Сейчас через хтмл5-геолокацию гуглокарты определяют мой ноут, подключенный по вафле с точностью до 10м. От показаний жпса вообще не отличишь — прям в мой подъезд на карте тыкает. Комп с витухой просто указывается в центре, или каком-нить левом районе. Так что тут уже ничего необычного нет.
                          +1
                          Ссылочку на пример.
                            +1

                            Зеленый кружочек — фактическое местоположение.
                          0
                          iPad Touch по точке доступа тоже определяет координаты в гугл мапс.
                            0
                            Это заслуга фреймворка Core Location который есть как в iOS, так и во взрослой MacOS. Например зайдите в настройки часового пояса на маке и система сама отметит ваш город. При этом работает он несколько шире чем только по wifi точкам.
                          0
                          К первому вопросу — а если дома создать на PC Wi-fi точку доступа, подключаться через нее, и снифать траффик с нее?
                            0
                            тогда работает определение ТОЛЬКО по wi-fi и другие данные не передаются.
                          • UFO just landed and posted this here
                              +8
                              я бы уже убил… (ANGRY)

                              Вас что конкретно так расстраивает? Что в сеть передаётся ваш Local Area Code? Так вы ведь не калькулятор запустили. Это Карты, они и пытаются местоположение определить.
                              • UFO just landed and posted this here
                                  +2
                                  отправляя ничего наружу

                                  Ага, кроме запросов на подгрузку кусочков карты. Благодаря этим запросам, Яндекс всё равно знает ваше местоположение, так что вариант один — не пользоваться.
                                    0
                                    Можно заранее кеш скачать =)
                                      0
                                      ну тогда будьте в offline, это просто же :)
                                        0
                                        галочка «Offline-режим» почему-то упрямо не сохраняется при перезапуске карт (WM)
                                        0
                                        А можно поставить что-то вроде навител c картами, он сегодня и под Simbian есть.
                                          0
                                          А под маемо — нету) Пользуюсь сиджиком, в яндексе только пробки смотрю.
                                        0
                                        В 5-ом симбиане (в N97 mini точно) можно задавать какие методы использовать для идентификации местоположения — свой GPS, A-GPS, Bluetooth GPS, БС, Wi-fi. И вроде бы Яндекс карты тоже действуют в соответствии с этими настройками. Так что если принудительно выключить определение по БС, то можети ничего слаться не будет.
                                          0
                                          да, он будет слать координаты GPS и «доступных WiFi нет», как например :)
                                          Мне вот больше интересно, можно ли посмотреть где-нибудь историю своих перемещений. Вроде бы из Google Latitude её можно было выцедить каким-то шаманством, но я так и не понял.
                                        +1
                                        Любой сотовый телефон — это жучок, который каждый добровольно носит с собой. Пора бы это уже понять и принять.
                                      +1
                                      С первой попытки после прочтения коментария прочитал ваш ник как Paranoik… Не включайте вообще ваш телефон, если так боитесь передачи данных… И да, письма тоже не пишите — ведь на них штампы, на которых адреса почтовых отделений…
                                      +11
                                      как дети малые.
                                      Яндекс карты используют технологии AlterGeo (Wi2Geo), и это они не только не скрывали — но и специально говорили и показывали в деталях как это работает на субботниках
                                        0
                                        О сколько нам открытий чудных…
                                          0
                                          Как сэмулировать телефон с вставленной симкой или прослушать траффик на симбе или телефоне с java?

                                          Стоит попробывать эмулятор windows mobile, там есть эмуляция оператора связи, ну а эмуль явы найти не проблема
                                            0
                                            Стоит попробовать почитать орфографический словарь и больше не пробовать писать слово «пробовать» через Ы.

                                            Простите, достало.
                                              0

                                              Стоит попробовать установить вот это и больше не замечать надоедливых ошибок.

                                            +2
                                            Гугл не только гугломобилем собирает. Я пол года не выключал GPS и гуглокарты на телефоне. периодически проверял, как меняется качество геолокации по WIFI. В итоге — погрешность возле дома сократилась постепенно с 300 метров до 5. Думаю, в больших городах, такое покрытие повсюду.
                                              0
                                              Вот меня напргает сильно, когда на Андроиде включаешь гугломапы через WiFi и даже при нахождении в 4х стенах, видишь что тебя обнаружили с точностью до размеа кваритры)
                                                0
                                                То-то я гляжу гуглокарты меня определают с ошибкой на полгода (и полгорода). В квартире, с которой я давным давно уже съехал. Наивный гугл не догадывается, что wifi-роутеры шибко мобильные девайсы (в отличии от вышек сотовой связи) и нужно ориентироваться не на что-то одно, а на всё доступное сразу?
                                                  +1
                                                  Просто надо получить координаты через GPS с открытыми гуглокартами. Он потом должен обновить координаты точки
                                                    +2
                                                    https://services.google.com/fb/forms/wifibugs/
                                                      0
                                                      Вот вы и спалились.
                                                      Скоро Гугломены научатся анализировать блоги и читать Хабр, тогда прочтут ваш пост и исправят ошибку. :)
                                                      –1
                                                      С каждым днем все радостнее жить… ©
                                                        0
                                                        Определение местоположения по Wifi давно же уже существует. Те же Wi2geo (altergeo) дают возможность использовать своё api на сайтах b2b.wi2geo.ru/geolocator/docs/#API
                                                          +1
                                                          Я бы удивился, если бы они НЕ использовали WiFi для определения местоположения.

                                                          Пионером в этом деле был, имхо, Skyhookwireles. Они собирали базу WiFi и продавали SDK, в т.ч. для Symbian, в который входила статическая либа. Либа собирала данные о видимых устройством WiFi и резолвила по ним местоположение через их базу на сервере. Теперь, наряду с SDK, они продают еще и плагин, встраивающийся в Symbian'овский фреймворк и выглядящий для системы как просто еще один способ получения местоположения (наряду с Network, GPS, A-GPS). Так что любая программа может его заюзать даже не зная о существовании WPS/XPS.

                                                          Вот только до Skyhookwireles в свое время не дошло, что данные WiFi можно тянуть вместе с GPS и использовать для пополнения своей же базы. Это, вроде, гугл первый сообразил. Так что покрытие у них в основном США, Япония, Европа.
                                                          • UFO just landed and posted this here
                                                              0
                                                              Как использовать, а главное получать данные о БС?

                                                              Подцепляете телефон к компу по кабелю и используете специальные программы, для нокии в debian что-то в репах находил. Второй вариант — NetMonitor на симбу ставите.
                                                              Что вы можете получить:
                                                              — MCC — Mobile Country Code — код страны, РФ=250
                                                              — MNC — Mobile Network Code — код оператора, МТС=01, Мегафон=02, Билайн=99
                                                              — LAC — Location Area Code — номер группы БС внутри сети оператора, по площади — в городах это несколько районов
                                                              — CI — Cell ID — идентификатор соты внутри LAC, то есть с точностью до сектора.
                                                              — сила сигнала — относительный GSM-уровень сигнала.
                                                              Для справки:
                                                              MNC+MCC+LAC+CI=CGI — Cell Global ID — Глобальный идентификатор соты, уникален в пределах планеты Земля.

                                                              Как использовать?
                                                              — Можно понять после пьянки в какой стране вы проснулись.
                                                              — Можно понять какого оператора вы используете.
                                                              — Можно понять приблизительно как далеко от БС вы находитесь на основе силы сигнала.
                                                              — Если вы знаете точные координаты БС, то можно понять примерно где вы находитесь, но такими данными обладает только оператор. Яндекс и Гугл знает только примерно эти вещи.
                                                              Куда стучится приложения для преобразования информации о БС в координаты?

                                                              У Яндекса есть сервер с БД, в которой есть соответствия CGI-сила сигнала-координаты. Вы присылаете CGI и силу сигнала — получаете примерные координаты.
                                                                0
                                                                Вот тут на сервисе locator.by njже определяют и по WIFI и по Cell ID
                                                                  0
                                                                  Хм. А можно ли, интересно, собрать подставной пакет, указать там MAC-адрес какой-нибудь интересующей WiFi-точки (к примеру, того же Egg) и получить её последние координаты?..

                                                                  Only users with full accounts can post comments. Log in, please.