Welcome to hackvshack.net Forum!
Download Free HvH CS2/CS:GO Cheats, CFG, LUA/JS Scripts, and More!
Register

Other Logging into steam APP using JWT Token

Kanibal

Newbie HvHer
User ID:
50981
Messages:
4
Reactions:
1
Badges:
1
REP:
−0/0+
Level:
22
So i'm trying to figure out how can i log into a steam account using a JWT Token, i've tried some things from github, it almost worked but it doesn't want to log me in, my friend bought a few accounts from: "kaze.ac" and it uses some method to log him in into the steam, where that steam accoutns have steam guard, and i'm trying to figure that out how can i do it, because im not trusting the loader itself, and i want him to share me that account.

I already have a decoder that i can use to get my cookies from my steam app written with grok and help of gemini, but i still need to either know if it's possible or rewrite the JWT Loginner.
 
You can decode a JWT all you want, but it's signed by Steam's private key, so you can't forge or replay it. Nor do I know what you mean by "get my cookies from my Steam app," since those are fundamentally different concepts. I have no idea why I am even responding to this since "written with grok and help of Gemini" tells me you're clueless and have no idea what you're doing. I have no idea what GitHub repo you'd be referring to, but whatever, good thinking on not trusting the loader, but that's about it.

PS: I don't know, but this feels like promoting account theft/cybercrime, so not the smartest idea to post that generally, but you do you.
 
I mean i only used grok and gemini help, to get the paths and the scripts to help me decode the Token, and for the repo i've used: it's this one

I mean for the "Clueless" part, not really cuz i know how this kinda works, i just wanted to figure out how did the "kaze.ac" guys did that, logging into the client without the user never knowing this like the password, phone number, or steam guard code

From what i know i think i would need to get a "Refresh Token" but that's bound to the Pc's HWID (Machine ID) which is this folder: "C:\Users\Kanibals\AppData\Local\Steam\htmlcache\Default\Local Storage\leveldb"

And for the "cookies from my Steam app" i might be wrong about it, because inside: "C:\Users\Kanibals\AppData\Local\Steam\htmlcache\Default\Network" there is the cookies file, but from what i got info on, this file is for mainly the steam client web thing, like the overlay, or the client app using it to show you the websites i think, The "Cookie" / "Token" that you get to login into the account must be hidden somewhere else, theoreticaly using things like loginusers.vdf or config.vdf but this doesn't really contain anything useful, and in regedit i also haven't found anything useful

And if i figure out how to log into steam somehow copything something
Note: the "kaze.ac" program whenever my friend is running it (signing into an account) it launches like 3-4 cmd windows and restarts steam

PS: I Don't really want to steal the account, i want that NFA Account, but im not trusting the kaze.ac program (Even though nothing yet happened to my friend), and because my friend already has them and could buy another ones (for €1), If i'd figure this out, i wouldn't mind open sourcing this thing on github.
 
So if the tokens are HWID bound, why try? You will not in a million years be able to run them even if you replace your LevelDB and cookie information. From what I think, all this client does is restart Steam → replace said files → restart Steam and try to log in with account information + token/cookies and may or may not spoof your HWID according to the information inside that token. But I'm fairly sure Steam knows what they're doing and this won't work :/
 
Mostlikely what kaze.ac does is either uses that token, but somehow spoofs the HWID to be the same as they got the token from, or they're doing domething even differen't i can't even explain, or maybe with that JWT Token i could figure out a way to launch specific games like CS2 for example (The main one i want to launch), but i don't really know if that's possible
 
here u can login with token using this python code

needed pipes vdf pyjwt pywin32

Python:
Expand Collapse Copy
import os
import time
import pathlib
import subprocess
import binascii
import zlib
import vdf
import jwt
import win32crypt

