コード例 #1
0
    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'],
        }
コード例 #2
0
ファイル: cm.py プロジェクト: jackma92/steam
    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)
コード例 #3
0
ファイル: cm.py プロジェクト: jaredballou/steam
    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)
コード例 #4
0
ファイル: web.py プロジェクト: jaredballou/steam
    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'],
        }
コード例 #5
0
ファイル: test_core_crypto.py プロジェクト: philippj/steam
    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)
コード例 #6
0
    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)
コード例 #7
0
ファイル: test_core_crypto.py プロジェクト: sithhell/steam
    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)
コード例 #8
0
ファイル: web.py プロジェクト: jaredballou/steam
    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'],
        }