def _authenticate5(self, result): trace('_authenticate5 {}'.format(result)) result = result['result'] if 'xsrfToken' not in result: critical('Authentication with Ingress severs failed for unknown reason') self.xsrf_token = str(result['xsrfToken']) self.player_nickname = result['nickname'] self.player_guid = result['playerEntity'][0] self.team = result['playerEntity'][2]['controllingTeam']['team'] self.ap = result['playerEntity'][2]['playerPersonal']['ap'] self.level = result['playerEntity'][2]['playerPersonal']['clientLevel'] start_date = result['storage']['mission_complete_0'] self.start_date = datetime.datetime.fromtimestamp(int(start_date.split(':delim:')[1])/1000) debug('XSRF Token: {}'.format(self.xsrf_token)) debug('Player GUID: {}'.format(self.player_guid)) info('Player nickname: {}'.format(self.player_nickname)) info('Faction: {}'.format(self.team)) info('AP: {}'.format(self.ap)) info('Level: {}'.format(self.level)) info('Start Date: {}'.format(self.start_date)) debug('Player info: {}'.format(result)) with open(os.path.expanduser("~/{}_config.cfg".format(self.player_nickname)),"w") as file: json.dump(result, file, indent=1) self.new_version = versionCheck(result['serverVersion'], self.player_nickname) self._process_deferred_api_requests()
def _authenticate2(self, result, code): if code == 200: try: self.auth_token = result['Auth'] except KeyError: critical('Authentication failed: Bad Response') elif code == 403: error = result['Error'] if error == 'BadAuthentication': critical('Authentication failed: Username or password wrong') elif error == 'NotVerified': critical( 'Authentication failed: Account email address has not been verified' ) elif error == 'TermsNotAgreed': critical( 'Authentication failed: User has not agreed to Googles terms of service' ) elif error == 'CaptchaRequired': critical('Authentication failed: CAPTCHA required') elif error == 'AccountDeleted': critical( 'Authentication failed: User account has been deleted') elif error == 'AccountDisabled': critical( 'Authentication failed: User account has been disabled') elif error == 'ServiceDisabled': critical('Authentication failed: Service disabled') elif error == 'ServiceUnavailable': critical('Authentication failed: Service unavailable') else: critical('Authentication failed: Unknown reason') else: critical('Authentication failed: Bad response') trace('_authenticate2 {}'.format(self.auth_token)) d = self.agent.request( 'GET', self.URLS.GAME_API + self.PATHS.LOGIN + '?' + urllib.urlencode({'auth': self.auth_token}), Headers({ 'User-Agent': ['Nemesis (gzip)'], 'Accept-Charset': ['utf-8'] }), None) d.addCallback(self._authenticate3) d.addErrback(self.err)
def _authenticate4(self, response): trace('{}'.format(response.code)) if response.code == 200: finished = defer.Deferred() finished.addCallback(self._authenticate5) finished.addErrback(self.err) jp = b07.utils.JsonProtocol(finished) response.deliverBody(jp) else: critical('Got response code {} after attempting handshake!'.format(response.code))
def _authenticate4(self, response): trace('_authenticate4 {}'.format(response.code)) if response.code == 200: finished = defer.Deferred() finished.addCallback(self._authenticate5) finished.addErrback(self.err) jp = b07.utils.JsonProtocol(finished) response.deliverBody(jp) else: critical('Got response code {} after attempting handshake!'.format( response.code))
def _authenticate3(self, response): trace('{}'.format(response.code)) for cookie in self.cookiejar: trace('{}'.format(cookie)) urlParams = {'json' : json.dumps(self.HANDSHAKE_PARAMS)} d = self.agent.request('GET', self.URLS.GAME_API + self.PATHS.API.HANDSHAKE + '?' + urllib.urlencode({'json': json.dumps(self.HANDSHAKE_PARAMS)}), Headers({'User-Agent' : ['Nemesis (gzip)'], 'Accept-Charset': ['utf-8'], 'Cache-Control': ['max-age=0']}), None) d.addCallback(self._authenticate4) d.addErrback(self.err)
def _authenticate2(self, result, code): if code == 200: try: self.auth_token = result['Auth'] except KeyError: critical('Authentication failed: Bad Response') elif code == 403: error = result['Error'] if error == 'BadAuthentication': critical('Authentication failed: Username or password wrong') elif error == 'NotVerified': critical('Authentication failed: Account email address has not been verified') elif error == 'TermsNotAgreed': critical('Authentication failed: User has not agreed to Googles terms of service') elif error == 'CaptchaRequired': critical('Authentication failed: CAPTCHA required') elif error == 'AccountDeleted': critical('Authentication failed: User account has been deleted') elif error == 'AccountDisabled': critical('Authentication failed: User account has been disabled') elif error == 'ServiceDisabled': critical('Authentication failed: Service disabled') elif error == 'ServiceUnavailable': critical('Authentication failed: Service unavailable') else: critical('Authentication failed: Unknown reason') else: critical('Authentication failed: Bad response') trace('_authenticate2 {}'.format(self.auth_token)) d = self.agent.request('GET', self.URLS.GAME_API + self.PATHS.LOGIN + '?' + urllib.urlencode({'auth' : self.auth_token}), Headers({'User-Agent' : ['Nemesis (gzip)'], 'Accept-Charset': ['utf-8']}), None) d.addCallback(self._authenticate3) d.addErrback(self.err)
def _authenticate3(self, response): trace('_authenticate3 {}'.format(response.code)) for cookie in self.cookiejar: trace('_authenticate3 {}'.format(cookie)) urlParams = {'json': json.dumps(self.HANDSHAKE_PARAMS)} d = self.agent.request( 'GET', self.URLS.GAME_API + self.PATHS.API.HANDSHAKE + '?' + urllib.urlencode({'json': json.dumps(self.HANDSHAKE_PARAMS)}), Headers({ 'User-Agent': ['Nemesis (gzip)'], 'Accept-Charset': ['utf-8'], 'Cache-Control': ['max-age=0'] }), None) d.addCallback(self._authenticate4) d.addErrback(self.err)
def _authenticate0(self): auth_params = {'Email': self.email, 'Passwd': self.password, 'service': 'ah', 'source': 'IngressBot', 'accountType': 'HOSTED_OR_GOOGLE'} body = b07.utils.StringProducer(urllib.urlencode(auth_params)) trace('_authenticate0 {}'.format(urllib.urlencode(auth_params))) d = self.agent.request('POST', self.URLS.CLIENT_LOGIN, Headers({'User-Agent' : ['Nemesis (gzip)'], 'Content-Type': ['application/x-www-form-urlencoded'], 'Accept-Charset': ['utf-8']}), body) d.addCallback(self._authenticate1) d.addErrback(self.err)
def _authenticate0(self): auth_params = { 'Email': self.email, 'Passwd': self.password, 'service': 'ah', 'source': 'IngressBot', 'accountType': 'HOSTED_OR_GOOGLE' } body = b07.utils.StringProducer(urllib.urlencode(auth_params)) trace('_authenticate0 {}'.format(urllib.urlencode(auth_params))) d = self.agent.request( 'POST', self.URLS.CLIENT_LOGIN, Headers({ 'User-Agent': ['Nemesis (gzip)'], 'Content-Type': ['application/x-www-form-urlencoded'], 'Accept-Charset': ['utf-8'] }), body) d.addCallback(self._authenticate1) d.addErrback(self.err)
def _authenticate5(self, result): trace('_authenticate5 {}'.format(result)) result = result['result'] if 'xsrfToken' not in result: critical( 'Authentication with Ingress severs failed for unknown reason') self.xsrf_token = str(result['xsrfToken']) self.player_nickname = result['nickname'] self.player_guid = result['playerEntity'][0] self.team = result['playerEntity'][2]['controllingTeam']['team'] self.ap = result['playerEntity'][2]['playerPersonal']['ap'] self.level = result['playerEntity'][2]['playerPersonal']['clientLevel'] start_date = result['storage']['mission_complete_0'] self.start_date = datetime.datetime.fromtimestamp( int(start_date.split(':delim:')[1]) / 1000) debug('XSRF Token: {}'.format(self.xsrf_token)) debug('Player GUID: {}'.format(self.player_guid)) info('Player nickname: {}'.format(self.player_nickname)) info('Faction: {}'.format(self.team)) info('AP: {}'.format(self.ap)) info('Level: {}'.format(self.level)) info('Start Date: {}'.format(self.start_date)) debug('Player info: {}'.format(result)) with open( os.path.expanduser("~/{}_config.cfg".format( self.player_nickname)), "w") as file: json.dump(result, file, indent=1) self.new_version = versionCheck(result['serverVersion'], self.player_nickname) self._process_deferred_api_requests()
def __init__(self, body): self.body = body self.length = len(body) trace('length: {}'.format(self.length))
def startProducing(self, consumer): consumer.write(self.body) trace('wrote body') return defer.succeed(None)
def connectionLost(self, reason): trace('Finished receiving body: {}'.format(reason.getErrorMessage())) self.finished.callback( dict(x.split("=") for x in self.buffer.split("\n") if x))
def connectionLost(self, reason): trace('Finished receiving body: {}'.format(reason.getErrorMessage())) self.finished.callback(json.loads(self.buffer.replace('while(1);', '')))
def dataReceived(self, data): trace('{}'.format(data)) request = json.loads(data) if request['action'] == 'list': if request['what'] == 'portals': self.sendPortalList()
def connectionLost(self, reason): trace('Finished receiving body: {}'.format(reason.getErrorMessage())) self.finished.callback(dict(x.split("=") for x in self.buffer.split("\n") if x))