diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md deleted file mode 100644 index bea9efe..0000000 --- a/CONTRIBUTION.md +++ /dev/null @@ -1,41 +0,0 @@ -# How can I contribute to this project? -First, please read the technical explanation at the bottom of the README and other websites to understand the basic workings of Widevine DRM and this extension. - -## Submit Schemes -If you find a website where this extension does not work, you can contribute to this project by submitting a scheme. - -Some websites do not send or receive challenge or license raw data directly, but instead encode it in Base64 or append JSON data, so the general Widevine scheme cannot retrieve the keys properly. - -Such a trick is called License wrapping. - -For more informations: - -https://shaka-player-demo.appspot.com/docs/api/tutorial-license-wrapping.html - -https://reference.dashif.org/dash.js/latest/samples/drm/license-wrapping.html - -You can submit schemes in [python/schemes/](https://github.com/FoxRefire/wvg/tree/next/python/schemes). - -Copy the `CommonWV.py` in the directory and edit it so that the request body sent to the license server and the final `license` variable value processed by Pywidevine and used to obtain the key are appropriate. - -## JSON rules for License URL and scheme selection -I plan to allow the extension to handle JSON rules for automatic selection of license URLs and schemes later. - -JSON rules will be able to determine the appropriate license URL and scheme based on regular expressions. - -## Improve UI -Add CSS file to the extension to improve the form design. - -## Translate Extension -If you would like to translate this extension into your native language, please contact me via Issues. - -If there are many applicants, I'll prepare for localization. - -## Host public API for legacy extension -Due to my Koyeb account has banned, Public API for legacy extension is down. - -If you host your public API, please contact me at Issues. - -Read here for how to deploy WVCore.Server. - -https://github.com/FoxRefire/wvg/issues/3#issuecomment-2066959592 diff --git a/README.md b/README.md index d523a68..976fd47 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,25 @@ ## WVGuesserExtension-NextGen -Extension works standalone. - -Not anymore need WVCore.Server API setup! Looking for legacy version?: https://github.com/FoxRefire/wvg/tree/legacy -### Instalation +#### For more details, see [docs](https://github.com/FoxRefire/wvg/wiki) + +### Installation 1. Download or clone this code 2. At the same directory of `manifest.json`(root directory of this extension), put the one of the following Android L3 CDM file(s). * Supported CDM Types - 1\. `device.wvd` + 1. `device.wvd` - 2\. `device_client_id_blob` + `device_private_key` + 2. `device_client_id_blob` + `device_private_key` - 3\. `client_id.bin` + `private_key.pem` + 3. `client_id.bin` + `private_key.pem` + + 4. `remote.json` ([How to use Remote CDM](https://github.com/FoxRefire/wvg/wiki/Using-with-Remote-CDM)) 3. Install extension - * Firefox + * Firefox ([Permanent method](https://github.com/FoxRefire/wvg/wiki/Permanent-install-method-for-Firefox)) 1\. Navigate to `about:debugging#/runtime/this-firefox` @@ -39,36 +40,6 @@ Looking for legacy version?: https://github.com/FoxRefire/wvg/tree/legacy ### Demo [Screencast_20240505_014046.webm](https://github.com/FoxRefire/wvg/assets/155989196/dbb07fde-a368-40f7-8209-711d5586009e) - - -### Todo - -* Improve UI -* Localization -* Cache pyodide to make guessing process faster - -For contributors, see here: -https://github.com/FoxRefire/wvg/blob/next/CONTRIBUTION.md - -### Disclaimer - -This extension is for educational and researchment purpose. - -Only use it for content for which you own the rights and do not use it for piracy purposes. - -### How it works? - -![image](https://github.com/FoxRefire/wvg/assets/155989196/91a52607-9d24-4072-8c25-c4dc7d062415) - - -1. inject.js injected by content.js gets Widevine PSSH by hooking EME. -2. background.js fetches POST URLs/Headers -3. PSSHs will passed by this route inject.js-->content.js-->background.js-->popup.js -4. PSSHs+URLs+Headers will passed by this route background.js-->popup.js -5. popup.js will contols UI(popup.html) -6. User input into UI -7. popup.js calls pywidevine script using pyodide in browser - ## Third-party libraries * [Pyodide](https://github.com/pyodide/pyodide) ([MPL-2.0](https://github.com/pyodide/pyodide/blob/main/LICENSE)) * [Pywidevine](https://github.com/devine-dl/pywidevine) ([GPL-3.0](https://github.com/devine-dl/pywidevine/blob/master/LICENSE))