VideoHelp Forum


Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays!


Try StreamFab Downloader and download streaming video from Youtube, Netflix, Amazon! Download free trial.


+ Reply to Thread
Results 1 to 7 of 7
Thread
  1. Member
    Join Date
    Feb 2024
    Location
    Malaysia
    Search Comp PM
    WKSKEY-2.0
    ==================

    WKSKEY-2.0 is a tool designed to obtain Widevine keys from Media Presentation Description (MPD) URLs. It uses a modular approach to handle various streaming services, allowing users to easily customize and expand its functionality according to their needs.

    Main Features
    -----------------

    - Modular Service Handling: WKSKEY-2.0 has a modular structure that separates logic for each streaming service into individual modules. Currently, it supports two services: prime and astro. Each module can handle service-specific DRM requests, including how they handle parameters, cookies, and data sent in requests.
    - Automatic Key Retrieval: Using PSSH data provided or extracted from the URL MPD, WKSKEY-2.0 can automatically request and process Widevine keys, simplifying the process of obtaining keys for decryption purposes.
    - High Flexibility: Users can easily add support for new services by creating new service modules and integrating them into the main script.

    Usage
    -----

    To use WKSKEY-2.0, users need to specify the Widevine license URL and other options through command-line arguments. Here's a basic usage example:

    Code:
    python main.py --license-url [URL_LICENSE] --mpd-url [URL_MPD] --service prime
    Adding New Services

    To add a new service, create a module in the services folder with an implementation that handles specific DRM requests from that service. The module should provide methods such as get_headers(), get_params(), get_cookies(), and get_data(). After that, the new module can be integrated into main.py by adding a special condition for the service in the function get_license_keys.

    Directory Structure

    - modules/: Contains modules used for device configuration and DRM processing.
    - services/: A per-service module that provides service-specific logic for handling DRM requests and processing.
    - main.py: The main script that coordinates the key retrieval and processing process.

    Contribution

    Contributions to WKSKEY-2.0 are greatly appreciated. If you have bug fixes, enhancements, or want to add support for new services, please make a pull request.

    Source: https://github.com/ThatNotEasy/Widevine-KSKEY
    Last edited by apidotmy; 15th May 2024 at 03:40. Reason: repo
    Quote Quote  
  2. Was expecting a few words on CDM support/setup, can't find any. 🤔
    Quote Quote  
  3. Hello,

    Thanks for the work.
    I think that the main.py file should not be modified every time we add a service or that service requires something special.
    Maybe you have to put a "functions.py" where it is created, for example:
    def getWwidevineShape2Challenge(challenge):
    return data['widevine2Challenge'] = b64encode(challenge).decode()

    And so on with the different formats and from any service that requires that format, which calls that function and returns it from the service to main.py.

    Same with the response "license_b64 = response.json()["widevine2License"]["license"]"

    In this way, getFormaWwidevine2Challenge could be used in several services without having to modify main.py.

    Greetings
    Quote Quote  
  4. Member
    Join Date
    Feb 2024
    Location
    Malaysia
    Search Comp PM
    Originally Posted by ga2p View Post
    Hello,

    Thanks for the work.
    I think that the main.py file should not be modified every time we add a service or that service requires something special.
    Maybe you have to put a "functions.py" where it is created, for example:
    def getWwidevineShape2Challenge(challenge):
    return data['widevine2Challenge'] = b64encode(challenge).decode()

    And so on with the different formats and from any service that requires that format, which calls that function and returns it from the service to main.py.

    Same with the response "license_b64 = response.json()["widevine2License"]["license"]"

    In this way, getFormaWwidevine2Challenge could be used in several services without having to modify main.py.

    Greetings
    thank you for the suggestion, I will improve, btw, on some services it has its own structure, so I had to make a condition like "astro", it uses json for the body
    Last edited by apidotmy; 15th May 2024 at 03:39. Reason: typo
    Quote Quote  
  5. Member k2000's Avatar
    Join Date
    Jan 2022
    Location
    Canada
    Search PM
    do you have any info how to make it work. how to configure our CDM in this version?
    Quote Quote  
  6. Originally Posted by k2000 View Post
    do you have any info how to make it work. how to configure our CDM in this version?
    Widevine-KSKEY/modules/license_retrieval.py
    Code:
    def load_first_wvd_file(directory="device"):
        wvd_files = glob.glob(os.path.join(directory, '*.wvd'))
    Quote Quote  
  7. Member k2000's Avatar
    Join Date
    Jan 2022
    Location
    Canada
    Search PM
    Originally Posted by ddll View Post
    Originally Posted by k2000 View Post
    do you have any info how to make it work. how to configure our CDM in this version?
    Widevine-KSKEY/modules/license_retrieval.py
    Code:
    def load_first_wvd_file(directory="device"):
        wvd_files = glob.glob(os.path.join(directory, '*.wvd'))
    do you need to create a device folder in Widevine-KSKEY-main\modules

    and rename *.wvd in license_retrieval.py
    Quote Quote  
Visit our sponsor! Try DVDFab and backup Blu-rays!