Skip to content
This repository has been archived by the owner on Mar 31, 2021. It is now read-only.

Protobufs

Michael Scholtz edited this page Mar 5, 2017 · 6 revisions

This page describes the meaning and purpose of various protobuf fields used by Steam, reverse-engineered by the community. If you know something that isn't mentioned here, please add it.

Feel free to add descriptions for protobufs that aren't currently exposed by node-steam, since this page is intended to be language-agnostic.

CMsgClientLogon

  • account_name - your Steam login. Required?
  • password - required unless login_key is used?
  • auth_code - Steam Guard code. Must be valid if provided, otherwise the logon will fail. Note that Steam Guard codes expire after a short while.
  • two_factor_code - Two-factor authentication code provided by the Steam mobile application. You will have to provide this code every time you log in if your account uses 2FA.
  • sha_sentryfile - SHA1 hash of your sentry file. If not provided, Steam will send you a sentry file through the ClientUpdateMachineAuth message (unless a limit for registered sentries is reached? see #178). If no Steam Guard code is provided, the hash must be already registered with this account, otherwise it's ignored. This value will be ignored if you enable 2FA.
  • login_key - alternative to password?

If the account has Steam Guard enabled and you provide neither a Steam Guard code nor a sentry hash registered with this account, the logon will fail and you'll receive an email with the code.

If you provide both a sentry hash and a valid Steam Guard code, the hash will be registered with this account. This allows you to reuse the same hash for multiple accounts.

CMsgClientRequestWebAPIAuthenticateUserNonceResponse

  • eresult - always EResult.OK?
  • webapi_authenticate_user_nonce - a new "loginkey" to be used with WebAPI's AuthenticateUser.

CMsgClientGamesPlayed

  • games_played - may contain multiple GamePlayed messages for multi-game idling?

GamePlayed

  • game_id - AppID. Needs some specific value for non-Steam games? (15444025664222527488 works)
  • game_extra_info - name of the non-Steam game.

CMsgClientUpdateMachineAuth

  • bytes - data to write.

CMsgClientUpdateMachineAuthResponse

  • sha_file - SHA1 of bytes. (Or of the resulting file? Won't matter until offsets are used.) The only field required for a response.

CMsgClientPersonaState

  • friends - may contain multiple Friend messages.

Friend

  • friendid - SteamID of the user.
  • persona_state - EPersonaState.
  • player_name - profile name.

CMsgClientClanState

  • steamid_clan - SteamID of the group.
  • events - mutually exclusive with announcements? Contains at most one Event?
  • announcements - mutually exclusive with events? Contains at most one Event?

Event

  • headline - headline of the announcement or the event.

CMsgClientLogonResponse

  • eresult - EResult, the logon was successful if equal to EResult.OK.
  • webapi_authenticate_user_nonce - "loginkey" to be used with WebAPI's AuthenticateUser.