initial commit

This commit is contained in:
vance 2023-01-08 14:29:10 -08:00
commit 04698cf031
6 changed files with 1175 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/__pycache__
/.idea

4
README.md Normal file
View File

@ -0,0 +1,4 @@
# grindr-session
reverse engineered implementation of the grindr (the gay dating application) login negotiation for android devices
likely out of date and broken, but the android device checkin implementation may still work for legacy devices

123
bot.py Executable file
View File

@ -0,0 +1,123 @@
import hashlib
import os
import pickle
import geohash2
import requests
import simplejson
import gcm_re
import util
class GrindrSession(requests.Session):
def __init__(self, email, password):
super().__init__()
self.headers.update({
'User-Agent': 'grindr3/3.21.2.29102;29102;Unknown;Android 5.0.1',
})
if util.email_valid(email):
self.email = email
self.filename = hashlib.sha256(email.encode('utf-8')).hexdigest()
else:
raise ValueError("The email provided is invalid")
self.password = password
# Generated GCM device information
self.androidId = None
self.securityToken = None
# GCM Token returned
self.gcmToken = None
# Grindr specific information
self.profileId = None
self.sessionId = None
self.xmppToken = None
self.authToken = None
self._config = {
'androidId': None,
'securityToken': None,
'gcmToken': None,
'authToken': None,
}
if os.path.isfile(self.filename):
self._config = pickle.load(open(self.filename, 'rb'))
self.androidId = self._config['androidId']
self.securityToken = self._config['securityToken']
self.gcmToken = self._config['gcmToken']
self.authToken = self._config['authToken']
self._init_session()
else:
self._init_tokens()
def _init_tokens(self):
self.androidId, self.securityToken = gcm_re.get_android_id()
self.gcmToken = gcm_re.get_gcm_token(self.androidId, self.securityToken)
payload = {
'email': self.email,
'password': self.password,
'token': self.gcmToken,
}
response = self.post('https://grindr.mobi/v3/sessions', json=payload)
if response.status_code == 200:
login_data = simplejson.loads(response.text)
self.profileId = login_data['profileId']
self.sessionId = login_data['sessionId']
self.xmppToken = login_data['xmppToken']
self.authToken = login_data['authToken']
self.headers.update({
'Authorization': 'Grindr3 ' + self.sessionId
})
self._dump_config()
else:
raise ValueError('Invalid login')
def _init_session(self):
payload = {
'authToken': self.authToken,
'email': self.email,
'token': self.gcmToken,
}
response = self.post('https://grindr.mobi/v3/sessions', json=payload)
if response.status_code == 200:
login_data = simplejson.loads(response.text)
self.profileId = login_data['profileId']
self.sessionId = login_data['sessionId']
self.xmppToken = login_data['xmppToken']
self.headers.update({
'Authorization': 'Grindr3 ' + self.sessionId
})
else:
raise ValueError('Invalid login')
def _dump_config(self):
self._config['androidId'] = self.androidId
self._config['securityToken'] = self.securityToken
self._config['gcmToken'] = self.gcmToken
self._config['authToken'] = self.authToken
pickle.dump(self._config, open(self.filename, 'wb+'))
if __name__ == '__main__':
session = GrindrSession('', '') # email, password
response = session.get('https://grindr.mobi/v3/profile/taps')
print(response.text)
geohash = geohash2.encode(44.029821, -123.076826)
response = session.get('https://grindr.mobi/v3/locations/{}/profiles'.format(geohash))
data = simplejson.loads(response.text)
for profile in data['profiles']:
print(profile['displayName'])

968
checkin_pb2.py Executable file
View File

