Рубрики
Без рубрики

Starbucks должен действительно сделать свои API?

Из слабой интеграции к кофейным кнопкам есть множество потенциальных интеграций, которые могут быть построены, если они открыли их API сторонним разработчикам.

Автор оригинала: Nick Lee.

От Слабые интеграции к Кофейные кнопки , существуют множество потенциальных интеграций, которые могут быть построены, если они открыли их API сторонним разработчикам.

Мотивация

Чтобы дать кредит, где он должен быть, приложение Starbucks отлично. Я использую это (как минимум) один раз в день. У него есть все, что я ищу в отличном мобильном опыте – кофе, Fire 80’s Spotify плейлисты и отсутствие взаимодействия с другими людьми. Я явно не одинок в этих желаниях, как 20% транзакций Starbucks в США теперь сделаны с помощью мобильных телефонов Отказ

Из слабой интеграции к кофейным кнопкам есть множество потенциальных интеграций, которые могут быть построены, если они открыли их API сторонним разработчикам. Они явно движутся в этом направлении, так как они имеют оба аккаунт в Твиттере и (защищенный паролем) Сайт для разработчиков.

Однако я не мог ждать, поэтому я решил взять дело в свои руки.

Они не сделали это легко

Как оказалось, приложение Starbucks – это жесткая гайка для трещины. Несмотря на URL-URL ” open api.starbucks.com,« Есть несколько неясные обручи, чтобы перейти до того, как можно даже начать анализировать вызовы, которое делает приложение. Как следует в случае с любое приложение, которое обрабатывает платежи, Starbucks предпринял множество мер безопасности для обеспечения API, которые их приложение использует от несанкционированного использования. Вот некоторые из них:

  • SSL сертификат Pinning.
  • Отпечаток пальцев атрибуты вашего мобильного телефона, чтобы увидеть, если это «Phonelike»
  • Шифрование этого отпечатков пальцев с использованием AES, с 256-битным ключом и вектором случайной инициализации
  • Подписание запросов с текущим временем

Наблюдение за сетевыми запросами

Первые вещи сначала мне нужен способ наблюдать за просьбой и ответами между приложением Starbucks и их серверами. Обычно я бы просто указывал на мой iPhone на Чарльз (или Mitmproxy ) И я буду на моем пути.

Не в этот раз! Поскольку приложение использует закрепление сертификата, я не смог перехватить любые запросы, поскольку я обычно бы. Вместо этого я должен был выкопать старый телефон Android, корень Это, установите рамки под названием Xposed и, наконец, установите Расширение который вводит себя в бегущих приложениях и Отключает SSL Pinning Отказ

Муахахахахахахах

Как только я это запустил, я смог начать просмотреть запросы, используя Charles Proxy. Эта рана была немного ложным рассветом, как Не все запросы могут быть легко воспроизведены Отказ Тем не менее, я смог запросить базовую информацию, такую как близлежащие магазины, пункты меню и остатки карты.

Результат ближайшего запроса магазина. Теперь вы знаете, где я работаю. Овел

«Легко», – подумал я, – я просто сделаю заказ, подключенный к прокси-серверу и повторю запросы позже! »

Неа.

Как получается, Starbucks истекает свои токены доступа через час, так что вы не можете просто захватить свой телефон, используемый и держаться на него. Что создал некоторые ВЫЗОВЫ

Вход в систему

Конечная точка OAUTH, используемая приложением, проверяет три параметра, прежде чем предоставление токена:

  • Параметр строки запроса SIG ‘. Исследователь безопасности Ryan Pickren Выявлено Что это клиентский ключ, секрет клиентов и текущий момент времени Unix объединенные вместе и пробежать через MD5 Функция хеширования.
  • Параметр формы «DeviceFINGRINTPRINT». Это закодированный AES-256 AES-256 AES-256 AES-256 из различных атрибутов устройства. Он также регулярно меняется, поскольку текущее время, а также время работы устройства включены в отпечаток пальца.
  • HTTP HTTP ‘X-CBT’. Еще одна секретная строка закодирована на базе64.

Я начал пытаться построить некоторые из них сам. Я смог захватить ключ шифрования, используемый для создания устройстваFINGRINTPRINT, используя Jailbokon iPhone для расшифровки каркасов внутри приложения Starbucks. Посмотрев на рамки в Бункер Некоторое время я в конечном итоге смог отследить звонок на Apple Функция Cccrypt Отказ

Затем я связался с их рамками SBXDATA (рамки, которые я расшифровал ранее на телефоне Jailbokle) из быстрого приложения для манекена и использовал FishHook Чтобы переподгонять эту функцию для моей собственной реализации. Это позволило мне сбросить ключ и связанные с ними параметры на консоль:

Выяснение, как генерировать заголовок X-CBT ‘был аналогичным процессом. Ради краткости, я оставлю это для вас

Обертывание

Теперь, когда я смог подписать и отпечатывать свои запросы на логин, я сочетал все в небольшом модуле Node.js, который позволяет некоторым базовым функциям API Starbucks. Хорошая новость в том, что она (в основном) размещена здесь на Github !

Воила! Программный кофе.

О Тендиги

Мы – это мобильный дизайн и студия развития Расположен в Бруклине, Нью-Йорк Отказ Если вы хотите узнать, как мы можем применить наш наградный процесс стратегии, дизайна и инженерии на ваш бизнес, бросить нам строку в hello@tendigi.com Отказ Вы также можете связаться со мной напрямую в Nick@tendigi.com Отказ