Заранее извиняюсь, что довольно таки мало технических подробностей про запросы/ответы, пока что сам разбираюсь.
Да, вслед за Реверсом AppStore, решил я взяться за то же самое, но с Google. Google Play Store. (как Бонд. Джеймс Бонд).
Весело то, что у гугла все просто и секъюрно. Юзаются подписи, nonce'ы. А также сервис разделяется на две составляющие — push и обычную. Все запаковано во что бы вы думали? Правильно — protobuffers! It's hard to decode, ибо формат бинарного сообщения сам себя не описывает, много эвристики и веселья.
Забавно, однако, что, как и в Apple, ВНЕЗАПНО, плевали они на стандарты (или я неправильно понял?) — gzip отдается плейнтекстом/binary — в protobuffers, а вот binary отдается в… gzip!
Добро пожаловать под кат.
Покупка проходит оченьлегко и непринужденно сложно.
Первое —
Второе —
Третье —
Четвертое —
Пятое —
Шестое- запрос к
Также не ясно, почему запросы идут то к
+ большой брат следит за тобой! Переодически уходят запросы на
Вместе с этим приходит push-уведомление с данными о том, что, «ваша покупка загружена», либо «не удалось совершить покупку» — пока остановился на этом. А без уведомления ничего не работает. Еще одна степень защиты, однако.
Забавно, что все это дело (push) работет через TCP with SSL/TLS (уважаю), ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет — protobuffers в base64 и что-то еще:
PS:
Удалось уже сэмулировать и вполне работает покупка восстанавливаемых покупок, но очень нестабильно. Если хотите как-то помочь, составить, например, .proto файл для ответов маркета — добро пожаловать в личку.
PSS:
Я работаю не один, мне помогает человек с ником madkite, не знаю, есть ли он на хабре. По ходу нет.
Да, вслед за Реверсом AppStore, решил я взяться за то же самое, но с Google. Google Play Store. (как Бонд. Джеймс Бонд).
Весело то, что у гугла все просто и секъюрно. Юзаются подписи, nonce'ы. А также сервис разделяется на две составляющие — push и обычную. Все запаковано во что бы вы думали? Правильно — protobuffers! It's hard to decode, ибо формат бинарного сообщения сам себя не описывает, много эвристики и веселья.
Забавно, однако, что, как и в Apple, ВНЕЗАПНО, плевали они на стандарты (или я неправильно понял?) — gzip отдается плейнтекстом/binary — в protobuffers, а вот binary отдается в… gzip!
Добро пожаловать под кат.
Покупка проходит очень
Первое —
/fdfe/toc
— выдает данные о Terms&Conditions маркета и другую обязательную чушь.Второе —
/fdfe/purchase
или /market/api/ApiRequest
— получить данные о покупке (та кнопка «купить» в маркете)Третье —
/fdfe/completePurchase
— выполнить собственно покупкуЧетвертое —
/fdfe/purchaseStatus
или /market/api/ApiRequest
— проверить статус покупки — получить nonce и прочие параметры о покупке в jsonПятое —
/market/api/ApiRequest
— получение Nonce, деталей покупкиШестое- запрос к
/market/api/ApiRequest
и получение какой-то интересной строки типа ‹ г bе`PxБОі‰‰ эњ
— я не понял, что это.Также не ясно, почему запросы идут то к
/market/api/ApiRequest
, то к /fdfe/*
при покупке. Может я попал под тихую смену протоколов?+ большой брат следит за тобой! Переодически уходят запросы на
/fdfe/log
:Вместе с этим приходит push-уведомление с данными о том, что, «ваша покупка загружена», либо «не удалось совершить покупку» — пока остановился на этом. А без уведомления ничего не работает. Еще одна степень защиты, однако.
Забавно, что все это дело (push) работет через TCP with SSL/TLS (уважаю), ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет — protobuffers в base64 и что-то еще:
To be continued... (если меня, конечно, корпорация добра не забанит)
PS:
Удалось уже сэмулировать и вполне работает покупка восстанавливаемых покупок, но очень нестабильно. Если хотите как-то помочь, составить, например, .proto файл для ответов маркета — добро пожаловать в личку.
PSS:
Я работаю не один, мне помогает человек с ником madkite, не знаю, есть ли он на хабре. По ходу нет.