49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from pywidevine.cdm import Cdm
|
|
from pywidevine.device import Device, DeviceTypes
|
|
from pywidevine.pssh import PSSH
|
|
|
|
import json
|
|
import js
|
|
import base64
|
|
from pyodide.http import pyfetch
|
|
|
|
# prepare pssh
|
|
pssh = PSSH(pssh)
|
|
|
|
# load device
|
|
try:
|
|
wvd = await (await pyfetch("device.wvd")).bytes()
|
|
device = Device.loads(wvd)
|
|
except OSError:
|
|
try:
|
|
print("device.wvd not found! looking for device_client_id_blob and device_private_key...")
|
|
cID=await (await pyfetch("device_client_id_blob")).bytes()
|
|
pKey=await (await pyfetch("device_private_key")).bytes()
|
|
|
|
except OSError:
|
|
try:
|
|
print("device_client_id_blob and device_private_key not found! looking for client_id.bin and private_key.pem...")
|
|
cID=await (await pyfetch("client_id.bin")).bytes()
|
|
pKey=await (await pyfetch("private_key.pem")).bytes()
|
|
|
|
except OSError:
|
|
js.document.getElementById('result').value="n0suchd3v1c3f113:r3adth3fuck1ngma2ua1\n\n[MPD?]\nhttps://github.com/FoxRefire/wvg?tab=readme-ov-file#instalation"
|
|
raise FileNotFoundError("CDM Keys not found!, RTFM!")
|
|
|
|
device = Device(client_id=cID,
|
|
private_key=pKey,
|
|
type_=DeviceTypes['ANDROID'],
|
|
security_level=3,
|
|
flags=None)
|
|
|
|
# load cdm
|
|
cdm = Cdm.from_device(device)
|
|
|
|
# open cdm session
|
|
session_id = cdm.open()
|
|
|
|
# get license challenge
|
|
challenge = cdm.get_license_challenge(session_id, pssh)
|
|
|
|
licHeaders=json.loads(licHeaders)
|