def login():
    print("\n=== Steam Token Login ===\n")

    token_input = input("Enter token: ").strip()
    token_input = ''.join(c for c in token_input if c.isascii() and c.isprintable())

    if token_input.count('.') != 3:
        print("[-] Invalid token format")
        return

    login = token_input[:token_input.find('.')]
    token = token_input[token_input.find('.') + 1:]

    print(f"[*] Login: {login}")

    try:
        payload = jwt.decode(token, options={'verify_signature': False})
        steamid = payload['sub']
        print(f"[+] SteamID: {steamid}")
    except Exception as e:
        print(f"[-] Failed to decode token: {e}")
        return

    steam_paths = [
        'C:\\Program Files (x86)\\Steam',
        'C:\\Program Files\\Steam',
    ]

    steamdir = None
    for p in steam_paths:
        if os.path.exists(os.path.join(p, 'steam.exe')):
            steamdir = p
            break

    if not steamdir:
        steamdir = input("Steam not found. Enter path: ").strip()

    if not steamdir.endswith('\\'):
        steamdir += '\\'

    print(f"[+] Steam: {steamdir}")

    print("[*] Killing Steam...")
    procs = ['Steam.exe', 'steamwebhelper.exe', 'steamservice.exe']
    for proc in procs:
        subprocess.run(f'taskkill /f /im {proc}', shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

    # Steam32 ID
    steam32 = int(steamid) - 76561197960265728

    udir = f'{steamdir}userdata\\{steam32}\\config'
    pathlib.Path(udir).mkdir(parents=True, exist_ok=True)

    localconfig = {
        "UserLocalConfigStore": {
            "streaming_v2": {"EnableStreaming": "0"},
            "friends": {"SignIntoFriends": "0"}
        }
    }
    try:
        with open(f'{udir}\\localconfig.vdf', 'w', encoding='utf8', errors='ignore') as f:
            vdf.dump(localconfig, f, pretty=True)
        print("[+] localconfig.vdf")
    except Exception as e:
        print(f"[-] localconfig.vdf failed: {e}")

    pathlib.Path(f'{steamdir}config').mkdir(parents=True, exist_ok=True)
    config_file = f'{steamdir}config\\config.vdf'

    if os.path.exists(config_file):
        try:
            with open(config_file, 'r', encoding='utf8', errors='ignore') as f:
                config = vdf.load(f)
            if "InstallConfigStore" in config and "Software" in config["InstallConfigStore"] and \
               "Valve" in config["InstallConfigStore"]["Software"] and \
               "Steam" in config["InstallConfigStore"]["Software"]["Valve"]:
                if "Accounts" not in config["InstallConfigStore"]["Software"]["Valve"]["Steam"]:
                    config["InstallConfigStore"]["Software"]["Valve"]["Steam"]["Accounts"] = {}
                config["InstallConfigStore"]["Software"]["Valve"]["Steam"]["Accounts"][login] = {"SteamID": steamid}
            else:
                raise Exception("bad structure")
        except:
            config = {"InstallConfigStore": {"Software": {"Valve": {"Steam": {"Accounts": {login: {"SteamID": steamid}}}}}}}
    else:
        config = {"InstallConfigStore": {"Software": {"Valve": {"Steam": {"Accounts": {login: {"SteamID": steamid}}}}}}}

    with open(config_file, 'w', encoding='utf8', errors='ignore') as f:
        vdf.dump(config, f, pretty=True)
    print("[+] config.vdf")

    loginusers_file = f'{steamdir}config\\loginusers.vdf'
    user_entry = {
        "AccountName": login,
        "PersonaName": login,
        "RememberPassword": "1",
        "WantsOfflineMode": "0",
        "SkipOfflineModeWarning": "0",
        "AllowAutoLogin": "0",
        "MostRecent": "1",
        "Timestamp": str(round(time.time()))
    }

    if os.path.exists(loginusers_file):
        try:
            with open(loginusers_file, 'r', encoding='utf8', errors='ignore') as f:
                loginusers = vdf.load(f)
            if "users" in loginusers:
                for uid, udata in loginusers['users'].items():
                    udata['MostRecent'] = '0'
                loginusers['users'][steamid] = user_entry
            else:
                loginusers = {"users": {steamid: user_entry}}
        except:
            loginusers = {"users": {steamid: user_entry}}
    else:
        loginusers = {"users": {steamid: user_entry}}

    with open(loginusers_file, 'w', encoding='utf8', errors='ignore') as f:
        vdf.dump(loginusers, f, pretty=True)
    print("[+] loginusers.vdf")

    localst = os.getenv('LOCALAPPDATA') + '\\steam'
    pathlib.Path(localst).mkdir(parents=True, exist_ok=True)

    pwdHash = win32crypt.CryptProtectData(token.encode(), None, login.encode(), None, None, 0)
    pw = str(binascii.hexlify(pwdHash), encoding='ascii')
    hdr = hex(zlib.crc32(login.encode()) & 4294967295).replace('0x', '') + '1'

    local_file = f'{localst}\\local.vdf'
    if os.path.exists(local_file):
        try:
            with open(local_file, 'r', encoding='utf8', errors='ignore') as f:
                existing_local = vdf.load(f)
            if "MachineUserConfigStore" in existing_local and "Software" in existing_local["MachineUserConfigStore"] and \
               "Valve" in existing_local["MachineUserConfigStore"]["Software"] and \
               "Steam" in existing_local["MachineUserConfigStore"]["Software"]["Valve"] and \
               "ConnectCache" in existing_local["MachineUserConfigStore"]["Software"]["Valve"]["Steam"]:
                existing_local["MachineUserConfigStore"]["Software"]["Valve"]["Steam"]["ConnectCache"][hdr] = pw
            else:
                existing_local = {"MachineUserConfigStore": {"Software": {"Valve": {"Steam": {"ConnectCache": {hdr: pw}}}}}}
            with open(local_file, 'w', encoding='utf8', errors='ignore') as f:
                vdf.dump(existing_local, f, pretty=True)
        except:
            with open(local_file, 'w', encoding='utf8', errors='ignore') as f:
                vdf.dump({"MachineUserConfigStore": {"Software": {"Valve": {"Steam": {"ConnectCache": {hdr: pw}}}}}}, f, pretty=True)
    else:
        with open(local_file, 'w', encoding='utf8', errors='ignore') as f:
            vdf.dump({"MachineUserConfigStore": {"Software": {"Valve": {"Steam": {"ConnectCache": {hdr: pw}}}}}}, f, pretty=True)
    print("[+] local.vdf (DPAPI encrypted)")

    print(f"\n[*] Launching Steam as '{login}'...")
    os.system('start steam://0')
    print("[+] Done!")

    input("\nPress Enter to exit...")


if __name__ == '__main__':
    login()
 
Last edited by a moderator:
I don't know if it really works against steam guard, i mean i tested it with my own account and it didn't really seem to want to log me in, but it tried to fill in my user and kinda added my account to that account manager from steam

But i don't know if it's possible to log in using "SteamLoginSecure" token, but i also didn't test on a account that doesn't have steam guard
 

Who has read this thread (Total: 0) in last 1 hours View details