Да, вслед за Реверсом 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-уведомление с данными о том, что, “ваша покупка загружена”, либо “не удалось совершить покупку” – пока остановился на этом.
Забавно, что все это дело работет через TCP with SSL/TLS, ВНЕЗАПНО, по mtalk.google.com (был в полной уверенности, что будет что-то на подобие XMPP), ан нет – protobuffers в base64 и что-то еще:
да будет первый комментарий
пока введешь капчу можно дьявола вызвать
ну ты млин, даешь…
капча дьяболо априори
про “mtalk.google.com”, на xda часто встречал советы для кастомных прошивок – если не работает маркет сбросьте gtalk. Вот и ответ зачем это