szymex / xbmc-finnish-tv

XBMC Video Plugins for playing Finnish television content containers.
GNU General Public License v3.0
31 stars 38 forks source link

Katsomo does not work #76

Open teemue opened 9 years ago

teemue commented 9 years ago

None of the videos via Katsomo plugin work. Openelec 5.0.0.

21:03:53 T:2833716288 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--

ghost commented 9 years ago

This might be related to the fact that Katsomo’s mobile site is being shut down.

Copied from the http://m.katsomo.fi/ (using Android user agent):

MTV Katsomon mobiilisivusto on poistumassa käytöstä, eivätkä Katsomon ohjelmat ole tämän vuoksi katsottavissa mobiilisivuston kautta. Ohjelmamme löytyvät nyt ilmaisesta MTV Katsomo -sovelluksesta, jonka voit ladata Google Playsta.

GoodDragon commented 9 years ago

MTV Katsomo application uses clear api which should be even easier to parse than current mobile site solution. I quicly checked that using Fiddler and here is some information about API.

Needed settings when calling api: User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.2; GT-I9506 Build/KOT49H) Host: mobileapp.mtvkatsomo.fi Connection: Keep-Alive Accept-Encoding: gzip

API calls: --- Catalog --- GET http://mobileapp.mtvkatsomo.fi/mobile-catalog-nonretina.json.gz HTTP/1.1 --- Recommendations --- GET http://mobileapp.mtvkatsomo.fi/recommendations-nonretina.json.gz HTTP/1.1

Per channel --- MTV3 --- GET http://mobileapp.mtvkatsomo.fi/mtv3-epg-retina.json.gz HTTP/1.1 --- SUB --- GET http://mobileapp.mtvkatsomo.fi/sub-epg-retina.json.gz HTTP/1.1 --- AVA --- GET http://mobileapp.mtvkatsomo.fi/ava-epg-retina.json.gz HTTP/1.1 --- MAX --- GET http://mobileapp.mtvkatsomo.fi/max-epg-retina.json.gz HTTP/1.1 --- SPORT 1 --- GET http://mobileapp.mtvkatsomo.fi/sport1-epg-retina.json.gz HTTP/1.1 --- SPORT 2 --- GET http://mobileapp.mtvkatsomo.fi/sport2-epg-retina.json.gz HTTP/1.1 --- CMORE --- GET http://mobileapp.mtvkatsomo.fi/cmore-extreme-epg-retina.json.gz HTTP/1.1

When you are found asset id you can find video link using this API call: GET http://api.katsomo.fi/api/mobileapp/asset/427864/play.json HTTP/1.1

And video start call will be something like this: GET http://mtvvod.katsomo.fi/playout/viihde/ismvol1/2014-12-30/Salatut_el_m_t_427864_WC(427864_T1-5ISM).ism/Manifest HTTP/1.1

szymex commented 9 years ago

Hi, have you tried to play in Kodi that video? I've got errors:

ERROR: CDVDDemuxFFmpeg::Open - error probing input format, http://mtvvod.katsomo.fi/playout/viihde/ismvol1/2014-12-30/Salatut_el_m_t_427864_WC(427864_T1-5ISM).ism/Manifest
ERROR: CDVDPlayer::OpenDemuxStream - Error creating demuxer

Also when playing with VLC, did not show any picture.

GoodDragon commented 9 years ago

I now tried to download that video using: http://md5decrypt.altervista.org/ismdownloader.zip it says "ERROR: Encrypted content (DRM)!".

That will make this harder than I expected.

Btw. Good example how to parse that JSON based API you can find from here: https://github.com/eracknaphobia/plugin.video.nbcsnliveextra but of course we need first find to way play these videos if there is any.

GoodDragon commented 9 years ago

It looks that they are decided to kick us out.

