From abbcd30c0ad8e15440c1c99b3369df29ba3bcb20 Mon Sep 17 00:00:00 2001 From: Striven <sg.striven@cutecat.club> Date: Tue, 11 Nov 2025 16:22:39 +0000 Subject: [PATCH] Add SessionProtocol::CreateSession method --- 00_packet_dumps/C2S-SessionProtocol__CreateSession_V1 | 0 04_rendezvous/05_rmc_protocol.md | 13 +++--- 04_rendezvous/01_rmc_protocols/sessionprotocol.md | 66 +++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/00_packet_dumps/C2S-SessionProtocol__CreateSession_V1 b/00_packet_dumps/C2S-SessionProtocol__CreateSession_V1 new file mode 100644 index 0000000..c98aac1 --- /dev/null +++ b/00_packet_dumps/C2S-SessionProtocol__CreateSession_V1 Binary files differ diff --git a/04_rendezvous/01_rmc_protocols/sessionprotocol.md b/04_rendezvous/01_rmc_protocols/sessionprotocol.md new file mode 100644 index 0000000..8652e47 --- /dev/null +++ b/04_rendezvous/01_rmc_protocols/sessionprotocol.md @@ -0,0 +1,66 @@ +# RendezVous: RMC Protocols: SessionProtocol + +The session protocol is presumably responsible for managing creating a game session, joining them and leaving them. A session is first created when logging into the game. + +## Method: `CreateSession` +Creates a session as the name suggests. Unknown exactly what sessions are used for. + +### Request + +##### Example +``` +Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F + +00000000 0D 00 50 61 72 74 79 53 65 73 73 69 6F 6E 00 10 ..PartySession.. +00000010 DD 0B D5 FC 58 74 4D 36 9F C0 09 48 59 95 0D 00 Ý.ÕüXtM6ŸÀ.HY•.. +00000020 00 00 00 00 00 00 00 00 63 00 31 30 64 64 30 62 ........c.10dd0b +00000030 64 35 66 63 35 38 37 34 34 64 33 36 39 66 63 30 d5fc58744d369fc0 +00000040 30 39 34 38 35 39 39 35 30 64 35 63 35 37 63 35 094859950d5c57c5 +00000050 61 32 64 38 66 37 65 33 36 33 66 66 66 66 66 66 a2d8f7e363ffffff +00000060 66 66 66 66 66 66 66 66 66 66 30 30 30 30 30 30 ffffffffff000000 +00000070 30 30 30 30 30 30 30 30 30 30 30 31 66 66 66 66 000000000001ffff +00000080 66 66 66 66 66 66 66 66 66 66 66 66 00 ffffffffffff. +``` + +> [!TIP] +> This is just the request data portion of a full packet. Check out a [full request packet dump](../../00_packet_dumps/C2S-SessionProtocol__CreateSession_V1) for this call. + +##### Parsing +| Name | Description | Type | +|---------------------|---------------------------------------------------------------------|----------------------------------------------------------| +| Token | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_structure.md#structure-string) | +| Client Version Info | Information about the client version | [`ClientVersionInfo`](#client-version-info) | +| Diagnostic URL | Unknown. | [`Station URL`](../03_structure.md#structure-stationurl) | + +### Successful Response + +> [!NOTE] +> TODO: Example + +##### Parsing + +> [!NOTE] It is not clear what much of the response for this method is for or does, and is extracted straight from the game disassembly. + +| Name | | | Description | Type | +|-----------|--------------|--------------|------------------------------------------|-------------------------------------------------| +| Unknown 1 | | | Unknown. | `u64` | +| Unknown 2 | | | Unknown. | `u32` | +| String 1 | | | Unknown. | [`String`](../03_structure.md#structure-string) | +| UUID 1 | | | Unknown. | [`UUID`](../03_structure.md#structure-uuid) | +| Unknown 3 | | | Unknown. | `u32` | +| | | | | | +| | **Branch 1** | | If `Unknown 3` is not equal to `0`... | | +| | String 2 | | Unknown. | [`String`](../03_structure.md#structure-string) | +| | UUID 2 | | Unknown. | [`UUID`](../03_structure.md#structure-uuid) | +| | ??? | | There may be some additional bytes here. | Unknown. | +| | Unknown 4 | | Unknown. | `u64` | +| | String 3 | | Unknown. | [`String`](../03_structure.md#structure-string) | +| | | | | | +| | **Branch 2** | | If `Unknown 3` is equal to `0`... | | +| | Unknown 5 | | Unknown. | `u32` | +| | | | | | +| | | **Branch 3** | If `Unknown 5` is not equal to `0`... | | +| | | String 4 | Unknown. | [`String`](../03_structure.md#structure-string) | +| | | ??? | There may be some additional bytes here. | Unknown. | +| | | | | | +| | Unknown 6 | | Unknown. | `u32` | \ No newline at end of file diff --git a/04_rendezvous/05_rmc_protocol.md b/04_rendezvous/05_rmc_protocol.md index 691b4b9..6875610 100644 --- a/04_rendezvous/05_rmc_protocol.md +++ b/04_rendezvous/05_rmc_protocol.md @@ -16,12 +16,13 @@ Here are the currently understood RMC protocols implemented in HyperScape. Some appear to be standard to Ubisoft games as a whole, while others appear to be designed specifically for the game. -| Protocol | Description | HyperScape-specific? | -|------------------------------------------------------------------------------|-------------------------------------------------------------------|----------------------| -| [`LoginProtocol`](./01_rmc_protocols/loginprotocol.md) | Used for authenticating with an RMC server using a Ubisoft token. | ✖️ | -| [`CloudServersProtocol`](./01_rmc_protocols/cloudserversprotocol.md) | Used for listing datacenters for connecting to game servers. | ✔️ | -| [`ApexAntitoxicityProtocol`](./01_rmc_protocols/apexantitoxicityprotocol.md) | Currently unknown, presumably for managing bans and mutes. | ✔️ | -| ... | ... | ... | +| Protocol | Description | HyperScape-specific? | +|------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|----------------------| +| [`LoginProtocol`](./01_rmc_protocols/loginprotocol.md) | Used for authenticating with an RMC server using a Ubisoft token. | ✖️ | +| [`CloudServersProtocol`](./01_rmc_protocols/cloudserversprotocol.md) | Used for listing datacenters for connecting to game servers. | ✔️ | +| [`ApexAntitoxicityProtocol`](./01_rmc_protocols/apexantitoxicityprotocol.md) | Currently unknown, possibly for managing bans and mutes. | ✔️ | +| [`SessionProtocol`](./01_rmc_protocols/sessionprotocol.md) | Presumably for creating, joining and leaving game sessions, but it is unknown what that entails. | ✔️ | +| ... | ... | ... | > [!NOTE] > This list is far from complete. -- Gitblit v1.10.0