add-ons / plugin.video.viervijfzes

Kodi add-on to watch video-on-demand content from the Play 4, Play 5 and Play 6 channels.
https://github.com/add-ons/plugin.video.viervijfzes/wiki
GNU General Public License v3.0
50 stars 10 forks source link

Unable to play DRM protected content on ARM devices #69

Open michaelarnauts opened 3 years ago

michaelarnauts commented 3 years ago

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 https://github.com/Catch-up-TV-and-More/plugin.video.catchuptvandmore/issues/402

michaelarnauts commented 3 years ago

Has been reported at https://github.com/peak3d/inputstream.adaptive/issues/593, but I'm not sure it's an actual issue in Inputstream Adaptive.

dagwieers commented 3 years ago

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

michaelarnauts commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

See https://github.com/spacys/mediathek/issues/26

spacys commented 3 years ago

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."