From e170bbf6f9b4e7b22b50d4130b0a2808e2e85f45 Mon Sep 17 00:00:00 2001
From: Striven <sg.striven@cutecat.club>
Date: Wed, 10 Sep 2025 20:28:04 +0000
Subject: [PATCH] Fix IP addresses in LoginProtocol::Register method example
---
04_rendezvous/01_protocols/01_loginprotocol.md | 158 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 100 insertions(+), 58 deletions(-)
diff --git a/04_rendezvous/01_protocols/01_loginprotocol.md b/04_rendezvous/01_protocols/01_loginprotocol.md
index ec56258..8c889d2 100644
--- a/04_rendezvous/01_protocols/01_loginprotocol.md
+++ b/04_rendezvous/01_protocols/01_loginprotocol.md
@@ -4,73 +4,115 @@
Authenticates with the server using a [UbiServices](../../03_ubisoft_services/02_accessing_ubiservices.md) ticket. See [Initial Login Flow](../../03_ubisoft_services/04_initial_login_flow.md) for information on how to obtain one.
### Request
-Example:
+
+##### Example
```
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
-00000000 ED 0C 00 00 0E 00 4C 6F 67 69 6E 50 72 6F 74 6F í.....LoginProto
-00000010 63 6F 6C 00 01 05 00 00 00 21 00 4C 6F 67 69 6E col......!.Login
-00000020 50 72 6F 74 6F 63 6F 6C 3A 3A 4C 6F 67 69 6E 57 Protocol::LoginW
-00000030 69 74 68 54 6F 6B 65 6E 5F 56 31 00 01 00 00 00 ithToken_V1.....
-00000040 12 00 43 6C 69 65 6E 74 56 65 72 73 69 6F 6E 49 ..ClientVersionI
-00000050 6E 66 6F 00 01 00 06 00 54 49 43 4B 45 54 00 03 nfo.....TICKET..
-00000060 00 00 00 05 00 27 00 00 00 04 6E 02 7B 22 72 64 .....'....n.{"rd
-00000070 76 5F 64 65 62 75 67 22 3A 22 30 2E 30 2E 31 22 v_debug":"0.0.1"
-00000080 2C 22 72 64 76 5F 69 6E 74 72 6F 73 70 65 63 74 ,"rdv_introspect
-00000090 69 6F 6E 22 3A 22 31 2E 31 32 2E 30 22 2C 22 72 ion":"1.12.0","r
-000000A0 64 76 5F 6C 6F 67 69 6E 5F 71 75 65 75 65 22 3A dv_login_queue":
-000000B0 22 30 2E 30 2E 34 22 2C 22 72 64 76 5F 6D 61 74 "0.0.4","rdv_mat
-000000C0 63 68 6D 61 6B 69 6E 67 22 3A 22 33 2E 31 36 2E chmaking":"3.16.
-000000D0 30 22 2C 22 72 64 76 5F 70 6C 61 79 65 72 73 74 0","rdv_playerst
-000000E0 61 74 73 32 22 3A 22 32 2E 31 2E 33 22 2C 22 72 ats2":"2.1.3","r
-000000F0 36 5F 73 65 73 73 69 6F 6E 22 3A 22 30 2E 30 2E 6_session":"0.0.
-00000100 35 22 2C 22 72 36 61 7A 75 72 65 73 61 73 22 3A 5","r6azuresas":
-00000110 22 30 2E 31 2E 31 22 2C 22 72 36 63 6C 6F 75 64 "0.1.1","r6cloud
-00000120 73 65 72 76 65 72 73 22 3A 22 30 2E 38 2E 32 22 servers":"0.8.2"
-00000130 2C 22 72 36 63 6F 6D 6D 65 72 63 65 22 3A 22 30 ,"r6commerce":"0
-00000140 2E 33 2E 31 22 2C 22 72 36 63 6F 6E 66 69 67 22 .3.1","r6config"
-00000150 3A 22 32 2E 30 2E 35 22 2C 22 72 36 64 79 6E 61 :"2.0.5","r6dyna
-00000160 6D 69 63 73 68 6F 70 22 3A 22 31 2E 30 2E 30 22 micshop":"1.0.0"
-00000170 2C 22 72 36 65 6E 64 67 61 6D 65 22 3A 22 30 2E ,"r6endgame":"0.
-00000180 37 2E 30 22 2C 22 72 36 66 65 61 74 73 6F 66 61 7.0","r6featsofa
-00000190 72 6D 73 22 3A 22 30 2E 38 2E 30 22 2C 22 72 36 rms":"0.8.0","r6
-000001A0 66 6C 65 65 74 22 3A 22 30 2E 31 2E 30 22 2C 22 fleet":"0.1.0","
-000001B0 72 36 6B 61 72 6D 61 22 3A 22 31 2E 34 2E 31 22 r6karma":"1.4.1"
-000001C0 2C 22 72 36 6D 61 74 63 68 6D 61 6B 69 6E 67 22 ,"r6matchmaking"
-000001D0 3A 22 35 2E 30 2E 39 22 2C 22 72 36 70 65 6E 61 :"5.0.9","r6pena
-000001E0 6C 74 69 65 73 22 3A 22 30 2E 35 2E 30 22 2C 22 lties":"0.5.0","
-000001F0 72 36 70 6C 61 79 65 72 70 72 6F 66 69 6C 65 22 r6playerprofile"
-00000200 3A 22 32 2E 35 2E 32 22 2C 22 72 36 70 6C 61 79 :"2.5.2","r6play
-00000210 65 72 73 74 61 74 69 73 74 69 63 73 22 3A 22 32 erstatistics":"2
-00000220 2E 30 2E 32 33 22 2C 22 72 36 72 65 63 6F 22 3A .0.23","r6reco":
-00000230 22 31 2E 30 2E 30 22 2C 22 72 36 72 65 77 61 72 "1.0.0","r6rewar
-00000240 64 73 22 3A 22 30 2E 31 35 2E 30 22 2C 22 72 36 ds":"0.15.0","r6
-00000250 73 65 61 73 6F 6E 73 22 3A 22 31 31 2E 30 2E 30 seasons":"11.0.0
-00000260 22 2C 22 72 36 73 65 72 76 69 63 65 61 6C 69 61 ","r6servicealia
-00000270 73 65 73 22 3A 22 30 2E 33 2E 37 22 2C 22 72 36 ses":"0.3.7","r6
-00000280 73 65 73 73 69 6F 6E 6D 61 6E 61 67 65 72 22 3A sessionmanager":
-00000290 22 30 2E 31 33 2E 31 22 2C 22 72 36 73 74 6F 72 "0.13.1","r6stor
-000002A0 65 22 3A 22 30 2E 38 2E 30 22 2C 22 72 36 75 62 e":"0.8.0","r6ub
-000002B0 69 73 65 72 76 69 63 65 73 22 3A 22 31 2E 30 2E iservices":"1.0.
-000002C0 30 22 2C 22 73 61 6E 64 62 6F 78 64 61 74 61 22 0","sandboxdata"
-000002D0 3A 22 30 2E 30 2E 30 22 7D 00 08 00 70 72 75 64 :"0.0.0"}...prud
-000002E0 70 3A 2F 00 p:/.
+00000000 6E 02 7B 22 72 64 76 5F 64 65 62 75 67 22 3A 22 n.{"rdv_debug":"
+00000010 30 2E 30 2E 31 22 2C 22 72 64 76 5F 69 6E 74 72 0.0.1","rdv_intr
+00000020 6F 73 70 65 63 74 69 6F 6E 22 3A 22 31 2E 31 32 ospection":"1.12
+00000030 2E 30 22 2C 22 72 64 76 5F 6C 6F 67 69 6E 5F 71 .0","rdv_login_q
+00000040 75 65 75 65 22 3A 22 30 2E 30 2E 34 22 2C 22 72 ueue":"0.0.4","r
+00000050 64 76 5F 6D 61 74 63 68 6D 61 6B 69 6E 67 22 3A dv_matchmaking":
+00000060 22 33 2E 31 36 2E 30 22 2C 22 72 64 76 5F 70 6C "3.16.0","rdv_pl
+00000070 61 79 65 72 73 74 61 74 73 32 22 3A 22 32 2E 31 ayerstats2":"2.1
+00000080 2E 33 22 2C 22 72 36 5F 73 65 73 73 69 6F 6E 22 .3","r6_session"
+00000090 3A 22 30 2E 30 2E 35 22 2C 22 72 36 61 7A 75 72 :"0.0.5","r6azur
+000000A0 65 73 61 73 22 3A 22 30 2E 31 2E 31 22 2C 22 72 esas":"0.1.1","r
+000000B0 36 63 6C 6F 75 64 73 65 72 76 65 72 73 22 3A 22 6cloudservers":"
+000000C0 30 2E 38 2E 32 22 2C 22 72 36 63 6F 6D 6D 65 72 0.8.2","r6commer
+000000D0 63 65 22 3A 22 30 2E 33 2E 31 22 2C 22 72 36 63 ce":"0.3.1","r6c
+000000E0 6F 6E 66 69 67 22 3A 22 32 2E 30 2E 35 22 2C 22 onfig":"2.0.5","
+000000F0 72 36 64 79 6E 61 6D 69 63 73 68 6F 70 22 3A 22 r6dynamicshop":"
+00000100 31 2E 30 2E 30 22 2C 22 72 36 65 6E 64 67 61 6D 1.0.0","r6endgam
+00000110 65 22 3A 22 30 2E 37 2E 30 22 2C 22 72 36 66 65 e":"0.7.0","r6fe
+00000120 61 74 73 6F 66 61 72 6D 73 22 3A 22 30 2E 38 2E atsofarms":"0.8.
+00000130 30 22 2C 22 72 36 66 6C 65 65 74 22 3A 22 30 2E 0","r6fleet":"0.
+00000140 31 2E 30 22 2C 22 72 36 6B 61 72 6D 61 22 3A 22 1.0","r6karma":"
+00000150 31 2E 34 2E 31 22 2C 22 72 36 6D 61 74 63 68 6D 1.4.1","r6matchm
+00000160 61 6B 69 6E 67 22 3A 22 35 2E 30 2E 39 22 2C 22 aking":"5.0.9","
+00000170 72 36 70 65 6E 61 6C 74 69 65 73 22 3A 22 30 2E r6penalties":"0.
+00000180 35 2E 30 22 2C 22 72 36 70 6C 61 79 65 72 70 72 5.0","r6playerpr
+00000190 6F 66 69 6C 65 22 3A 22 32 2E 35 2E 32 22 2C 22 ofile":"2.5.2","
+000001A0 72 36 70 6C 61 79 65 72 73 74 61 74 69 73 74 69 r6playerstatisti
+000001B0 63 73 22 3A 22 32 2E 30 2E 32 33 22 2C 22 72 36 cs":"2.0.23","r6
+000001C0 72 65 63 6F 22 3A 22 31 2E 30 2E 30 22 2C 22 72 reco":"1.0.0","r
+000001D0 36 72 65 77 61 72 64 73 22 3A 22 30 2E 31 35 2E 6rewards":"0.15.
+000001E0 30 22 2C 22 72 36 73 65 61 73 6F 6E 73 22 3A 22 0","r6seasons":"
+000001F0 31 31 2E 30 2E 30 22 2C 22 72 36 73 65 72 76 69 11.0.0","r6servi
+00000200 63 65 61 6C 69 61 73 65 73 22 3A 22 30 2E 33 2E cealiases":"0.3.
+00000210 37 22 2C 22 72 36 73 65 73 73 69 6F 6E 6D 61 6E 7","r6sessionman
+00000220 61 67 65 72 22 3A 22 30 2E 31 33 2E 31 22 2C 22 ager":"0.13.1","
+00000230 72 36 73 74 6F 72 65 22 3A 22 30 2E 38 2E 30 22 r6store":"0.8.0"
+00000240 2C 22 72 36 75 62 69 73 65 72 76 69 63 65 73 22 ,"r6ubiservices"
+00000250 3A 22 31 2E 30 2E 30 22 2C 22 73 61 6E 64 62 6F :"1.0.0","sandbo
+00000260 78 64 61 74 61 22 3A 22 30 2E 30 2E 30 22 7D 00 xdata":"0.0.0"}.
+00000270 08 00 70 72 75 64 70 3A 2F 00 ..prudp:/.
```
+_[Full Request Packet](../../00_packet_dumps/C2S-LoginProtocol__LoginWithToken_V1)_
+
> [!NOTE]
> While this is a real packet sent, the ticket has been replaced with a dummy for security reasons. The normal ticket is a base64-encoded [JWT](../../03_ubisoft_services/04_initial_login_flow.md#ticket).
-| Name | Description | Type |
-|---------------------|---------------------------------------------------------------------|--------------------------------------------------|
-| Token | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_rendezvous_structure.md#string) |
-| Client Version Info | Information about the client version | [`ClientVersionInfo`](#client-version-info) |
-| Diagnostic URL | Unknown. | [`String`](../03_rendezvous_structure.md#string) |
+##### Parsing
+| Name | Description | Type |
+|---------------------|---------------------------------------------------------------------|---------------------------------------------------------------------|
+| Token | Ticket obtained via UbiServices, identifying the connecting client. | [`String`](../03_rendezvous_structure.md#structure-string) |
+| Client Version Info | Information about the client version | [`ClientVersionInfo`](#client-version-info) |
+| Diagnostic URL | Unknown. | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
### Successful Response
-| Name | Description | Type |
-|----------------------|--------------------------------------------------------------------|--------------------------------------------------|
-| User PID | ID of the user profile that the connected client is identified as. | [`UUID`](../03_rendezvous_structure.md#uuid) |
-| Protocol URL | Unknown. | [`String`](../03_rendezvous_structure.md#string) |
-| Required Redirection | Unknown exactly. Presumably self-explanatory. | `bool` |
+> [!NOTE]
+> TODO: Example
+
+##### Parsing
+| Name | Description | Type |
+|----------------------|--------------------------------------------------------------------|---------------------------------------------------------------------|
+| User PID | ID of the user profile that the connected client is identified as. | [`UUID`](../03_rendezvous_structure.md#structure-uuid) |
+| Protocol URL | Unknown. | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
+| Required Redirection | Unknown exactly. Presumably self-explanatory. | `bool` |
## Method: `Register`
+Currently unknown exactly what this method does, although it is called after receiving a successful response from the [LoginWithToken method](#method-loginwithtoken).
+
+### Request
+##### Example
+```
+Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+00000000 04 00 00 00 2F 00 70 72 75 64 70 3A 2F 61 64 64 ..../.prudp:/add
+00000010 72 65 73 73 3D 30 30 30 2E 30 30 30 2E 30 30 2E ress=000.000.00.
+00000020 30 30 30 3B 70 6F 72 74 3D 39 31 30 33 3B 73 69 000;port=9103;si
+00000030 64 3D 31 35 00 2E 00 70 72 75 64 70 3A 2F 61 64 d=15...prudp:/ad
+00000040 64 72 65 73 73 3D 30 30 30 2E 30 30 30 2E 30 30 dress=000.000.00
+00000050 30 2E 30 3B 70 6F 72 74 3D 39 31 30 33 3B 73 69 0.0;port=9103;si
+00000060 64 3D 31 35 00 2D 00 70 72 75 64 70 3A 2F 61 64 d=15.-.prudp:/ad
+00000070 64 72 65 73 73 3D 30 30 30 2E 30 30 30 2E 30 30 dress=000.000.00
+00000080 2E 30 3B 70 6F 72 74 3D 39 31 30 33 3B 73 69 64 .0;port=9103;sid
+00000090 3D 31 35 00 2D 00 70 72 75 64 70 3A 2F 61 64 64 =15.-.prudp:/add
+000000A0 72 65 73 73 3D 30 30 30 2E 30 30 30 2E 30 30 2E ress=000.000.00.
+000000B0 30 3B 70 6F 72 74 3D 39 31 30 33 3B 73 69 64 3D 0;port=9103;sid=
+000000C0 31 35 00 15.
+```
+
+_[Full Request Packet](../../00_packet_dumps/C2S-LoginProtocol__Register_V1)_
+
+> [!NOTE]
+> While this is a real packet sent, local IP addresses have been replaced with dummies for privacy reasons. It is currently unknown how the IP addresses are produced.
+
+##### Parsing
+| Name | Description | Type |
+|--------------|-------------|----------------------------------------------------------------------------------------------------------------------------------|
+| Station URLs | Unknown. | [`List`](../03_rendezvous_structure.md#structure-listt)`<`[`Station URL`](../03_rendezvous_structure.md#structure-stationurl)`>` |
+
+### Response
+
+> [!NOTE]
+> TODO: Example
+
+##### Parsing
+| Name | Description | Type |
+|---------------|-----------------------------------------------|---------------------------------------------------------------------|
+| Connection ID | Unknown exactly. Presumably self-explanatory. | `u32` |
+| Url Public | Unknown. | [`Station URL`](../03_rendezvous_structure.md#structure-stationurl) |
\ No newline at end of file
--
Gitblit v1.10.0