Striven
2025-09-10 e170bbf6f9b4e7b22b50d4130b0a2808e2e85f45
04_rendezvous/01_protocols/01_loginprotocol.md
@@ -5,67 +5,62 @@
### Request
##### Full Packet 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).
##### Parsing
| 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) |
| 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
@@ -73,10 +68,51 @@
> 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#uuid)     |
| Protocol URL         | Unknown.                                                           | [`String`](../03_rendezvous_structure.md#string) |
| Required Redirection | Unknown exactly. Presumably self-explanatory.                      | `bool`                                           |
| 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) |