Files
Vineless/README.md

107 lines
6.3 KiB
Markdown

# <img src="https://raw.githubusercontent.com/Ingan121/Vineless/refs/heads/master/src/images/icon.png" width="48" alt="Vineless Icon"> Vineless
* A browser extension to play DRM-protected content without a real CDM
* Works by redirecting the content keys to the browser's ClearKey handler
## Features
+ User-friendly / GUI-based
+ Supports Widevine and PlayReady-protected content
+ Manifest V3 compliant
+ Per-site configuration
## Devices
* This addon requires a Widevine/PlayReady Device file (`*.wvd`/`*.prd`) to work. Don't ask me where to get those.
* For remote devices, you can find samples in the `devices` directory. Some of them might require modification to work with your specific use case.
## Compatibility
+ Should be compatible with all modern browsers that support the standard EME, the ClearKey CDM, and the Manifest V3 extensions
+ Tested browsers
+ Chrome, Edge, Brave, Supermium, ungoogled-chromium, Firefox, LibreWolf, and Marble on Windows
+ Lemur Browser on Android
+ Incompatible browsers:
+ Tor Browser (does not support ClearKey)
+ Firefox for Android, and its forks, such as Kiwi Browser (does not support ClearKey)
+ Safari and other WebKit-based browsers (its ClearKey implementation is weird and non-standard I think)
+ Internet Explorer, obviously.
+ Works with any service that accepts challenges from Android devices on the same endpoint.
+ Services incompatible with mobile/TV devices:
+ Netflix
+ VdoCipher (if 2074 error occurs)
+ CBS
+ Fastevo
+ Rakuten TV (only applies to Widevine)
+ Some services may detect your browser and interfere with PlayReady playback. Try using a user-agent changer extension, or use a Chromium-based browser for PlayReady playback.
+ Firefox-based browsers may fail to play some PlayReady-protected video, with an internal error saying `ChromiumCDMParent::RecvDecodeFailed with status decode error`. This is a problem with the browser's ClearKey handler, and Vineless can do nothing about it. Please use a Chromium-based browser if this error occurs.
+ Incompatible extensions:
+ WidevineProxy2, PlayreadyProxy2, or anything similar
+ EME Call and Event Logger (extension, not the userscript)
+ For Vineless to work, these extensions must be fully disabled in the browser's extensions page
## Installation
+ Chrome
1. Download the ZIP file from the [releases section](https://github.com/Ingan121/Vineless/releases)
2. Navigate to `chrome://extensions/`
3. Enable `Developer mode`
4. Drag-and-drop the downloaded file into the window
+ Firefox
+ Persistent installation
1. Download the XPI file from the [releases section](https://github.com/Ingan121/Vineless/releases)
2. Navigate to `about:addons`
3. Click the settings icon and choose `Install Add-on From File...`
4. Select the downloaded file
+ Temporary installation
1. Download the ZIP file from the [releases section](https://github.com/Ingan121/Vineless/releases)
2. Navigate to `about:debugging#/runtime/this-firefox`
3. Click `Load Temporary Add-on...` and select the downloaded file
## Setup
+ Open the extension and select the type of device you're using in the top `Systems` section
+ Click one of the `Choose File` buttons to select device files
+ You're all set!
## Notes
+ The files are saved in the extension's `chrome.storage.sync` storage and will be synchronized across any browsers into which the user is signed in with their Google account.
+ The maximum number of devices is ~25 Local **OR** ~200 Remote CDMs
+ The maximum number of per-site profiles is ~200 profiles
+ The number of saved key logs is unlimited as long as your disk space allows
## Usage
All the user has to do is to play a DRM protected video. With everything set up properly, videos will start to play even without a supported DRM system.
## FAQ
> What if I'm unable to play the video?
* First, check if the service accepts your device and is working correctly.
* For Widevine, use either [WidevineProxy2](https://github.com/DevLARLEY/WidevineProxy2) or [openwv](https://github.com/tchebb/openwv) with the same WVD file.
* For PlayReady, use [PlayreadyProxy2](https://github.com/DevLARLEY/PlayreadyProxy2/) with the same PRD file.
* For ClearKey, just fully disable Vineless and test the playback with the non-intercepted ClearKey handler.
* Do note that WidevineProxy2 and PlayreadyProxy2 do not support playback, so just test if you can acquire the keys with them. Also, fully disable Vineless before testing those two.
* If those aren't working as well, this automatically means that the license server is blocking your CDM and that you either need a CDM from a physical device, a ChromeCDM, or an L1 Android CDM. Don't ask where you can get these.
* If those are working but Vineless isn't working, please report this on the issues page. Please include the DevTools console logs as well, and make sure the verbose/debug logs are enabled.
## Build
* Requirements: Node.js (with npm), Git (if cloning from GitHub)
```sh
git clone https://github.com/Ingan121/Vineless
cd Vineless
npm install
npm run build
# The build output will be in the `dist` directory
```
## Disclaimer
+ This program is intended solely for educational purposes.
+ Do not use this program to decrypt or access any content for which you do not have the legal rights or explicit permission.
+ Unauthorized decryption or distribution of copyrighted materials is a violation of applicable laws and intellectual property rights.
+ This tool must not be used for any illegal activities, including but not limited to piracy, circumventing digital rights management (DRM), or unauthorized access to protected content.
+ The developers, contributors, and maintainers of this program are not responsible for any misuse or illegal activities performed using this software.
+ By using this program, you agree to comply with all applicable laws and regulations governing digital rights and copyright protections.
## Credits
+ [WidevineProxy2](https://github.com/DevLARLEY/WidevineProxy2)
+ [PlayreadyProxy2](https://github.com/DevLARLEY/PlayreadyProxy2/tree/f4965f809dbea1a309e1fd50c072f50bf08fb03c)
+ [node-widevine](https://github.com/Frooastside/node-widevine)
+ [forge](https://github.com/digitalbazaar/forge)
+ [protobuf.js](https://github.com/protobufjs/protobuf.js)
+ [noble-curves](https://github.com/paulmillr/noble-curves)
+ [xmldom](https://github.com/xmldom/xmldom)