Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to play DRM protected content on ARM devices #69

Open
michaelarnauts opened this issue Feb 4, 2021 · 6 comments
Open

Unable to play DRM protected content on ARM devices #69

michaelarnauts opened this issue Feb 4, 2021 · 6 comments
Labels
bug Something isn't working

Comments

@michaelarnauts
Copy link
Collaborator

michaelarnauts commented Feb 4, 2021

Some recent programs of GoPlay are DRM protected. Examples are all episodes of Masterchef USA newer than 6x12.

These programs can be played from Kodi in Ubuntu (although there is a bug in IA on Leia that allows you to only play one episode per session, so you'll need to restart Kodi), but it can't be played at all from Kodi on LibreElec (RPI4).

It seems they also can't be played on Windows. The same error is shown there.

The error we get is {"errorcode":371000005,"errormsg":"Widevine license acquisition failed >> Verified media path cannot be verified","errorid":"07a9c5fe-d906-46b4-8c51-1976a646a3ad"}

This would indicate that it requires VMP, and nothing can be done about it, but it's working fine on Kodi on Ubuntu 20.04 x64.

Relevant part of the log:

2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: HTTP/2 403
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: date: Thu, 04 Feb 2021 14:34:20 GMT
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: content-type: application/json; charset=utf-8
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: cache-control: private
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: server: Microsoft-IIS/10.0
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: x-aspnet-version: 4.0.30319
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: x-powered-by: ASP.NET
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: access-control-allow-origin: *
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: access-control-allow-headers: Origin, X-Requested-With, Content-Type, Cache-Control, Pragma, Accept, SOAPAction, customdata, Authorization, X-KeyOS-Authorization
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - HEADER_IN: access-control-allow-methods: HEAD, GET, POST, OPTIONS
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - SSL_DATA_IN:
2021-02-04 14:34:20.149 T:2604200816   DEBUG: Curl::Debug - TEXT: Connection #0 to host wv-keyos.licensekeyserver.com left intact
2021-02-04 14:34:20.149 T:2604200816   ERROR: CCurlFile::Open failed with code 403 for https://wv-keyos.licensekeyserver.com/:
                                            {"errorcode":371000005,"errormsg":"Widevine license acquisition failed >> Verified media path cannot be verified","errorid":"07a9c5fe-d906-46b4-8c51-1976a646a3ad"}
2021-02-04 14:34:20.149 T:2604200816   ERROR: AddOnLog: InputStream Adaptive: License server returned failure

This is the same issue as Catch-up-TV-and-More/plugin.video.catchuptvandmore#402

@michaelarnauts michaelarnauts added the bug Something isn't working label Feb 4, 2021
@michaelarnauts
Copy link
Collaborator Author

Has been reported at xbmc/inputstream.adaptive#593, but I'm not sure it's an actual issue in Inputstream Adaptive.

@dagwieers
Copy link
Collaborator

It is also working on a RHEL7 x64 using Chrome v88 and an ARM-based Chrombook using Chrome v88.

@michaelarnauts
Copy link
Collaborator Author

Just some more information. You can play a protected stream with the demo page on https://www.buydrm.com/multikey-demo

Example:
URL: https://www.goplay.be/video/masterchef-usa/masterchef-usa-s7/masterchef-usa-s7-aflevering-1

Open the network tab in the developper tools, and go to the above url. You'll see a call to https://api.goplay.be/restricted/decode/. You need the string in the auth field of the json in the reply. This is a base64 encoded string, it's called the Authentication XML.

Next, look for the Manifest. For this url, it's https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/MASTERCHEF_USA/S7/volledigeafleveringen/1014696209195752701075259120264694101469/MASTERCHEF_USA_7_1_F0278154/MASTERCHEF_USA_7_1_F0278154.mpd. This is the Source URL.

Now, on https://www.buydrm.com/multikey-demo, fill in the Authentication XML and the Source URL, and hit Play Stream. The video should start playing fine in your browser.

This indicates that we only need these two values, and that we don't need to pass some cookies around.

@dagwieers
Copy link
Collaborator

It would be nice to document this as part of the Add-ons best practices. We already have some tools listed for analyzing streams.

@michaelarnauts
Copy link
Collaborator Author

It seems that another add-on also noticed this exact same issue, but they use a different backend, so that's odd.

See spacys/mediathek#26

@spacys
Copy link

spacys commented Feb 7, 2021

I still believe it's related to this 'nice' VMP validation feature.
"Windows and Mac OS X platforms support VMP by default.
Desktop Linux platform does not support VMP by default."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants