Python создание сессий Steam

Пытаюсь написать скрипт для создания сессий Steam. Возникла проблема: Steam пишет, что я передаю неверный логин или пароль, хотя все данные на 100% верны, в том числе и 2fa код. Возможно я неправильно реализовал шифрование? Не знаю.

Ответ от Steam:

login_response: {
  'success': False,
  'requires_twofactor': False, 
  'message': 'The account name or password that you have entered is incorrect.',
  'clear_password_field': True,
  'captcha_needed': False,
  'captcha_gid': -1
}

Мой скрипт:

def encrypt_password(password, public_mod, public_exp):

    modulus = int(public_mod, 16)
    exponent = int(public_exp, 16) if public_exp.startswith('0x') else int(public_exp)

    key = RSA.construct((modulus, exponent))

    cipher = PKCS1_v1_5.new(key)
    encrypted_password = cipher.encrypt(password.encode('utf-8'))
    return encrypted_password.hex()


def create_steam_session():
    conn = sqlite3.connect(DATABASE_PATH)
    cursor = conn.cursor()

    cursor.execute("SELECT login, password FROM users WHERE session='No'")
    accounts = cursor.fetchall()

    if not accounts:
        print("No accounts found.")
        conn.close()
        return

    login, password = accounts[0]
    print(f"Login: {login}, Password: {password}")

    rsa_url = "https://steamcommunity.com/login/getrsakey/"
    rsa_payload = {'username': login}
    rsa_response = requests.post(rsa_url, data=rsa_payload).json()
    print(f"rsa_response: {rsa_response}")

    if not rsa_response['success']:
        print(f"Failed to get RSA key for {login}: {rsa_response.get('message')}")
        conn.close()
        return

    public_mod = rsa_response['publickey_mod']
    public_exp = rsa_response['publickey_exp']
    timestamp = rsa_response['timestamp']

    encrypted_password = encrypt_password(password, public_mod, public_exp)
    print(f"encrypted_password: {encrypted_password}")

    field_name = 'shared_secret'
    shared_secret = get_account_info(account_name=login, field_name=field_name)
    twofactor_code = getcode(shared_secret)
    print(f"twofactor_code: {twofactor_code}")

    login_url = "https://steamcommunity.com/login/dologin/"
    login_payload = {
        'username': login,
        'password': encrypted_password,
        'rsatimestamp': timestamp,
        'twofactorcode': twofactor_code,
        'remember_login': 'true'
    }

    login_response = requests.post(login_url, data=login_payload).json()
    print(f"login_response: {login_response}")
    if login_response['success']:
        
        cookies = requests.utils.dict_from_cookiejar(login_response.cookies)
        session_file_path = os.path.join(SESSIONS_DIR, f"{login}.json")

        with open(session_file_path, 'w') as f:
            json.dump(cookies, f)

        print(f"Session for {login} created and saved in {session_file_path}!")

        cursor.execute("UPDATE users SET session='Yes' WHERE login=?", (login,))
        conn.commit()
    else:
        if 'requires_twofactor' in login_response:
            print(f"Two-factor authentication required for {login}")
        elif 'emailauth_needed' in login_response:
            print(f"Email authentication required for {login}")
        else:
            print(f"Login failed for {login}: {login_response.get('message')}")

    conn.close()

Ответы (0 шт):