wvg/python/pre.py

54 lines
1.5 KiB
Python
Raw Normal View History

2024-04-18 20:48:32 +00:00
from pywidevine.cdm import Cdm
2024-04-22 12:05:09 +00:00
from pywidevine.device import Device, DeviceTypes
2024-04-18 20:48:32 +00:00
from pywidevine.pssh import PSSH
import json
2024-05-01 21:37:00 +00:00
import js
import base64
2024-04-18 20:48:32 +00:00
from pyodide.http import pyfetch
def blobsToDevice(cID, pKey):
return Device(client_id=cID, private_key=pKey, type_=DeviceTypes['ANDROID'], security_level=3, flags=None)
async def loadCdm():
# Looking for device.wvd
try:
wvd = await (await pyfetch("device.wvd")).bytes()
return Cdm.from_device(Device.loads(wvd))
except:
pass
2024-04-18 20:48:32 +00:00
# Looking for device_client_id_blob + device_private_key
2024-04-22 12:05:09 +00:00
try:
cID=await (await pyfetch("device_client_id_blob")).bytes()
pKey=await (await pyfetch("device_private_key")).bytes()
return Cdm.from_device(blobsToDevice(cID, pKey))
except:
pass
2024-04-30 18:23:08 +00:00
# Looking for client_id.bin + private_key.pem
try:
cID=await (await pyfetch("client_id.bin")).bytes()
pKey=await (await pyfetch("private_key.pem")).bytes()
return Cdm.from_device(blobsToDevice(cID, pKey))
except Exception as e:
js.document.getElementById('result').value="n0suchd3v1c3f113:r3adth3fuck1ngma2ua1\n\n[MPD?]\nhttps://github.com/FoxRefire/wvg?tab=readme-ov-file#instalation"
raise Exception(e)
2024-04-30 18:23:08 +00:00
2024-04-22 12:05:09 +00:00
# prepare pssh
pssh = PSSH(pssh)
2024-04-18 20:48:32 +00:00
# load cdm
cdm = await loadCdm()
2024-04-18 20:48:32 +00:00
# open cdm session
session_id = cdm.open()
# get license challenge
challenge = cdm.get_license_challenge(session_id, pssh)
licHeaders=json.loads(licHeaders)
2024-05-17 19:56:28 +00:00
js.chrome.extension.getBackgroundPage().isBlock=False