## 💡 What Is Contrary: Janus?
**Contrary: Janus** is a closed-source desktop application built natively in **Rust and Tauri** that implements a full multi-platform DRM research toolkit. It authenticates real user sessions against **Steam's CM network** and **Ubisoft Connect**, extracts cryptographically signed ownership proofs, and securely orchestrates an official Denuvo license negotiation — producing a valid activation response directly from Denuvo's own servers.
The name **Janus** — the two-faced Roman god of duality and transitions — reflects the tool's dual-role design: an **Activator** that initiates the license pipeline, and a **Leech** that receives and deploys the result. Two faces. One pipeline.
> This project is intended for **software interoperability research and DRM protocol analysis**. It documents how Steam and Ubisoft ownership proof pipelines intersect with Denuvo's license validation architecture.
---
## ⚡ Quick Start & Installation
Contrary: Janus is **closed-source proprietary software**. The only supported installation method is the official pre-built binary.
**Prerequisites:**
- **Windows 10 (1903+) or Windows 11, x64**
- **Node.js v18+** (Janus will warn you on launch if it's missing)
- **Steam / Ubisoft Connect** installed
- **Active internet connection**
**Installation:**
1. Go to [**Releases**](../../releases/latest)
2. Download `Dnvo Janus.exe`
3. Place it anywhere you like (Desktop, USB, etc.)
4. Double-click to run — that's it!
> **Note**: The `Dnvo Janus.exe` is fully portable. No installation, no admin rights, no setup wizard. **Everything is bundled inside the single `.exe` file (~17MB).**
### Auto-Updates
The app checks for updates automatically on startup. When a new release is available, an in-app notification appears. Click **Update** — the app downloads the new portable binary, swaps itself out, and restarts automatically.
---
## 🧭 Usage Guide
### 🔍 Step 0 — Find Your Game ID
Before doing anything, you need the correct numeric ID for your target game.
**🟦 Steam Games — Get the AppID from SteamDB**
1. Go to **[https://steamdb.info/](https://steamdb.info/)**
2. Use the search bar at the top to search for your game by name
3. Click the game from the results
4. The **AppID** is the number shown in the URL and on the page — e.g. `2246340` for Monster Hunter Wilds
**🟠 Ubisoft Games — Get the Uplay ID**
1. Go to the **[Haoose/UPLAY_GAME_ID](https://github.com/Haoose/UPLAY_GAME_ID)** repository
2. Search the list (`Ctrl+F`) for your game by name
3. The number next to the game name is the **Uplay Game ID** — use this in Janus
> ⚙️ **EA Pipeline — Coming Soon!** EA App authentication support is currently in development.
---
### 🔐 Step 1 — Authenticate
Open **Dnvo Janus.exe**. The **Authentication** panel loads by default.
**For Steam:**
- Enter your **Steam username and password** and click Login
- If prompted, enter your **Steam Guard code** (email or mobile authenticator), OR click **QR Login** and scan the code.
- On success, your Steam avatar and username appear in the top sidebar.
**For Ubisoft:**
- Switch to the **Ubisoft** tab in the Authentication panel
- Enter your **Ubisoft/Uplay email and password** and click Login
- Complete any 2FA if prompted.
> 💾 Accounts are saved locally. On future launches, just click your saved account — no need to re-enter credentials.
---
### 🎯 Step 2A — Activator (You own the game on Steam/Ubisoft)
> ⚠️ Requires an account that **legitimately owns** the target game. The network enforces this cryptographically.
1. Go to the **Activator** panel. Your Denuvo-protected owned games are shown automatically — select one, or type the ID manually.
2. Click **Extract & Process** — Janus connects to the platform, grabs the ownership proof, and prepares the activation payload.
3. Wait for the confirmation, then click **Generate Code** to produce a **7-digit share code**.
4. Share the code with the person running the Leech.
---
### 🛰️ Step 2B — Leech (You received a code, game is installed)
> The Leech does **not** need to own the game or have an account logged in.
1. Go to the **Leech** panel.
2. Paste the **7-digit code** you received from the Activator.
3. Enter the target **AppID / Game ID**.
4. Click **Activate** — Janus auto-detects the game folder and deploys the native validation bridge.
5. Click **Launch** to start the game directly from Janus!
---
### 📁 Step 3 — Check History
Every activation is logged locally. The **History** panel shows a full audit log: game title, AppID, platform, and timestamp. You can clear it at any time with one click.
---
## 🔐 Core Features & Workflow
- **Steam Pipelines**: Password login, Steam Guard OTP/TOTP, QR Code login
- **Ubisoft Pipelines**: Native demuxing and license exchange
- **Session Persistence**: Multi-account management, one-click re-auth
- **Auto-Detection**: Scans Steam library paths to find installed games automatically
### How Activation Works
When the Leech deploys the runtime and the game is launched:
```
Game starts
│
▼
Native validation bridge is loaded alongside the game
│
▼
Runtime establishes a secure connection for validation
│
▼
Runtime pushes the activation payload and contacts
Denuvo's official anti-tamper endpoint:
→ support.codefusion.technology
│
▼
Denuvo's servers process the request through their
official license negotiation protocol and issue
an official activation response
│
▼
Game receives Denuvo's official activated response
and launches normally ✅
```
*The native validation bridge does not patch, crack, or remove Denuvo Anti-Tamper. The game performs its full, unmodified Denuvo initialization.*
---
## 🎮 Supported Games Database
Contrary: Janus maintains an internal database of Denuvo-protected titles. The Activator panel filters your library to show only Denuvo games, preventing accidental operations on unprotected titles.