RTMP

För några år sedan började olika sajter skicka ut videoströmmar istället för att erbjuda kompletta videofiler för nedladdning. Ganska snart dök en plugin för firefox upp, DownloadHelper. Den kan spara olika videoströmmar från till exempel youtube ned till disk. Program som mplayer och VLC kan också användas för att spara vissa typer av videoströmmar som MMS och RTSP. För att spara en sådan ström, titta på html-koden för sidan och leta efter mms:// eller rtsp://. Sidor som SR försöker dölja dessa länkar bakom javascriptkod som i sin tur laddar en ny sida som innehåller själva länkarna. Sådana tricks kan avslöjas med ett kommandoradsverktyg som curl eller wget. I slutändan handlar det alltid om att lista ut MMS/RTSP URLen.

Svaret från industrin har under 2009 varit det proprietära formatet RTMP. Det fungerar som så att ett flashprogram laddas som i sin tur hanterar det hemliga RTMP-protokollet. Inget av ovan nämnda program klarar av att hantera RTMP. Det har gjort att sajter som BBC och tv4play.se hittills varit svåra att spara videoströmmar från. Men för några månader sedan registrerades projektet rtmpdump på sourceforge. Projektets mål var just att spara rtmp-strömmar till disk. Protokollet var reverse engineerat, vilket för övrigt tjänar som ännu en illustration över att security by obscurity inte fungerar.

Företaget bakom RTMP (Adobe) lyckades få rtmpdump bannlyst från sourceforge, men det är lätt att hitta kopior av källkoden utspridda över hela internet.

Precis som tidigare handlar det om att lista ut URLen för videoströmmen. Tv4play.se är svårast så jag beskriver den. Liknande tekniker kan användas på samtliga.

Börja spela in nätverkstrafiken mellan din dator och internet. Detta kan göras med något program som tcpdump eller wireshark. Titta på videoklippet i en webbläsare (som har flash installerat) och stoppa sen inspelningen. Öppna filen med den inspelade nätverkstrafiken i wireshark och sök efter strängen ”webtv”. Högerklicka på paketet som innehåller strängen och välj ”Follow TCP Stream”.

Högerklicka och välj "Follow TCP Stream"

Högerklicka och välj "Follow TCP Stream"

En XML-fil med text liknande nedanstående dyker upp. Jag har ersatt en del av videosträngen med …

<meta base="rtmp://cp70051.edgefcs.net/tv4ondemand" />
<video src="mp4:/mp4root/2009-10 ... .mp4?

Kopiera hela rtmp:// strängen och lägg till början av video src strängen (fram till frågetecknet). Klistra ihop dessa två strängar och du har RTMP URLen.

Nu skulle det vara teoretiskt möjligt att ladda ned rtmpströmmen med rtmpdump:

./rtmpdump -r 'rtmp://cp70051.edgefcs.net/tv4ondemand/mp4root/2009-10- ... .mp4'

Argumentet -o filnamn.flv kan användas för att välja namn på den dumpade filen.

Liknande tillvägagångssätt kan användas på samtliga sajter. För BBC räcker det att titta på html-koden för sidan och söka efter ”.xml”. Ladda hem XML-filen separat. Sök i den och du skall finna RTMP URLen. Andra sajter som använder samma teknik är Justin.tv, cbsnews.com, nytimes.com, video.msn.com, metallica.com, gamespot.com, engadget.com med flera. Titta först på html-koden. Om inte det räcker, använd wireshark och leta, som en femåring på julafton, bland paketen 😉

Kom ihåg att guiden endast är teoretisk. Syftet är att visa att security by obscurity är fel. Jag uppmuntrar inte någon att bryta mot någon lag (om det nu skulle vara olagligt att spara videoströmmar till disk).

Advertisements

Om albertveli

Grävande programmerare.
Det här inlägget postades i Linux/DIY, Säkerhet. Bokmärk permalänken.

5 kommentarer till RTMP

  1. albertveli skriver:

    Det ser ut som VLC faktiskt fått stöd för RTMP nyligen. Jag har version 1.0.2 och där verkar det stödjas.

  2. Abe skriver:

    Funkar inte out-of-the-box för RTMPE. Delarna parsas fel. Lägg till dem manuellt, typ:

    ./rtmpdump … -a ‘tv4ondemand’ -y ‘mp4:/mp4root/2009-11-01/did2526414_864335_T3MP415_.mp4’

  3. Ping: TV4 Play - tv4play.se - MediaPortal Forum

  4. albertveli skriver:

    J-B-N: It’s really easier than it looks. Just start wireshark and record the stream. Then search (press Ctrl-F), select the ”String” radiobutton and search for rtmp. After a packet has been found, right click and select ”Follow TCP Stream”. I even made a video on how to do it:

    The bad news though is that tv4play changed their site again so now not even rtmpdump works. At least not without esoteric, obscure extra parameters. Maybe it will start working again if the maintainers of rtmpdump updates their code. Use subversion to get the very latest code.

  5. Ping: Att Hacka en Stormakt « Arkeoblog

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s