Simplified KabelDeutschland streaming proxy

Review

A few days go i wrote about How to reverse engineer the KabelDeutschland API. Attached to this post there was a PHP script hosted on github to get your own streaming proxy running.

After testing and spreading the word with some people i came to the decision that the procedure was far too complicated. The need of a webserver and the large number of configuration options were unnecessary.

That’s why i build a single binary version, written in go.

Limitation

This tool does not remove the restrictions made by KabelDeutschland. You will need an internet and a TV contract with them. It only give you the ability to use their streams besides the iOS app.

Download

Binaries for all major platforms can be found at the shared folder.

Shared Folder at mega.co.nz (mirror at dropbox)

Select the binary suitable for your machine.

Tested environments

  • Macbook Pro Mid 2012, OSX 10.10.2
  • Synology DS215j (arm)
  • RaspberryPi (arm)
  • Windows XP 32bit

Please drop me a line if it works or not on your system.

Installation

Grab the config.json and edit it with your customer-service-center credentials. You can also change the port if you like.

On windows, double-click the executable file. On Linux/Mac you have to use your terminal, navigate to the folder you downloaded the binary and type the following command.

If you got a permission denied error, you have to set the executable bit for the binary

On all systems you will see the same output if everything went fine.

You will see the list of interfaces, the proxy listens to. All of them are ready to use to serve the channel playlist.

On certain Windows systems, it is not possible to display the interface list. The proxy will work nevertheless. Simply paste your known IP-Adress or one of your loopback addresses.

Installation on a Synology Diskstation

By now the easiest way to install the KabelDeutschland proxy is to download the arm-version of the binary and put it to your home-folder on the diskstation. Put the edited config.json next to it. Now you have to log into your nas  using ssh as your user and run the following command.

This creates a new screen, starts the proxy and immediately detaches the screen. That means the process runs in the background.

In order to be able to use the screen command, your box has to be bootsrapped. You can find the instructions to do this here: Bootrap the DS215j. Installation of screen will be done with this command as root.

You can connect to the proxy using the IP-address of your diskstation. http://[diskstation]:8787.

To stop the process, attach to the screen and press control+c. Attaching works using this command.

Predefined package

Synology has its own package manager and I’ll try to build a repository containing the proxy as a installable package. This will provide a way more easier solution. I will keep you updated.

Usage

Copy one of the links form the terminal output and paste it into your desired media player. It should load the playlist automatically. In VLC it looks like on the screenshot. You can now switch between the channels. The playlist contains links pointing to the proxy. This link handles the license generation, KabelDeutschland used to verify the stream.

165 thoughts on “Simplified KabelDeutschland streaming proxy

  1. Tom says:

    Wow, was für ne tolle Idee! Schade nur das meine Synology (DS212+) nicht unterstützt wird:

    runtime: this CPU has no floating point hardware, so it cannot run
    this GOARM=6 binary. Recompile using GOARM=5.

    • Hi Tom,

      Danke für den Hinweis 😉
      ich hab die binaries nun für arm v5, v6 und v7 kompiliert.
      Du findest sie im shared folder.

      Gib bescheid ob es bei dir nun läuft.

      Beste Grüße,
      André

      • Tom says:

        Wow, das war schnell 😉 Läuft aber leider nicht, scheint wohl doch etwas komplizierter zu sein:

        ds> ./kd_proxy_arm_v5
        Illegal instruction (core dumped)

        • Tom says:

          Allerdings scheint auch die Web/PHP Variant bei mir problematisch zu sein:

          Die Playlist wir erstellt, kann aber dann nicht abgespielt werden. VLC geht nur nach und nach die gesamte Wiedergabeliste durch…


          Can't get licensed link for Id: 3xxxx0 Link: http://cdn1.iptv.kabel-deutschland.de/live-spts/media/xxx/transmux/hls.m3u8

          • Tom says:

            ok, in all den Blogs und Texten ist mir der völlig entgangen:

            ou need to have two contracts with KD. One for cable-tv and one for internet over cable. The second one is necessary because the streams are only available inside of their own network.

            Somit ist klar warum es nicht funktionieren kann. Kein Internet via Kabel bei mir :-/

          • Schade, aber ich werde mir das Problem dennoch ansehen.
            Du bist nicht der einzige mit dem “illegal instruction” error.
            Vielleicht kannst du wenn ich eine neue Version habe dennoch kurz testen?

        • Auch wenn du es leider nicht nutzen kannst, ich habe das Problem mit der illegal instruction lösen können. Mein cross-compiler-script hat bei arm etwas durcheinander gebracht. Nun gehen die verschiedenen Versionen.

          Beste Grüße,
          André

      • Dennis says:

        Hi eine Frage läuft super auf PC nur fehlt RTL und rtl2 weißt du wieso?

        Kann man das Script auch auf ein Firestick installieren?

        Ist wohl eine Arm 9 Version

        Würde mich freuen von dir zu hören

        • Hey Dennis,

          das die RTL-Gruppe nicht vorhanden ist, liegt leider nicht an meinem Tool. RTL verbietet KabelDeutschland das streaming aller Sender der Gruppe. Auch in der App von KabelDeutschland fehlen die Kanäle.

          Zu deiner zweiten Frage.
          Generell wäre es möglich den Proxy auch auf dem Firetv laufen zu lassen. Von Go gibt es einen Compiler für iOS und Android (https://godoc.org/golang.org/x/mobile/app) aber es wir schwierig ohne GUI den Proxy zu starten.

          Ich werde es mir auf jeden Fall mal ansehen.

          Beste Grüße,
          André

    • Dennis says:

      Hi eine Frage läuft super auf PC nur fehlt RTL und rtl2 weißt du wieso?

      Kann man das Script auch auf ein Firestick installieren?

      Ist wohl eine Arm 9 Version

      Würde mich freuen von dir zu hören