@ -0,0 +1,968 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: checkin.proto
import sys
_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor(
name='checkin.proto',
package='',
serialized_pb=_b(
'\n\rcheckin.proto\"\x91\x0c\n\x0e\x43heckinRequest\x12\x0c\n\x04imei\x18\x01 \x01(\t\x12\x11\n\tandroidId\x18\x02 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x03 \x01(\t\x12(\n\x07\x63heckin\x18\x04 \x02(\x0b\x32\x17.CheckinRequest.Checkin\x12\x14\n\x0c\x64\x65siredBuild\x18\x05 \x01(\t\x12\x0e\n\x06locale\x18\x06 \x01(\t\x12\x11\n\tloggingId\x18\x07 \x01(\x03\x12\x15\n\rmarketCheckin\x18\x08 \x01(\t\x12\x12\n\nmacAddress\x18\t \x03(\t\x12\x0c\n\x04meid\x18\n \x01(\t\x12\x15\n\raccountCookie\x18\x0b \x03(\t\x12\x10\n\x08timeZone\x18\x0c \x01(\t\x12\x15\n\rsecurityToken\x18\r \x01(\x06\x12\x0f\n\x07version\x18\x0e \x01(\x05\x12\x0f\n\x07otaCert\x18\x0f \x03(\t\x12\x0e\n\x06serial\x18\x10 \x01(\t\x12\x0b\n\x03\x65sn\x18\x11 \x01(\t\x12\x39\n\x13\x64\x65viceConfiguration\x18\x12 \x01(\x0b\x32\x1c.CheckinRequest.DeviceConfig\x12\x16\n\x0emacAddressType\x18\x13 \x03(\t\x12\x10\n\x08\x66ragment\x18\x14 \x02(\x05\x12\x10\n\x08userName\x18\x15 \x01(\t\x12\x18\n\x10userSerialNumber\x18\x16 \x01(\x05\x1a\x8f\x05\n\x07\x43heckin\x12,\n\x05\x62uild\x18\x01 \x02(\x0b\x32\x1d.CheckinRequest.Checkin.Build\x12\x15\n\rlastCheckinMs\x18\x02 \x01(\x03\x12,\n\x05\x65vent\x18\x03 \x03(\x0b\x32\x1d.CheckinRequest.Checkin.Event\x12/\n\x04stat\x18\x04 \x03(\x0b\x32!.CheckinRequest.Checkin.Statistic\x12\x16\n\x0erequestedGroup\x18\x05 \x03(\t\x12\x14\n\x0c\x63\x65llOperator\x18\x06 \x01(\t\x12\x13\n\x0bsimOperator\x18\x07 \x01(\t\x12\x0f\n\x07roaming\x18\x08 \x01(\t\x12\x12\n\nuserNumber\x18\t \x01(\x05\x1a\x8c\x02\n\x05\x42uild\x12\x13\n\x0b\x66ingerprint\x18\x01 \x01(\t\x12\x10\n\x08hardware\x18\x02 \x01(\t\x12\r\n\x05\x62rand\x18\x03 \x01(\t\x12\r\n\x05radio\x18\x04 \x01(\t\x12\x12\n\nbootloader\x18\x05 \x01(\t\x12\x10\n\x08\x63lientId\x18\x06 \x01(\t\x12\x0c\n\x04time\x18\x07 \x01(\x03\x12\x1a\n\x12packageVersionCode\x18\x08 \x01(\x05\x12\x0e\n\x06\x64\x65vice\x18\t \x01(\t\x12\x12\n\nsdkVersion\x18\n \x01(\x05\x12\r\n\x05model\x18\x0b \x01(\t\x12\x14\n\x0cmanufacturer\x18\x0c \x01(\t\x12\x0f\n\x07product\x18\r \x01(\t\x12\x14\n\x0cotaInstalled\x18\x0e \x01(\x08\x1a\x33\n\x05\x45vent\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12\x0e\n\x06timeMs\x18\x03 \x01(\x03\x1a\x34\n\tStatistic\x12\x0b\n\x03tag\x18\x01 \x02(\t\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\x12\x0b\n\x03sum\x18\x03 \x01(\x02\x1a\x8f\x03\n\x0c\x44\x65viceConfig\x12\x13\n\x0btouchScreen\x18\x01 \x01(\x05\x12\x14\n\x0ckeyboardType\x18\x02 \x01(\x05\x12\x12\n\nnavigation\x18\x03 \x01(\x05\x12\x14\n\x0cscreenLayout\x18\x04 \x01(\x05\x12\x17\n\x0fhasHardKeyboard\x18\x05 \x01(\x08\x12\x1c\n\x14hasFiveWayNavigation\x18\x06 \x01(\x08\x12\x12\n\ndensityDpi\x18\x07 \x01(\x05\x12\x13\n\x0bglEsVersion\x18\x08 \x01(\x05\x12\x15\n\rsharedLibrary\x18\t \x03(\t\x12\x18\n\x10\x61vailableFeature\x18\n \x03(\t\x12\x16\n\x0enativePlatform\x18\x0b \x03(\t\x12\x13\n\x0bwidthPixels\x18\x0c \x01(\x05\x12\x14\n\x0cheightPixels\x18\r \x01(\x05\x12\x0e\n\x06locale\x18\x0e \x03(\t\x12\x13\n\x0bglExtension\x18\x0f \x03(\t\x12\x13\n\x0b\x64\x65viceClass\x18\x10 \x01(\x05\x12\x1c\n\x14maxApkDownloadSizeMb\x18\x11 \x01(\x05\"\x92\x04\n\x0f\x43heckinResponse\x12\x0f\n\x07statsOk\x18\x01 \x01(\x08\x12\'\n\x06intent\x18\x02 \x03(\x0b\x32\x17.CheckinResponse.Intent\x12\x0e\n\x06timeMs\x18\x03 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x04 \x01(\t\x12\x32\n\x07setting\x18\x05 \x03(\x0b\x32!.CheckinResponse.GservicesSetting\x12\x10\n\x08marketOk\x18\x06 \x01(\x08\x12\x11\n\tandroidId\x18\x07 \x01(\x06\x12\x15\n\rsecurityToken\x18\x08 \x01(\x06\x12\x14\n\x0csettingsDiff\x18\t \x01(\x08\x12\x15\n\rdeleteSetting\x18\n \x03(\t\x12\x13\n\x0bversionInfo\x18\x0b \x01(\t\x12\x1d\n\x15\x64\x65viceDataVersionInfo\x18\x0c \x01(\t\x1a\xa2\x01\n\x06Intent\x12\x0e\n\x06\x61\x63tion\x18\x01 \x01(\t\x12\x0f\n\x07\x64\x61taUri\x18\x02 \x01(\t\x12\x10\n\x08mimeType\x18\x03 \x01(\t\x12\x11\n\tjavaClass\x18\x04 \x01(\t\x12,\n\x05\x65xtra\x18\x05 \x03(\x0b\x32\x1d.CheckinResponse.Intent.Extra\x1a$\n\x05\x45xtra\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\r\n\x05value\x18\x07 \x01(\t\x1a/\n\x10GservicesSetting\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\r\n\x05value\x18\x02 \x01(\x0c\x42&\n\x16org.microg.gms.checkinB\x0c\x43heckinProto')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
_CHECKINREQUEST_CHECKIN_BUILD = _descriptor.Descriptor(
name='Build',
full_name='CheckinRequest.Checkin.Build',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='fingerprint', full_name='CheckinRequest.Checkin.Build.fingerprint', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='hardware', full_name='CheckinRequest.Checkin.Build.hardware', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='brand', full_name='CheckinRequest.Checkin.Build.brand', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='radio', full_name='CheckinRequest.Checkin.Build.radio', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='bootloader', full_name='CheckinRequest.Checkin.Build.bootloader', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='clientId', full_name='CheckinRequest.Checkin.Build.clientId', index=5,
number=6, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='time', full_name='CheckinRequest.Checkin.Build.time', index=6,
number=7, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='packageVersionCode', full_name='CheckinRequest.Checkin.Build.packageVersionCode', index=7,
number=8, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='device', full_name='CheckinRequest.Checkin.Build.device', index=8,
number=9, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='sdkVersion', full_name='CheckinRequest.Checkin.Build.sdkVersion', index=9,
number=10, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='model', full_name='CheckinRequest.Checkin.Build.model', index=10,
number=11, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='manufacturer', full_name='CheckinRequest.Checkin.Build.manufacturer', index=11,
number=12, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='product', full_name='CheckinRequest.Checkin.Build.product', index=12,
number=13, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='otaInstalled', full_name='CheckinRequest.Checkin.Build.otaInstalled', index=13,
number=14, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=794,
serialized_end=1062,
)
_CHECKINREQUEST_CHECKIN_EVENT = _descriptor.Descriptor(
name='Event',
full_name='CheckinRequest.Checkin.Event',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='tag', full_name='CheckinRequest.Checkin.Event.tag', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='CheckinRequest.Checkin.Event.value', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='timeMs', full_name='CheckinRequest.Checkin.Event.timeMs', index=2,
number=3, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=1064,
serialized_end=1115,
)
_CHECKINREQUEST_CHECKIN_STATISTIC = _descriptor.Descriptor(
name='Statistic',
full_name='CheckinRequest.Checkin.Statistic',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='tag', full_name='CheckinRequest.Checkin.Statistic.tag', index=0,
number=1, type=9, cpp_type=9, label=2,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='count', full_name='CheckinRequest.Checkin.Statistic.count', index=1,
number=2, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='sum', full_name='CheckinRequest.Checkin.Statistic.sum', index=2,
number=3, type=2, cpp_type=6, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=1117,
serialized_end=1169,
)
_CHECKINREQUEST_CHECKIN = _descriptor.Descriptor(
name='Checkin',
full_name='CheckinRequest.Checkin',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='build', full_name='CheckinRequest.Checkin.build', index=0,
number=1, type=11, cpp_type=10, label=2,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='lastCheckinMs', full_name='CheckinRequest.Checkin.lastCheckinMs', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='event', full_name='CheckinRequest.Checkin.event', index=2,
number=3, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='stat', full_name='CheckinRequest.Checkin.stat', index=3,
number=4, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='requestedGroup', full_name='CheckinRequest.Checkin.requestedGroup', index=4,
number=5, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='cellOperator', full_name='CheckinRequest.Checkin.cellOperator', index=5,
number=6, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='simOperator', full_name='CheckinRequest.Checkin.simOperator', index=6,
number=7, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='roaming', full_name='CheckinRequest.Checkin.roaming', index=7,
number=8, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='userNumber', full_name='CheckinRequest.Checkin.userNumber', index=8,
number=9, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[_CHECKINREQUEST_CHECKIN_BUILD, _CHECKINREQUEST_CHECKIN_EVENT, _CHECKINREQUEST_CHECKIN_STATISTIC, ],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=514,
serialized_end=1169,
)
_CHECKINREQUEST_DEVICECONFIG = _descriptor.Descriptor(
name='DeviceConfig',
full_name='CheckinRequest.DeviceConfig',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='touchScreen', full_name='CheckinRequest.DeviceConfig.touchScreen', index=0,
number=1, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='keyboardType', full_name='CheckinRequest.DeviceConfig.keyboardType', index=1,
number=2, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='navigation', full_name='CheckinRequest.DeviceConfig.navigation', index=2,
number=3, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='screenLayout', full_name='CheckinRequest.DeviceConfig.screenLayout', index=3,
number=4, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='hasHardKeyboard', full_name='CheckinRequest.DeviceConfig.hasHardKeyboard', index=4,
number=5, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='hasFiveWayNavigation', full_name='CheckinRequest.DeviceConfig.hasFiveWayNavigation', index=5,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='densityDpi', full_name='CheckinRequest.DeviceConfig.densityDpi', index=6,
number=7, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='glEsVersion', full_name='CheckinRequest.DeviceConfig.glEsVersion', index=7,
number=8, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='sharedLibrary', full_name='CheckinRequest.DeviceConfig.sharedLibrary', index=8,
number=9, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='availableFeature', full_name='CheckinRequest.DeviceConfig.availableFeature', index=9,
number=10, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='nativePlatform', full_name='CheckinRequest.DeviceConfig.nativePlatform', index=10,
number=11, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='widthPixels', full_name='CheckinRequest.DeviceConfig.widthPixels', index=11,
number=12, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='heightPixels', full_name='CheckinRequest.DeviceConfig.heightPixels', index=12,
number=13, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='locale', full_name='CheckinRequest.DeviceConfig.locale', index=13,
number=14, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='glExtension', full_name='CheckinRequest.DeviceConfig.glExtension', index=14,
number=15, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='deviceClass', full_name='CheckinRequest.DeviceConfig.deviceClass', index=15,
number=16, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='maxApkDownloadSizeMb', full_name='CheckinRequest.DeviceConfig.maxApkDownloadSizeMb', index=16,
number=17, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=1172,
serialized_end=1571,
)
_CHECKINREQUEST = _descriptor.Descriptor(
name='CheckinRequest',
full_name='CheckinRequest',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='imei', full_name='CheckinRequest.imei', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='androidId', full_name='CheckinRequest.androidId', index=1,
number=2, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='digest', full_name='CheckinRequest.digest', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='checkin', full_name='CheckinRequest.checkin', index=3,
number=4, type=11, cpp_type=10, label=2,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='desiredBuild', full_name='CheckinRequest.desiredBuild', index=4,
number=5, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='locale', full_name='CheckinRequest.locale', index=5,
number=6, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='loggingId', full_name='CheckinRequest.loggingId', index=6,
number=7, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='marketCheckin', full_name='CheckinRequest.marketCheckin', index=7,
number=8, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='macAddress', full_name='CheckinRequest.macAddress', index=8,
number=9, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='meid', full_name='CheckinRequest.meid', index=9,
number=10, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='accountCookie', full_name='CheckinRequest.accountCookie', index=10,
number=11, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='timeZone', full_name='CheckinRequest.timeZone', index=11,
number=12, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='securityToken', full_name='CheckinRequest.securityToken', index=12,
number=13, type=6, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='version', full_name='CheckinRequest.version', index=13,
number=14, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='otaCert', full_name='CheckinRequest.otaCert', index=14,
number=15, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='serial', full_name='CheckinRequest.serial', index=15,
number=16, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='esn', full_name='CheckinRequest.esn', index=16,
number=17, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='deviceConfiguration', full_name='CheckinRequest.deviceConfiguration', index=17,
number=18, type=11, cpp_type=10, label=1,
has_default_value=False, default_value=None,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='macAddressType', full_name='CheckinRequest.macAddressType', index=18,
number=19, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='fragment', full_name='CheckinRequest.fragment', index=19,
number=20, type=5, cpp_type=1, label=2,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='userName', full_name='CheckinRequest.userName', index=20,
number=21, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='userSerialNumber', full_name='CheckinRequest.userSerialNumber', index=21,
number=22, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[_CHECKINREQUEST_CHECKIN, _CHECKINREQUEST_DEVICECONFIG, ],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=18,
serialized_end=1571,
)
_CHECKINRESPONSE_INTENT_EXTRA = _descriptor.Descriptor(
name='Extra',
full_name='CheckinResponse.Intent.Extra',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='CheckinResponse.Intent.Extra.name', index=0,
number=6, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='CheckinResponse.Intent.Extra.value', index=1,
number=7, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=2019,
serialized_end=2055,
)
_CHECKINRESPONSE_INTENT = _descriptor.Descriptor(
name='Intent',
full_name='CheckinResponse.Intent',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='action', full_name='CheckinResponse.Intent.action', index=0,
number=1, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='dataUri', full_name='CheckinResponse.Intent.dataUri', index=1,
number=2, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='mimeType', full_name='CheckinResponse.Intent.mimeType', index=2,
number=3, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='javaClass', full_name='CheckinResponse.Intent.javaClass', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='extra', full_name='CheckinResponse.Intent.extra', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[_CHECKINRESPONSE_INTENT_EXTRA, ],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=1893,
serialized_end=2055,
)
_CHECKINRESPONSE_GSERVICESSETTING = _descriptor.Descriptor(
name='GservicesSetting',
full_name='CheckinResponse.GservicesSetting',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='name', full_name='CheckinResponse.GservicesSetting.name', index=0,
number=1, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='value', full_name='CheckinResponse.GservicesSetting.value', index=1,
number=2, type=12, cpp_type=9, label=1,
has_default_value=False, default_value=_b(""),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=2057,
serialized_end=2104,
)
_CHECKINRESPONSE = _descriptor.Descriptor(
name='CheckinResponse',
full_name='CheckinResponse',
filename=None,
file=DESCRIPTOR,
containing_type=None,
fields=[
_descriptor.FieldDescriptor(
name='statsOk', full_name='CheckinResponse.statsOk', index=0,
number=1, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='intent', full_name='CheckinResponse.intent', index=1,
number=2, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='timeMs', full_name='CheckinResponse.timeMs', index=2,
number=3, type=3, cpp_type=2, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='digest', full_name='CheckinResponse.digest', index=3,
number=4, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='setting', full_name='CheckinResponse.setting', index=4,
number=5, type=11, cpp_type=10, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='marketOk', full_name='CheckinResponse.marketOk', index=5,
number=6, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='androidId', full_name='CheckinResponse.androidId', index=6,
number=7, type=6, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='securityToken', full_name='CheckinResponse.securityToken', index=7,
number=8, type=6, cpp_type=4, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='settingsDiff', full_name='CheckinResponse.settingsDiff', index=8,
number=9, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='deleteSetting', full_name='CheckinResponse.deleteSetting', index=9,
number=10, type=9, cpp_type=9, label=3,
has_default_value=False, default_value=[],
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='versionInfo', full_name='CheckinResponse.versionInfo', index=10,
number=11, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='deviceDataVersionInfo', full_name='CheckinResponse.deviceDataVersionInfo', index=11,
number=12, type=9, cpp_type=9, label=1,
has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
nested_types=[_CHECKINRESPONSE_INTENT, _CHECKINRESPONSE_GSERVICESSETTING, ],
enum_types=[
],
options=None,
is_extendable=False,
extension_ranges=[],
oneofs=[
],
serialized_start=1574,
serialized_end=2104,
)
_CHECKINREQUEST_CHECKIN_BUILD.containing_type = _CHECKINREQUEST_CHECKIN
_CHECKINREQUEST_CHECKIN_EVENT.containing_type = _CHECKINREQUEST_CHECKIN
_CHECKINREQUEST_CHECKIN_STATISTIC.containing_type = _CHECKINREQUEST_CHECKIN
_CHECKINREQUEST_CHECKIN.fields_by_name['build'].message_type = _CHECKINREQUEST_CHECKIN_BUILD
_CHECKINREQUEST_CHECKIN.fields_by_name['event'].message_type = _CHECKINREQUEST_CHECKIN_EVENT
_CHECKINREQUEST_CHECKIN.fields_by_name['stat'].message_type = _CHECKINREQUEST_CHECKIN_STATISTIC
_CHECKINREQUEST_CHECKIN.containing_type = _CHECKINREQUEST
_CHECKINREQUEST_DEVICECONFIG.containing_type = _CHECKINREQUEST
_CHECKINREQUEST.fields_by_name['checkin'].message_type = _CHECKINREQUEST_CHECKIN
_CHECKINREQUEST.fields_by_name['deviceConfiguration'].message_type = _CHECKINREQUEST_DEVICECONFIG
_CHECKINRESPONSE_INTENT_EXTRA.containing_type = _CHECKINRESPONSE_INTENT
_CHECKINRESPONSE_INTENT.fields_by_name['extra'].message_type = _CHECKINRESPONSE_INTENT_EXTRA
_CHECKINRESPONSE_INTENT.containing_type = _CHECKINRESPONSE
_CHECKINRESPONSE_GSERVICESSETTING.containing_type = _CHECKINRESPONSE
_CHECKINRESPONSE.fields_by_name['intent'].message_type = _CHECKINRESPONSE_INTENT
_CHECKINRESPONSE.fields_by_name['setting'].message_type = _CHECKINRESPONSE_GSERVICESSETTING
DESCRIPTOR.message_types_by_name['CheckinRequest'] = _CHECKINREQUEST
DESCRIPTOR.message_types_by_name['CheckinResponse'] = _CHECKINRESPONSE
CheckinRequest = _reflection.GeneratedProtocolMessageType('CheckinRequest', (_message.Message,), dict(
Checkin=_reflection.GeneratedProtocolMessageType('Checkin', (_message.Message,), dict(
Build=_reflection.GeneratedProtocolMessageType('Build', (_message.Message,), dict(
DESCRIPTOR=_CHECKINREQUEST_CHECKIN_BUILD,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest.Checkin.Build)
))
,
Event=_reflection.GeneratedProtocolMessageType('Event', (_message.Message,), dict(
DESCRIPTOR=_CHECKINREQUEST_CHECKIN_EVENT,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest.Checkin.Event)
))
,
Statistic=_reflection.GeneratedProtocolMessageType('Statistic', (_message.Message,), dict(
DESCRIPTOR=_CHECKINREQUEST_CHECKIN_STATISTIC,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest.Checkin.Statistic)
))
,
DESCRIPTOR=_CHECKINREQUEST_CHECKIN,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest.Checkin)
))
,
DeviceConfig=_reflection.GeneratedProtocolMessageType('DeviceConfig', (_message.Message,), dict(
DESCRIPTOR=_CHECKINREQUEST_DEVICECONFIG,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest.DeviceConfig)
))
,
DESCRIPTOR=_CHECKINREQUEST,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinRequest)
))
_sym_db.RegisterMessage(CheckinRequest)
_sym_db.RegisterMessage(CheckinRequest.Checkin)
_sym_db.RegisterMessage(CheckinRequest.Checkin.Build)
_sym_db.RegisterMessage(CheckinRequest.Checkin.Event)
_sym_db.RegisterMessage(CheckinRequest.Checkin.Statistic)
_sym_db.RegisterMessage(CheckinRequest.DeviceConfig)
CheckinResponse = _reflection.GeneratedProtocolMessageType('CheckinResponse', (_message.Message,), dict(
Intent=_reflection.GeneratedProtocolMessageType('Intent', (_message.Message,), dict(
Extra=_reflection.GeneratedProtocolMessageType('Extra', (_message.Message,), dict(
DESCRIPTOR=_CHECKINRESPONSE_INTENT_EXTRA,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinResponse.Intent.Extra)
))
,
DESCRIPTOR=_CHECKINRESPONSE_INTENT,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinResponse.Intent)
))
,
GservicesSetting=_reflection.GeneratedProtocolMessageType('GservicesSetting', (_message.Message,), dict(
DESCRIPTOR=_CHECKINRESPONSE_GSERVICESSETTING,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinResponse.GservicesSetting)
))
,
DESCRIPTOR=_CHECKINRESPONSE,
__module__='checkin_pb2'
# @@protoc_insertion_point(class_scope:CheckinResponse)
))
_sym_db.RegisterMessage(CheckinResponse)
_sym_db.RegisterMessage(CheckinResponse.Intent)
_sym_db.RegisterMessage(CheckinResponse.Intent.Extra)
_sym_db.RegisterMessage(CheckinResponse.GservicesSetting)
DESCRIPTOR.has_options = True
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(),
_b('\n\026org.microg.gms.checkinB\014CheckinProto'))
# @@protoc_insertion_point(module_scope)

