-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathl3.py
38 lines (28 loc) · 880 Bytes
/
l3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from pywidevine.cdm import Cdm
from pywidevine.device import Device
from pywidevine.pssh import PSSH
import requests
# Get decryption keys
def get_keys(wvd, pssh, lic_url, lic_headers):
# Load device
device = Device.load(wvd)
# Load CDM
cdm = Cdm.from_device(device)
# Open CDM
session_id = cdm.open()
# Get license challenge
challenge = cdm.get_license_challenge(session_id, PSSH(pssh))
# Send license challenge
licence = requests.post(lic_url, headers=lic_headers, data=challenge)
licence.raise_for_status()
# Parse license
cdm.parse_license(session_id, licence.content)
# Get decryption keys
keys = []
for key in cdm.get_keys(session_id):
if key.type=='CONTENT':
keys += [f'{key.kid.hex}:{key.key.hex()}']
# Close CDM
cdm.close(session_id)
# Return keys
return keys