Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров15K
Эта статья в большей степени совсем не о яндекс-картах, а о способе прослушки траффика на 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?
Как использовать, а главное получать данные о БС?
Куда стучится приложения для преобразования информации о БС в координаты?

Надеюсь услышать интересные вопросы и еще более интересные ответы.
Теги:
Хабы:
Всего голосов 66: ↑56 и ↓10+46
Комментарии60

Публикации

Истории

Работа

Ближайшие события

2 – 18 декабря
Yandex DataLens Festival 2024
МоскваОнлайн
11 – 13 декабря
Международная конференция по AI/ML «AI Journey»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань