- PVSM.RU - https://www.pvsm.ru -

Как стать Мэром Краснодара

Как стать Мэром Краснодара
Как вы уже наверное догадались, речь в статье пойдет о Foursquare.

Статистика [1]Foursquare впечатляет. Только в России этой соцсетью пользуется миллион человек. Узнать, пользуются ли ваши соседи 4sq можно вот на этой карте чекинов [2].

Одной из основных «фишек» 4sq являются бэйджи — особые ачивки, которые вы получаете за посещение различных мест.
Всего бейджей огромное множество.
Как стать Мэром Краснодара
Но нас интересует вполне определенный бэйдж — бэйдж Мэра.

Бэйдж Мэра выдается пользователю, имеющему максимальное количество регулярных чекинов в каком-то одном месте.
Ценным его делают две вещи:
1. Аватарка Мэра отображается на странице места (если место популярное, то это делает вас нереально крутым!);
2. Для Мэра частенько бывают различные скидки и акции.
Как стать Мэром Краснодара

Чтобы нужно чтобы стать Мэром (кроме членства в ЕР)?

  • наибольшее количество чекинов за последние 60 дней;
  • засчитывается только 1 чекин в день.

Кроме того 4sq имеет защиту от чекин флуда:

  • не более 3 чекинов за 15 минут;
  • не более 6 чекинов в час;
  • не более 30 разных чекинов за 24 часа;
  • «обнуление» дневного счетчика в 16:00 (Москва).

Как и в реальной жизни, существует несколько способов стать Мэром, минуя «классические» варианты. Об этом и поговорим дальше.

Способ первый. Фальшивые GPS координаты.

Чтобы ваш чекин был «засчитан» для Мэрства, вы должны находится непосредственно с требуемым геобъектом. Сделать это проще всего, запустив на телефоне утилиту, эмулирующую работу GPS.
Как стать Мэром Краснодара
Плюсы такого способа — 100% гарантия правильного чекина. Минусы — 100% ручная работа =(.

Способ второй. Developer api.

Зачем издеваться над телефоном, если можно отправлять команды напрямую на сервер через 4sq developer api [3]!
Как стать Мэром Краснодара
К сожалению, в ходе работы с DevAPI всплыло ряд существенных недостатков: Кривой User -Agent в POST запросах, отсутствуют некоторые недокументированные параметры, и, самое главное, чекины, переданные таким образом, для мэрства не засчитываются :( (видимо стоит фильтр по тому же User-Agent).

Способ третий и последний. Спуфим смартфон.

В отличие от Instagram [4], 4sq использует защищённое https соединение для работы. А значит весь трафик между устройством и сервером шифрован.
Чтобы перехватить https трафик с телефона нам понадобится:

  • Burp suite [5] (хватит и бесплатной версии) на ПК;
  • ProxyDroid (Android) на телефоне (или аналог);
  • сертификат Burp suite root CA на телефоне.

Добавляем PortSwigger CA в пользовательское хранилище сертификатов на телефоне (потом не забудьте его оттуда убрать), включаем в Burp Suite на ПК режим прокси, указываем настройки прокси в ProxyDroid на телефоне и заворачиваем весь трафик через наш прокси.
В данной схеме Burp Suite осуществляет MITM атаку на https соединение, а доверенный сертификат Burp CA в хранилище сертификатов не даёт телефону это обнаружить.
В результате мы имеем https трафик между телефоном и сервером 4sq в открытом виде:
Как стать Мэром Краснодара

Что сразу бросается в глаза — это наличие кучи недокументированных в DeveloperAPI параметров: metrics, CheckinComposeActivity, VenueActivity и т.д. Я так и не разобрался для чего они нужны…
С помощью Burp'овского генератора запросов можно самому убедится, что повторный пакет приведет к повторному чекину => Мы в одном шаге от заветной должности!

Запускаем авточекинку

Для автоматизации процесса чекина я решил использовать свой домашний роутер с linux прошивкой и cron'ом.
Итоговый bash-срипт для чекина в Администрации Краснодарского края выглядит так:

#! /bin/bash
curl -k -X POST 
"https://api.foursquare.com/v2/checkins/add" 
-H "Accept-Language: en-US" 
-H "Accept-Encoding: gzip" 
-H "Connection: Keep-Alive" 
-H "Content-Type: application/x-www-form-urlencoded" 
-H "Host: api.foursquare.com" 
--user-agent "com.foursquare.android:2013040200:20130402:4.2.2:GT-I9100:release" 
--data "ll=45.0247440%2C38.9695560&llAcc=27.0&venueId=4bc4419874a9a593308fd5f6&shout=&broadcast=public&oauth_token=<bla-bla-bla>&v=20130402"

Здесь ll — это широта и долгота геообъекта (узнать можно через google maps), Acc — точность GPS в метрах, venueId — идентификатор геообъекта (узнать который можно, посмотрев на адресную строку вебстраницы любого объекта [6] на сайте 4sq), oauth_token — это ваш секретный ключ, узнать который можно либо через дамп пакетов с помощью Burp suite, либо через DeveloperAPI (залогинтесь и отправьте какой-нибудь тестовый запрос с помощью кнопки Try it out!).
Последний параметр — дата генерации сервером Oauth_token. Как видите, мой апрельский токен до сих пор жив.

После того, как я запустил cron с несколькими bash скриптами, я успел уже и забыть про foursquare. Поэтому особенно приятно было в один прекрасный майский день проснуться Мэром Администрации города и края одновременно :)
Как стать Мэром Краснодара

Автор: merced2001

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/39040

Ссылки в тексте:

[1] Статистика : http://habrahabr.ru/company/e-Legion/blog/183308/

[2] карте чекинов: https://foursquare.com/infographics/500million

[3] 4sq developer api: https://developer.foursquare.com/docs/

[4] Instagram: http://habrahabr.ru/post/166773/

[5] Burp suite: http://portswigger.net/burp/

[6] вебстраницы любого объекта: https://foursquare.com/v/%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D0%BE%D0%B4%D0%B0%D1%80%D1%81%D0%BA%D0%BE%D0%B3%D0%BE-%D0%BA%D1%80%D0%B0%D1%8F/4bc4419874a9a593308fd5f6

[7] Источник: http://habrahabr.ru/post/187130/