If I understand right MTV Katsomo application uses same DRM system than example Netflix (APK file contains folder named PlayReady: http://en.wikipedia.org/wiki/PlayReady)

Good picture how key change works on PlayReady you can found from here: http://vishalswami.blogspot.fi/2009/09/digital-rights-mgmt-remove-drm.html

To decrypt that DRM video content client needs get decryption key which changes time to time. Here is something what I found from that: .ism/Manifest reply contains ProtectionHeader which is base64 decrypted value (you can decrypt it example using: http://www5.rptea.com/base64/). Inside that information we need KID and CHECKSUM values.

Then we need generate Base64 encoded message with content like this and send it to http://services.wmdrm.windowsmedia.com/SecureClock/?Time using POST method.

http://go.microsoft.com/fwlink/?LinkId=25817\?? No Idea Where to Get ??

Reply message is also base64 encoded and contains some information what we probably would need later.

Then we need send XML message using POST method to: http://api.katsomo.fi/api/mobileapp/asset/427864/license?timeStamp=2015-01-31T17%3A42%3A17%2B0200&contract=?Not sure is that same on all devices?&account=source To XML we need values like these: KID, CHECKSUM, Clientinfo, ListID (no idea where to get), LicenseNonce (no idea where to get), two different CipterValues (no idea where to get), DigestValue (no idea where to get), SignatureValue (no idea where to get), PublicKey (no idea where to get)

Reply is XML also message which probably contains needed keys to decrypt video.

There is these projects which probably contains usefull information: https://github.com/googlecast/CastMediaPlayerStreamingDRM http://forum.kodi.tv/showthread.php?tid=178693

Anyway, looks that it will be very hard (if not impossible) to get this working anymore :(

PetteriLah commented 9 years ago

How about Katsomo Samsung Smart-TV app? Mayby there is not use DRM system?

Android apps Wire shark give this, not working link. GET /playout/viihde/ismvol1/2014-12-31/Salatut_el_m_t_428196_WC(428196_T4ISM).ism/QualityLevels(1500000)/Fragments(video=280000000) HTTP/1.1

Host: mtvvod.katsomo.fi

Connection: keep-alive

User-Agent: VisualOn OSMP+ Player(Linux;Android)

http://mtvvod.katsomo.fi/playout/viihde/ismvol1/2014-12-31/Salatut_el_m_t_428196_WC(428196_T4ISM).ism/QualityLevels(1500000)/Fragments(video=280000000)

GoodDragon commented 9 years ago

Good idea. It might working. If someone can get access to Smart-TV and gather Fiddler dump like this it would help lot:

PetteriLah commented 9 years ago

Did not get fidder work.... Wireshark give that info GET /playout/viihde/ismvol1/2015-01-06/Salatut_el_m_t_429997_WC(429997T1-4ISM).ism/Manifest HTTP/1.1 User-Agent: samsungsmooth-agent/1.1 Host: mtvvod.katsomo.fi Accept: /_ Accept-Encoding: deflate, gzip

GoodDragon commented 9 years ago

Yep so it is same DRM stuff than with other clients.

Unless someone got new ideas we are ready to say thanks to @szymex and good bye for Katsomo plugin. It was very good so long it worked but I think that this DRM we just can't crack (or at least it would need too much time).


Off topic: I really hope that MTV will release official support for Chromecast. Yle Areena's iPad plugin already supports Chromecast and Netflix (which ever haven't worked with XBMC) is also supported on there.

I tried streaming Katsomo tab from Google Chrome browser to Chromecast but it only shows blank because of this same DRM issue. Full screen streaming (marked for experimental) works but there is too much lag so it is not usable.

Last but not least the these are only usable ways what I have found to watch Katsomo on TV screen are (after this plugin was broke):

PetteriLah commented 9 years ago

http://spottiblogi.com/2014/01/24/mtv-katsomon-kevat-taynna-mobiililanseerauksia/ In future Katsomo change Silverlight to htlm5 player,

There is solution to play DRM stuff in Kodi using external html5 player. https://www.youtube.com/watch?v=RUAbJTbymGk https://github.com/AddonScriptorDE?tab=repositories

timojuonoja commented 9 years ago

HTML5 player is now used on Chrome browser.. Is there a hope for having Katsomo support again?

PetteriLah commented 9 years ago

I think it need same trick like netflix addon. Here is katsomo Uutiset stream link: http://dashvod.katsomo.fi.edgesuite.net//video/uutiset/ismvol1/2015-06-23/Huomenta_Suomen_Uutiset_(492393_ISMUSPWV).ism/Huomenta_Suomen_Uutiset_(492393_ISMUSPWV).mpd it works outside webplayer, http://www.jwplayer.com/innovation/roadmap/mpeg-dash/

GoodDragon commented 9 years ago

That new HTML5 based player works now with Chrome cast without any tricks so I'm currently using that method. Anyway, if there is working solution how Netflix HTML5 version works on XBMC that should works with Katsomo too.