From 2af929a83d32bb4afa734268c2809711bbdccd0f Mon Sep 17 00:00:00 2001 From: rlaphoenix Date: Sun, 21 Aug 2022 22:39:26 +0100 Subject: [PATCH] Cdm: Use reversed OEMCrypto request id formula for Android devices It's effectively 8 random bytes with a counter thats right-padded (to 8 bytes). This counter is the Session number. --- pywidevine/cdm.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pywidevine/cdm.py b/pywidevine/cdm.py index eab5231..b1a6493 100644 --- a/pywidevine/cdm.py +++ b/pywidevine/cdm.py @@ -279,7 +279,10 @@ class Cdm: except ValueError: raise InvalidLicenseType(f"License Type {type_!r} is invalid") - request_id = get_random_bytes(16) + if self.device_type == Device.Types.ANDROID: + request_id = get_random_bytes(8) + session.number.to_bytes(8, "little") + else: + request_id = get_random_bytes(16) license_request = LicenseRequest() license_request.type = LicenseRequest.RequestType.Value("NEW")