limaceous-bushwhacker / wvproxy

Widevine CDM API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wvproxy

Widevine CDM API

Setup

  1. Install Python 3.6 or newer and Poetry
  2. Install Python package dependencies using poetry install
  3. Activate the virtual environment using poetry shell
  4. Run the Flask web app using python wvproxy.py (this part can run on any OS)
  5. (Optional but recommended) Put the API behind a reverse proxy such as nginx for HTTPS support
  6. Open the web app on a Windows computer with Chrome and widevine-l3-guesser installed and leave it running
  7. Put one or more users and keys in authorized_users.txt in TSV (tab-separated values) format:
alice	e50af8c5-02ef-4546-8449-77ab4cf8a271
bob	5fdb1375-e529-4f51-a8a4-9296bfadedfa

API request format

POST http://127.0.0.1:5000/api

Get challenge

Request

{
  "method": "GetChallenge",
  "params": {
    "init": "<pssh as base64>",
    "cert": "<service certificate as base64>"
  },
  "token": "<user key from authorized_users.txt>"
}

Response

{
  "status_code": 200,
  "message": {
    "session_id": "<unique session uuid>",
    "challenge": "<license request as base64>"
  }
}

Get keys

Request

{
  "method": "GetKeys",
  "params": {
    "session_id": "<unique session uuid>",
    "cdmkeyresponse": "<license response as base64>"
  },
  "token": "<user key from authorized_users.txt>"
}

Response

{
  "status_code": 200,
  "message": {
    "keys": [
      {
        "kid": "<key id as hex>",
        "key": "<key as hex>"
      },
      {
        "kid": "<key id as hex>",
        "key": "<key as hex>"
      },
      ...
    ]
  }
}

Error responses

{
  "status_code": 4XX|5XX,
  "message": "<error description>"
}

Disclaimer

This project is purely for educational purposes. The author claims no responsibility for what you do with it.

About

Widevine CDM API

License:MIT License


Languages

Language:Python 54.2%Language:JavaScript 35.2%Language:HTML 10.6%