Metadata-Version: 2.4
Name: elgato-decrypter
Version: 1.0.0
Summary: A tool to decrypt Elgato Stream Deck manifest files and plugin packages.
Project-URL: Homepage, https://github.com/Tiebe/elgato-decrypter
Project-URL: Bug Tracker, https://github.com/Tiebe/elgato-decrypter/issues
Author-email: Tiebe <tiebe@groosman.nl>
License-Expression: MIT
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Requires-Dist: cbor2>=5.4.0
Requires-Dist: cryptography>=41.0.0
Description-Content-Type: text/markdown

# Elgato Stream Deck Manifest Decrypter

A command-line tool to decrypt encrypted manifest files (`manifest.json`) used by the Elgato Stream Deck application. It supports decrypting standalone manifest files as well as in-place decryption of `.streamDeckPlugin` packages.

**Note:** This tool requires the `StreamDeck.exe` binary to be installed on your system, as it dynamically extracts the necessary decryption keys from the application binary at runtime. It does **not** contain any embedded secrets or proprietary keys.

## Features

- **Manifest Decryption**: Decrypts individual encrypted `manifest.json` files.
- **Plugin Decryption**: Handles `.streamDeckPlugin` (ZIP) files, decrypting the internal manifest in-place.
- **Dynamic Key Extraction**: Parses the installed `StreamDeck.exe` to retrieve cryptographic constants, ensuring compatibility across versions.
- **Safe**: No hardcoded keys or secrets are distributed with this tool.

## Installation

```bash
pip install elgato-decrypter
```

## Usage

### Decrypt a single manifest file

```bash
elgato-decrypter path/to/encrypted/manifest.json [output_file.json]
```

### Decrypt a plugin package (in-place)

```bash
elgato-decrypter path/to/plugin.streamDeckPlugin
```

### Specify custom Stream Deck binary path

By default, the tool looks for `StreamDeck.exe` in `C:\Program Files\Elgato\StreamDeck\StreamDeck.exe`. If you have it installed elsewhere:

```bash
elgato-decrypter path/to/manifest.json --binary "D:\Games\Elgato\StreamDeck.exe"
```

## Technical Details

The encryption scheme uses a combination of:
- Custom PCG-based XOR stream cipher
- X25519 Elliptic Curve Diffie-Hellman (ECDH) key exchange
- HKDF-SHA256 key derivation
- AES-256-GCM authenticated encryption

For full technical details, see the project documentation.

## License

MIT License