70
gcm_re.py Executable file
View File

@ -0,0 +1,70 @@
import random
import requests
import checkin_pb2
def get_android_id():
# most minimal checkin request possible
cr = checkin_pb2.CheckinRequest()
cr.androidId = 0
cr.checkin.build.fingerprint = "google/razor/flo:5.0.1/LRX22C/1602158:user/release-keys"
cr.checkin.build.hardware = "flo"
cr.checkin.build.brand = "google"
cr.checkin.build.radio = "FLO-04.04"
cr.checkin.build.clientId = "android-google"
cr.checkin.build.sdkVersion = 21
cr.checkin.lastCheckinMs = 0
cr.locale = "en"
cr.macAddress.append("".join(random.choice("ABCDEF0123456789") for _ in range(12)))
cr.meid = "".join(random.choice("0123456789") for _ in range(15))
cr.timeZone = "America/Los_Angeles"
cr.version = 3
cr.otaCert.append("--no-output--")
cr.macAddressType.append("wifi")
cr.fragment = 0
cr.userSerialNumber = 0
data = cr.SerializeToString()
headers = {
"Content-type": "application/x-protobuffer",
"Accept-Encoding": "gzip",
"User-Agent": "Android-Checkin/2.0 (vbox86p JLS36G); gzip",
}
r = requests.post("https://android.clients.google.com/checkin", headers=headers, data=data)
if r.status_code == 200:
cresp = checkin_pb2.CheckinResponse()
cresp.ParseFromString(r.content)
android_id = cresp.androidId
security_token = cresp.securityToken
return android_id, security_token
else:
print(r.text)
def get_gcm_token(android_id, security_token):
headers = {"Authorization": "AidLogin {}:{}".format(android_id, security_token)}
data = {
'app': 'com.grindrapp.android',
'sender': '1036042917246',
'device': str(android_id),
# 'cert': 'ce1f7e703ccca26d2c4ef3e48fd5ae0ea4cb1c29',
# 'app_ver': '1001800',
# 'gcm_ver': '11055448',
# 'X-appid': '$randomString',
'X-scope': 'GCM',
# 'X-app_ver_name': '4.48.0',
}
r = requests.post("https://android.clients.google.com/c2dm/register3", data=data, headers=headers)
if r.status_code == 200:
return r.text.split('=')[1]
else:
print(r.status_code, r.text)
if __name__ == '__main__':
android_id, security_token = get_android_id()
print(android_id, security_token)
print(get_gcm_token(android_id, security_token))

8
util.py Executable file
View File

@ -0,0 +1,8 @@
import re
def email_valid(email):
if re.match(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", email):
return True
else:
return False