-
Prerequesites:
- Windows 10 or Windows 11
- Python 3.9 (I used pyenv)
- Wireshark
-
If you're on Windows 11: (source)
- Search for "Exploit protection" and open
- Click "Program settings"
- Click "Add program to customize"
- Click "Add program by name"
- Enter
lsass.exe
and continue - Scroll to "Hardware-enforced Stack Protection", turn it Off, and click Apply
- Restart your computer
-
Install frida and ensure it works
> pip install frida-tools > frida --version 15.1.15
-
Save
keylog.js
somewhere you'll remember
-
Close Ubisoft Connect
-
Search for "Windows PowerShell", right-click it and Run as administrator
-
Start capturing keys with
frida --no-pause lsass.exe -l \path\to\keylog.js
- If frida can't find
lsass.exe
, get its process ID from the Task Manager Details tab, or by runningGet-Process -Name lsass
and use that instead oflsass.exe
in thefrida
command
- If frida can't find
-
You should see
C:\keylog.log
beginning to populate. Keepfrida
running until you're done capturing packets
- Open Wireshark
- Go to Edit > Preferences > Protocols > TLS > (Pre)-Master-Secret log filename > Browse... > navigate to
C:\keylog.log
, then click OK - View > Name Resolution > Check "Resolve Network Addresses"
- Click your adapter in the "Capture" list to begin capturing (I use "Ethernet")
- Open Ubisoft Connect and do some things
- Click the 🟥 button to stop capture
- In the filter bar, enter
(ip.dst_host == dmx.upc.ubisoft.com) || (ip.src_host == dmx.upc.ubisoft.com)
- Press CTRL+R to reload the packets to ensure decryption applies
- Right click a TLSv1.2 packet > Follow > TLS Stream, a window containing some readable text should appear. This means the decryption is working.
- Set "Show data as" to
YAML
, click "Save as...", and save astls-stream.yml
. - Once saved, click the "Filter out this stream" button. Typically there are multiple demux TLS streams in one capture, and you'll need to repeat the above step for each one. Keep saving and filtering until none remain.
- Clone this project
npm i
- Move
tls-stream.yml
to the root of the project npm start
. The output will be written todecodes.json
Only needed if you need to update the protos
- Follow steps 1-3 of this guide.
- Copy the
upc_protos
folder here and rename it toproto