steamctl
steamctl copied to clipboard
[BUG] `No access token available` for some depot
Description
Trying to get info on some depot doesn't work. No access token available
error. I already reported it to https://github.com/SteamRE/DepotDownloader/issues/349, so if you don't mind, refer to it. I think steamctl has the same reason.
Steps to Reproduce the behavior steamctl --user *** --password *** depot info -a 1030830 -d 1523211
Expected behavior Depot info should be shown
What actually happend
No access token available
Logs
steamctl -l debug
[DEBUG] steamctl: Parsed args: {'versions_report': None, 'log_level': 'debug', 'anonymous': False, 'user': '***', 'password': None, 'command': 'depot', '_cmd_func': 'steamctl.commands.depot.gcmds:cmd_depot_info', 'subcommand': 'info', 'cell_id': None, 'os': 'any', 'file': None, 'app': 1030830, 'depot': 1523211, 'manifest': None, 'branch': 'public', 'skip_depot': None, 'skip_login': False, 'skip_licenses': False}
[DEBUG] SteamClient: Reading CM servers from 'C:\\Users\\Madobe\\AppData\\Local\\steamctl\\steamctl\\client\\cm_servers.json'
[DEBUG] CMServerList: Added 80 new CM addresses.
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: Trying to fetch content servers from Steam API
[DEBUG] urllib3.connectionpool: Starting new HTTPS connection (1): api.steampowered.com:443
[DEBUG] urllib3.connectionpool: https://api.steampowered.com:443 "GET /IContentServerDirectoryService/GetServersForSteamPipe/v1/?cell_id=7&max_servers=20&format=json HTTP/1.1" 200 616
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\Madobe\AppData\Local\steamctl\steamctl\cs_servers.json
[DEBUG] CachingCDNClient: No steam licenses found on SteamClient instance
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\client\lastuser
[INFO] SteamClient: Attempting login with remembered credentials
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\client\***.key
[DEBUG] SteamClient: Attempting login
[DEBUG] SteamClient: Connect initiated.
[DEBUG] Connection: Attempting connection to ('162.254.192.75', 27018)
[DEBUG] Connection: Connected.
[DEBUG] SteamClient: Emit event: 'connected'
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptRequest: 1303> | ChannelEncryptRequest)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptRequest: 1303>
[DEBUG] SteamClient: Securing channel
[DEBUG] SteamClient: Outgoing: <Msg(<EMsg.ChannelEncryptResponse: 1304> | ChannelEncryptResponse)>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ChannelEncryptResult: 1305> | ChannelEncryptResult)>
[DEBUG] SteamClient: Emit event: <EMsg.ChannelEncryptResult: 1305>
[DEBUG] SteamClient: Channel secured
[DEBUG] SteamClient: Emit event: 'channel_secured'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientLogon: 5514> | CMsgClientLogon)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (3691 -> 11017)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLogOnResponse: 751> | CMsgClientLogonResponse)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLogOnResponse: 751>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientAccountInfo: 768> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientAccountInfo: 768>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientEmailAddrInfo: 5456> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientEmailAddrInfo: 5456>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsList: 767> | CMsgClientFriendsList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsList: 767>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayerNicknameList: 5587> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayerNicknameList: 5587>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientLicenseList: 780> | CMsgClientLicenseList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientLicenseList: 780>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientUpdateGuestPassesList: 798> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientUpdateGuestPassesList: 798>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientWalletInfoUpdate: 5528> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientWalletInfoUpdate: 5528>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientGameConnectTokens: 779> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientGameConnectTokens: 779>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientIsLimitedAccount: 5430> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientIsLimitedAccount: 5430>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientCMList: 783> | CMsgClientCMList)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientCMList: 783>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientRequestedClientStats: 5480> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientRequestedClientStats: 5480>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPlayingSessionState: 9600> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPlayingSessionState: 9600>
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientVACBanStatus: 782> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientVACBanStatus: 782>
[DEBUG] SteamClient: Logon completed
[DEBUG] SteamClient: Heartbeat started.
[DEBUG] SteamClient: Emit event: 'logged_on'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] CachingSteamClient.friends: Emit event: 'friend_invite'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientRequestFriendData: 815> | CMsgClientRequestFriendData)>
[DEBUG] CachingSteamClient.friends: Emit event: 'ready'
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientFriendsGroupsList: 5553> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientFriendsGroupsList: 5553>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (498 -> 686)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPersonaState: 766> | CMsgClientPersonaState)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPersonaState: 766>
[DEBUG] SteamClient: Re-login result is: <EResult.OK: 1>
[INFO] steamctl.commands.depot.gcmds: Login to Steam successful
[INFO] steamctl.commands.depot.gcmds: Checking licenses
[DEBUG] SteamClient: Fetching product info
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSAccessTokenRequest: 8905> | CMsgClientPICSAccessTokenRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientServersAvailable: 5501> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientServersAvailable: 5501>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (1270 -> 1436)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSAccessTokenResponse: 8906> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSAccessTokenResponse: 8906>
[DEBUG] SteamClient: Emit event: 'job_1'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSProductInfoRequest: 8903> | CMsgClientPICSProductInfoRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (15307 -> 35942)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_2'
[INFO] steamctl.commands.depot.gcmds: Checking change list
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking PICS for app changes
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSChangesSinceRequest: 8901> | CMsgClientPICSChangesSinceRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (540 -> 1229)
[DEBUG] SteamClient: Incoming: <Msg(<EMsg.ClientMarketingMessageUpdate2: 5510> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientMarketingMessageUpdate2: 5510>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Multi: Decompressing payload (2821 -> 5258)
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSChangesSinceResponse: 8902> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSChangesSinceResponse: 8902>
[DEBUG] SteamClient: Emit event: 'job_3'
[DEBUG] steamctl.utils.storage: Opening file (w): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\last_change_number
[DEBUG] SteamClient: Checking for outdated cached appinfo files
[INFO] steamctl.commands.depot.gcmds: Getting manifests for 'public' branch
[DEBUG] SteamClient: Serving appinfo from cache
[DEBUG] steamctl.utils.storage: Opening file (r): C:\Users\Madobe\AppData\Local\steamctl\steamctl\Cache\appinfo\1030830.json
[DEBUG] SteamClient: Fetching product info
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSAccessTokenRequest: 8905> | CMsgClientPICSAccessTokenRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSAccessTokenResponse: 8906> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSAccessTokenResponse: 8906>
[DEBUG] SteamClient: Emit event: 'job_4'
[DEBUG] SteamClient: Outgoing: <MsgProto(<EMsg.ClientPICSProductInfoRequest: 8903> | CMsgClientPICSProductInfoRequest)>
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.Multi: 1> | CMsgMulti)>
[DEBUG] SteamClient: Emit event: <EMsg.Multi: 1>
[DEBUG] SteamClient: Multi: Unpacking
[DEBUG] SteamClient: Incoming: <MsgProto(<EMsg.ClientPICSProductInfoResponse: 8904> | not parsed)>
[DEBUG] SteamClient: Emit event: <EMsg.ClientPICSProductInfoResponse: 8904>
[DEBUG] SteamClient: Emit event: 'job_5'
[ERROR] steamctl.commands.depot.gcmds: (EResult.Fail) No access token available
Versions Report
steamctl --versions-report
(Run steamctl --versions-report and paste the output below)
steamctl: 0.9.5
Dependencies:
steam: 1.4.3
appdirs: 1.4.4
argcomplete: 2.0.0
tqdm: 4.64.0
arrow: 1.2.2
pyqrcode: 1.2.1
beautifulsoup4: 4.11.1
vpk: 1.4.0
vdf: 3.4
gevent-eventemitter: 2.1
gevent: 21.12.0
greenlet: 1.1.2
pyyaml: Not Installed
pycryptodomex: 3.15.0
protobuf: 3.20.1
Python runtime:
executable: C:\Python39\python.exe
version: 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)]
platform: win32
System info:
system: Windows
machine: AMD64
release: 8.1
version: 6.3.9600
You need to own app to get info. Steam no longer gives to you without a license.
Read the issue I linked on DepotDownloader please. I can access the depot with steamcmd
Depot 1523211 is fail to get info from steamdb too.
Because it's a shared depot and steamdb doesn't own master appid, but if you use appid of app you own it would work normally.
You can also test it like this:
steamctl --anonymous depot info -a 90 -d 1
It downloads with DepotDownloader, but fails with steamctl, and the reason is: (EResult.AccessDenied) Failed to acquire manifest code (app=70 depot=1 manifest=5928322771446233610)
As I said, it uses depotfromapp appid instead -a 90
, like DepotDownloader did before fix.
Btw, steamctl --anonymous depot info -a 90 -d 1 -m 5928322771446233610
and steamctl --user *** depot info -a 1030830 -d 1523211 -m 4005512837758401031
works. So if -m
is specified it works as expected
Yeah that looks like a bug. Although, is using the 90
(instead of depotfromapp
) as appid correct or this a bug in Steam?
I don't think it's steam's issue. You're techically requesting manifest and decryption key for app you don't own. Also from DepotDownloader:
Shared depots can either provide manifests, or leave you relying on their parent app. It seems that with the latter, "sharedinstall" will exist (and equals 2 in the one existance I know of). Rather than relay on the unknown sharedinstall key, just look for manifests. Test cases: 111710, 346680.
AppInfo for 111710
"depots": {
"1004": {
"config": {
"oslist": "windows"
},
"depotfromapp": "1007",
"manifests": {
"public": "5329354416203291021"
},
"maxsize": "42086632",
"name": "Steamworks SDK Redist (WIN32)"
},
"1005": {
"config": {
"oslist": "macos"
},
"depotfromapp": "1007",
"manifests": {
"public": "2135359612286175146"
},
"name": "Steamworks SDK Redist (OSX32)"
},
"1006": {
"config": {
"oslist": "linux"
},
"depotfromapp": "1007",
"manifests": {
"public": "4444585935428744334"
},
"maxsize": "66706004",
"name": "Steamworks SDK Redist (LINUX32)"
},
"111711": {
"config": {
"oslist": "linux"
},
"encryptedmanifests": {
"beta": {
"encrypted_gid_2": "3B1D00F81FBE146692B4D66115C8F29F",
"encrypted_size_2": "875956FA653D447A1FB9EEFFA6A489DB"
},
"previous": {
"encrypted_gid_2": "D8E407722BD27A231DB9486154871C49",
"encrypted_size_2": "401A9525DCDDFFC04FBD55EA5B2A49C7"
}
},
"manifests": {
"public": "8871863972997944411"
},
"maxsize": "37750808",
"name": "Nuclear Dawn LinuxDedicated Engine",
"systemdefined": "1"
},
"17711": {
"depotfromapp": "17710",
"maxsize": "4633578503",
"name": "Nuclear Dawn Content",
"sharedinstall": "2",
"systemdefined": "1"
},
"17712": {
"config": {
"oslist": "windows"
},
"depotfromapp": "17710",
"maxsize": "73369365",
"name": "Nuclear Dawn Windows Engine",
"sharedinstall": "2",
"systemdefined": "1"
},
"17718": {
"config": {
"oslist": "windows"
},
"encryptedmanifests": {
"beta": {
"encrypted_gid_2": "504AB37A274E32E64A3211B9798F8E32",
"encrypted_size_2": "1B544FC39988938F991DACBCD79ADFCD"
},
"previous": {
"encrypted_gid_2": "F8CC04D24610CA5345EC46AB64BB72FE",
"encrypted_size_2": "648B11DD9EB8CCE22769588D7709E5CA"
}
},
"manifests": {
"public": "3735901233717536875"
},
"maxsize": "1",
"name": "nuclear dawn DS helper",
"optional": "1",
"systemdefined": "1"
},
Pay attention that depots with sharedinstall
key don't have manifests, so you have to run AppInfo
for depotfromapp
to get manifest IDs from there. But depots without sharedinstall
provide manifest ID even if they have depotfromapp
. That's also why steamctl throws No access token available
in my case:
AppInfo for 1030830
},
"1523211": {
"config": {
"oslist": "windows"
},
"depotfromapp": "1523210",
"encryptedmanifests": {
"2kqa_a": {
"encrypted_gid_2": "76264B675F9516F5D39589E0CABA07A2",
"encrypted_size_2": "C5FE5DFAACC8464A5670058F09837FE6"
},
"2kqa_b": {
"encrypted_gid_2": "773D01CA473718BA41AC80312EE8D67D",
"encrypted_size_2": "FF1EC6343960A0E426A5A16090D8F29A"
},
"autoupdater": {
"encrypted_gid_2": "4E3E3F1638E281108D8D37D424AA3B57",
"encrypted_size_2": "44F8535B58F456BAA811D23863866A60"
},
"d2ctest": {
"encrypted_gid_2": "56B8043BACC5EBEE1F2E96E4FD454246",
"encrypted_size_2": "AAADF7F96AF1069F8836A1331E7A01F5"
},
"dev2klauncherintegration": {
"encrypted_gid_2": "15AA5D724100E14CE8BB45BD3BF2D82C",
"encrypted_size_2": "5870B1EBB14E4D35AAF91DACD6A1DBAC"
},
"integration": {
"encrypted_gid_2": "7BD9D20CE86454BAF67C52EFFD0DE219",
"encrypted_size_2": "24D9E93D742F4CE62CF1C6E5ABCB1A42"
},
"newtest": {
"encrypted_gid_2": "B71D86B4E537AF4D220C11B90094D116",
"encrypted_size_2": "B11349C29A462BBA492548316EF116F7"
}
},
"manifests": {
"public": "4005512837758401031"
},
"maxsize": "105599103",
"name": "D2C Service Content"
},
The depot itself has a manifest ID, but steamctl still tries to run AppInfo
for depotfromapp
, but the parent app is private.
I see, thanks for the clarification. Will need to update the logic