342 Protocol

From RuneWiki
Revision as of 07:07, 13 August 2009 by Blakeman8192 (talk | contribs)
Jump to navigationJump to search

Login Protocol

The Login Protocol for the 342 is very similar in structure to that of the 317 (and other versions I believe). The login is comprised of four stages in which the client and server switch in regards to which one is reading and which one is writing.

Variables:

  • "name hash": A hash of the player name, thought to be used to select an appropriate login server. This has no use in current private servers.
  • "return code": A code used to identify which stage in login the session is currently in. Return code values:
    • 0: Exchange session key to establish encryption.
    • 1: Retry the login procedure.
    • 2: Login has finished.
    • 3: Client displays message - "Invalid username or password".
    • 4: Client displays message - "Your account has been disabled".
    • 5: Client displays message - "Your account is already logged in".
    • 6: Client displays message - "RuneScape has been updated!".
    • 7: Client displays message - "This world is full".
    • 8: Client displays message - "Unable to connect, loginserver offline".
    • 9: Client displays message - "Login limit exceeded".
    • 10: Client displays message - "Unable to connect, bad session ID".
    • 11: Client displays message - "Loginserver rejected session".
    • 12: Client displays message - "You need a members account to sign into this world".
    • 13: Client displays message - "Could not complete login".
    • 14: Client displays message - "Server is being updated".
    • 15: unknown
    • 16: Client displays message - "Login attempts exceeded".
    • 17: Client displays message - "You are standing in a members only area".
    • 20: Client displays message - "Invalid loginserver requested".
    • 21: Client displays message - "You have only just left another world".
    • 22: Client displays message - "Malformed login packet".
  • "server session key": Server-side session key used for encrypting the stream.
  • "data file version": unknown
  • "user ID": The ID of the user.
  • "username": The username of the player.
  • "password": The password of the player.
  • "client session key": Client-side session key used for encrypting the stream.
  • "crc values": unknown
  • "player status": The in-game player status, values:
    • 0: Normal player
    • 1: Player Moderator
    • 2: Administrator

Login Process:

Client -> Server:
Type Value
ubyte 14
ubyte "name hash"
Server -> Client:
Type Value
byte 0
byte 0
byte 0
byte 0
byte 0
byte 0
byte 0
byte 0
byte "return code"
long "server session key"
Client -> Server:
Type Value
byte 10
int "datafileversion"[0]
int "datafileversion"[1]
int "datafileversion"[2]
int "datafileversion"[3]
int "user id"
string "username"
string "password"
long "client session key"
byte "connect status"
byte "size"
byte 255
short 342
byte "client version"
int "crc values"[0]
int "crc values"[1]
int "crc values"[2]
int "crc values"[3]
int "crc values"[4]
int "crc values"[5]
int "crc values"[6]
int "crc values"[7]
int "crc values"[8]
Server -> Client:
Type Value
byte "return code"
byte "player status"
byte 0