def get_web_session_cookies(self): """Get web authentication cookies via WebAPI's ``AuthenticateUser`` .. note:: A session is only valid during the current steam session. :return: dict with authentication cookies :rtype: :class:`dict`, :class:`None` """ if not self.logged_on: return None resp = self.send_job_and_wait(MsgProto(EMsg.ClientRequestWebAPIAuthenticateUserNonce), timeout=5) if resp is None: return None skey, ekey = generate_session_key() data = { 'steamid': self.steam_id, 'sessionkey': ekey, 'encrypted_loginkey': symmetric_encrypt(resp.webapi_authenticate_user_nonce.encode('ascii'), skey), } try: resp = webapi.post('ISteamUserAuth', 'AuthenticateUser', 1, params=data) except Exception as exp: self._logger.debug("get_web_session_cookies error: %s" % str(exp)) return None return { 'steamLogin': resp['authenticateuser']['token'], 'steamLoginSecure': resp['authenticateuser']['tokensecure'], }
def send(self, message): """ Send a message :param message: a message instance :type message: :class:`steam.core.msg.Msg`, :class:`steam.core.msg.MsgProto` """ if not isinstance(message, (Msg, MsgProto)): raise ValueError("Expected Msg or MsgProto, got %s" % message) if self.steam_id: message.steamID = self.steam_id if self.session_id: message.sessionID = self.session_id if self.verbose_debug: self._LOG.debug("Outgoing: %s\n%s" % (repr(message), str(message))) else: self._LOG.debug("Outgoing: %s", repr(message)) data = message.serialize() if self.channel_key: if self.channel_hmac: data = crypto.symmetric_encrypt_HMAC(data, self.channel_key, self.channel_hmac) else: data = crypto.symmetric_encrypt(data, self.channel_key) self.connection.put_message(data)
def send(self, message): """ Send a message :param message: a message instance :type message: :class:`steam.core.msg.Msg`, :class:`steam.core.msg.MsgProto` """ if not isinstance(message, (Msg, MsgProto)): raise ValueError("Expected Msg or MsgProto, got %s" % message) if self.steam_id: message.steamID = self.steam_id if self.session_id: message.sessionID = self.session_id if self.verbose_debug: self._LOG.debug("Outgoing: %s\n%s" % (repr(message), str(message))) else: self._LOG.debug("Outgoing: %s", repr(message)) data = message.serialize() if self.channel_key: if self.channel_hmac: data = crypto.symmetric_encrypt_HMAC(data, self.channel_key, self.channel_hmac) else: data = crypto.symmetric_encrypt(data, self.channel_key) self.connection.put_message(data)
def get_web_session_cookies(self): """Get web authentication cookies via WebAPI's ``AuthenticateUser`` .. note:: A session is only valid during the current steam session. :return: dict with authentication cookies :rtype: :class:`dict`, :class:`None` """ if not self.logged_on: return None skey, ekey = generate_session_key() data = { 'steamid': self.steam_id, 'sessionkey': ekey, 'encrypted_loginkey': symmetric_encrypt(self.webapi_authenticate_user_nonce, skey), } try: resp = webapi.post('ISteamUserAuth', 'AuthenticateUser', 1, params=data) except Exception as exp: self._logger.debug("get_web_session_cookies error: %s" % str(exp)) return None return { 'sessionid': hexlify(sha1_hash(random_bytes(32))), 'steamLogin': resp['authenticateuser']['token'], 'steamLoginSecure': resp['authenticateuser']['tokensecure'], }
def test_encryption_legacy(self): message = b'My secret message' key = b'9' * 32 cyphertext = crypto.symmetric_encrypt(message, key) dmessage = crypto.symmetric_decrypt(cyphertext, key) self.assertEqual(message, dmessage)
def test_encryption_legacy(self): message = b'My secret message' key = b'9' * 32 cyphertext = crypto.symmetric_encrypt(message, key) dmessage = crypto.symmetric_decrypt(cyphertext, key) self.assertEqual(message, dmessage)
def test_encryption(self): message = b'My secret message' key = b'9' * 32 hmac = b'3' * 16 # legacy cyphertext = crypto.symmetric_encrypt(message, key) dmessage = crypto.symmetric_decrypt(cyphertext, key) self.assertEqual(message, dmessage) # with HMAC cyphertext = crypto.symmetric_encrypt_HMAC(message, key, hmac) dmessage = crypto.symmetric_decrypt_HMAC(cyphertext, key, hmac) self.assertEqual(message, dmessage) # failing HMAC check with self.assertRaises(RuntimeError): crypto.symmetric_decrypt_HMAC(cyphertext, key, b'4'*16)
def get_web_session_cookies(self): """Get web authentication cookies via WebAPI's ``AuthenticateUser`` .. note:: A session is only valid during the current steam session. :return: dict with authentication cookies :rtype: :class:`dict`, :class:`None` """ if not self.logged_on: return None skey, ekey = generate_session_key() data = { 'steamid': self.steam_id, 'sessionkey': ekey, 'encrypted_loginkey': symmetric_encrypt(self.webapi_authenticate_user_nonce, skey), } try: resp = webapi.post('ISteamUserAuth', 'AuthenticateUser', 1, params=data) except Exception as exp: self._logger.debug("get_web_session_cookies error: %s" % str(exp)) return None return { 'sessionid': hexlify(sha1_hash(random_bytes(32))), 'steamLogin': resp['authenticateuser']['token'], 'steamLoginSecure': resp['authenticateuser']['tokensecure'], }