{"id":17781604,"url":"https://github.com/devlarley/widevineproxy2","last_synced_at":"2025-05-16T13:05:47.631Z","repository":{"id":259212164,"uuid":"876611525","full_name":"DevLARLEY/WidevineProxy2","owner":"DevLARLEY","description":"An extension-based proxy for Widevine EME challenges and license messages. Modifies the challenge before it reaches the web player. Bypasses Hashes, one-time-tokens and license wrapping.","archived":false,"fork":false,"pushed_at":"2025-03-26T16:55:51.000Z","size":4460,"stargazers_count":272,"open_issues_count":5,"forks_count":63,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-04-03T22:06:40.341Z","etag":null,"topics":["chrome-addon","chrome-extension","drm","drm-bypass","encrypted-media","encrypted-media-extensions","firefox-addon","firefox-extension","forge","node-widevine","protobufjs","pywidevine","web-extensions","widevine","widevine-dl","widevine-drm","widevine-l3-decryptor"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DevLARLEY.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-22T09:08:35.000Z","updated_at":"2025-04-03T13:33:17.000Z","dependencies_parsed_at":"2025-01-20T05:22:50.675Z","dependency_job_id":"3ac2962e-b8a8-4ae2-a490-4818ec672c77","html_url":"https://github.com/DevLARLEY/WidevineProxy2","commit_stats":{"total_commits":25,"total_committers":4,"mean_commits":6.25,"dds":0.6,"last_synced_commit":"b5ef7d00d0d0ebd98604700ba0716991ae049ef9"},"previous_names":["devlarley/widevineproxy2"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevLARLEY%2FWidevineProxy2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevLARLEY%2FWidevineProxy2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevLARLEY%2FWidevineProxy2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevLARLEY%2FWidevineProxy2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DevLARLEY","download_url":"https://codeload.github.com/DevLARLEY/WidevineProxy2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248564908,"owners_count":21125412,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-addon","chrome-extension","drm","drm-bypass","encrypted-media","encrypted-media-extensions","firefox-addon","firefox-extension","forge","node-widevine","protobufjs","pywidevine","web-extensions","widevine","widevine-dl","widevine-drm","widevine-l3-decryptor"],"created_at":"2024-10-27T04:03:41.108Z","updated_at":"2025-04-12T11:49:39.685Z","avatar_url":"https://github.com/DevLARLEY.png","language":"JavaScript","readme":"# WidevineProxy2\r\nAn extension-based proxy for Widevine EME challenges and license messages. \\\r\nModifies the challenge before it reaches the web player and retrieves the decryption keys from the response.\r\n\r\n## Features\r\n+ User-friendly / GUI-based\r\n+ Bypasses one-time tokens, hashes, and license wrapping\r\n+ JavaScript native Widevine implementation\r\n+ Supports Widevine Device files\r\n+ Manifest V3 compliant\r\n\r\n## Widevine Devices\r\nThis addon requires a Widevine Device file to work, which is not provided by this project.\r\n+ Use an existing Remote CDM like [this one](https://github.com/user-attachments/files/19639399/remote.json)\r\n+ Follow [this](https://forum.videohelp.com/threads/408031) guide if you want to dump your own device.\r\n+ Ready-to-use Widevine Devices can be found on the [VideoHelp forum](https://forum.videohelp.com/forums/48).\r\n\r\n## Compatibility\r\n+ Compatible (tested) browsers: Firefox/Chrome on Windows/Linux.\r\n+ Works with any service that accepts challenges from Android devices on the same endpoint.\r\n\r\n## Installation\r\n+ Chrome\r\n  1. Download the ZIP file from the [releases section](https://github.com/DevLARLEY/WidevineProxy2/releases)\r\n  2. Navigate to `chrome://extensions/`\r\n  3. Enable `Developer mode`\r\n  4. Drag-and-drop the downloaded file into the window\r\n+ Firefox\r\n  + Persistent installation\r\n    1. Download the XPI file from the [releases section](https://github.com/DevLARLEY/WidevineProxy2/releases)\r\n    2. Navigate to `about:addons`\r\n    3. Click the settings icon and choose `Install Add-on From File...`\r\n    4. Select the downloaded file\r\n  + Temporary installation\r\n    1. Download the ZIP file from the [releases section](https://github.com/DevLARLEY/WidevineProxy2/releases)\r\n    2. Navigate to `about:debugging#/runtime/this-firefox`\r\n    3. Click `Load Temporary Add-on...` and select the downloaded file\r\n\r\n## Setup\r\n### Widevine Device\r\nIf you only have a `device_client_id_blob` and `device_private_key`, run this command to create a .wvd file:\r\n```\r\npywidevine create-device -k device_private_key -c device_client_id_blob -t \"ANDROID\" -l 3\r\n```\r\nNow, open the extension, click `Choose File` and select your Widevine Device file.\r\n\r\n### Remote CDM\r\nIf you don't already have a `remote.json` file, open the API URL in the browser (if provided) and save the response as `remote.json`. \\\r\nNow, open the extension, click `Choose remote.json` and select the JSON file provided by your API.\r\n\r\n\r\n+ Select the type of device you're using in the top right-hand corner\r\n+ 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.\r\n+ The maximum number of Widevine devices is ~25 **OR** ~200 Remote CDMs\r\n+ Check `Enabled` to activate the message interception and you're done.\r\n\r\n## Usage\r\nAll the user has to do is to play a DRM protected video and the decryption keys should appear in the `Keys` group box (if the service is not unsupported, as stated above). \\\r\nKeys are saved:\r\n+ Temporarily until the extension is either refreshed manually (if installed temporarily) or a removal of the keys is manually initiated.\r\n+ Permanently in the extension's `chrome.storage.local` storage until manually wiped or exported via the command line.\r\n\u003e [!NOTE]  \r\n\u003e The video will not play when the interception is active, as the Widevine CDM library isn't able to decrypt the Android CDM license.\r\n\r\n+ Click the `+` button to expand the section to reveal the PSSH and keys.\r\n\r\n## FAQ\r\n\u003e What if I'm unable to get the keys?\r\n\r\nThis 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\r\n\r\n## Issues\r\n+ DRM playback won't work when the extension is disabled and EME Logger is active. This is caused by my fix for dealing with EME Logger interference (solutions are welcome).\r\n\r\n## Demo\r\n[Widevineproxy2.webm](https://github.com/user-attachments/assets/8f51cee3-50e2-4aa4-b244-afa2d0b2987e)\r\n\r\n## Disclaimer\r\n+ This program is intended solely for educational purposes.\r\n+ Do not use this program to decrypt or access any content for which you do not have the legal rights or explicit permission.\r\n+ Unauthorized decryption or distribution of copyrighted materials is a violation of applicable laws and intellectual property rights.\r\n+ 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.\r\n+ The developers, contributors, and maintainers of this program are not responsible for any misuse or illegal activities performed using this software.\r\n+ By using this program, you agree to comply with all applicable laws and regulations governing digital rights and copyright protections.\r\n\r\n## Credits\r\n+ [node-widevine](https://github.com/Frooastside/node-widevine)\r\n+ [forge](https://github.com/digitalbazaar/forge)\r\n+ [protobuf.js](https://github.com/protobufjs/protobuf.js)\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlarley%2Fwidevineproxy2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevlarley%2Fwidevineproxy2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevlarley%2Fwidevineproxy2/lists"}