staging.inyokaproject.org

Stream-Adressen mittels tshark ermitteln

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von linux_joy am 15.07.2017 unter Lubuntu 14.04 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

tshark ist die Kommandozeilenversion des Paket-Sniffers Wireshark. Mit tshark kann man auch Stream-Adressen ermitteln, z.B. um Streams zu speichern. Für diesen Zweck wird der Befehl so gestaltet, dass tshark u.a. Paket-Details liefert, seine Ausgabe wird dann aber an grep umgeleitet, welches sie dann nach einschlägigen Multimedia- und Streaming-Schlüsselbegriffen filtert und alle betreffenden Zeilen (mitsamt einer Zeile davor und dahinter) danach an die Standardausgabe des verwendeten Terminals [1] weiterleitet.

Hinweis:

  1. Das Vorgehen in der im Folgenden dargestellten Weise funktioniert nur mit unverschlüsselten HTTP-Verbindungen. Bei HTTPS kann tshark lediglich die Header-Zeilen anzeigen und NICHT das Innere der HTTP-Pakete darstellen. Falls man das letztere Feature unbedingt braucht und nicht stattdessen eine von den im Howto Stream-Adressen ermitteln vorgestellten Alternativen einsetzt, so kann man es mit einem lokalen Proxyserver probieren.

  2. Außerdem ist das in diesem Artikel vorgestellte Verfahren erheblich mühsamer als beispielsweise die Netzwerkanalyse, welche im Howto Stream-Adressen ermitteln vorgestellt wird. Deswegen sollte die nachfolgend vorgestellte tshark-Methode lediglich als Notlösung in Betracht gezogen werden.

Voraussetzungen

  • tshark sollte wegen Sicherheitsrisiken nicht als Root, sondern als normaler Benutzer mit Root-Privilegien via Setuid-Bit ausgeführt werden. Wie man das einrichtet, steht im entsprechenden Abschnitt des Artikels Wireshark.

  • Die Profileinstellungen des verwendeten Terminals [1] müssen so eingestellt sein, dass der Rollbalken auf "unbegrenzt" steht, also NICHT zurückrollen kann! Sonst wird nämlich ein Großteil der Ausgabe des Duos tshark / grep vom Terminal gleich wieder ins Nirwana geschickt!

  • Man muss die korrekte Bezeichnung der Netzwerkschnittstelle wissen, welche tshark überwachen soll. Um diese zu ermitteln, ruft man ein Terminal [1] auf und gibt dort den folgenden Befehl ein:

    tshark -D 

Ausführung

  1. Man ruft wieder ein Terminal [1] auf und gibt dort den folgenden Befehl ein:

    tshark -i <Netzwerkschnittstelle> -s 0 -B 50 -V -P -l | grep -E --context=1 "GET|POST|URI|baseURL|statuscode|/type|/title|content|detail|assetId|originChannelId|originChannelTitle|/channel|duration|/length|airtime|timetolive|/fsk|hasCaption|vcmsUrl|formitaet|/quality|url|/ratio|height|width|videoBitrate|audioBitrate|filesize|facet|mms|rtsp|rtmp|llnwd.net|core-cdn.net|beitragsDetails|[Hh]ost|socks|protocol|playpath|path|playlist|tcUrl|pageUrl|app|hexstring|days|[Aa]uth|string|conn|:data|flashVer|[Ss]ubscri|resume|timeout|start|stop|[Ss]ecure|[Tt]oken|[Kk]ey|[Ii]dentifier|jtv|JSON|[Hh]ash|buffer|skip|conndata|output|SOCKS4|proxy|connection attempt|version|set_playlist|src|edgefcs.net|dataURL|cdn-vod-fc|vars_player.videorefFileUrl|video lang|url quality=|arte_vp_url=|videothek|json|m3u8|manifest|f4m|\.meta|asx|mov|smil|\.avi|3gp|aac|flac|flv|h264|mkv|mp2|mp3|mp4|ogg|SWF|swf|\.ts|vorbis|vp8|webm|wma|wmv|image/x-icon|stream|videoplayback|annotations_invideo|TCP Retransmission|Application Data|Client Hello|deleteStream|User Control Message|[Hh]and[Ss]hake|client|[Ss]ignature|connect|Window Acknowledgement Size|Set Peer Bandwidth|Set Chunk Size|NetConnection|createStream|FCSubscribe|onBWCheck|_result|Stream Begin|NetStream|RtmpSampleAccess|onBWDone|Set Buffer Length|Stream Is Recorded|[Mm]eta[Dd]ata|Video Data|Audio Data|Aggregate|setBandwidthLimit|Acknowledgement|LIVE|server|mediaType|mimeType|videoPlayerUrl|/play|liveUrl|/live|play.'|[Ss]tarted|[Pp]laying" 
  2. Gleich danach stoppt man tshark und grep jedoch mit der Tastenkombination Strg + C .

  3. Durch das Schließen des Terminal-Fensters findet der vorgenannte Befehl Eingang in die Datei ~/.bash_history.

  4. Danach ruft man wieder ein Terminal [1] auf und gibt dort erneut den vorgenannten Befehl ein bzw. blättert einfach mit zur letzten Befehlseingabe zurück und bestätigt mit .

  5. Nun ruft man eine Streaming-Seite auf bzw. lädt sie mit Strg + R neu (ggf. leert man mit Strg + + R zuvor auch den Webseiten-Cache des Browsers).

  6. Dann stoppt man tshark und grep mit der Tastenkombination Strg + C .

  7. Danach ruft man wieder ein Terminal [1] auf und gibt dort erneut den vorgenannten Befehl ein bzw. blättert einfach mit zur letzten Befehlseingabe zurück und bestätigt mit .

  8. Jetzt erst startet man den Stream.

  9. Ca. 5 Sekunden, nachdem die Übertragung des Streams begonnen hat, stoppt man tshark und grep mit der Tastenkombination Strg + C .

  10. Ggf. beendet man abschließend den Stream.

In die beiden Terminal-Tabs bzw. -Fenster wurden jetzt sowohl Elemente des Seiten-Quelltextes als auch – hoffentlich – alle relevanten Daten des abgespielten Streams geschrieben. Diese Daten lassen sich mithilfe der im Terminal eingebauten Suchfunktion durchsuchen, siehe dazu auch den Abschnitt Beispiele.

Hinweis:

  1. Man kann – sofern einem die Unterscheidung zwischen Seiten-Quelltext- und Stream-Daten nicht so wichtig ist – auch mit nur einem einzigen Terminal arbeiten (die Schritte 6 u. 7 werden dabei also ausgelassen).

  2. Falls einem die Ausgabe im Terminal zu detailarm oder aber zu umfangreich vorkommen sollte, so kann man den Befehl selbstverständlich auch modifizieren, indem man etwa:

    • bei tshark die -V -Option weglässt, oder

    • bei grep die Schlüsselbegriffe oder ihre Anzahl verändert, oder

    • die --context -Angabe von grep verändert.

Beispiele

HTTP-Streams

Beispiel-Seite ARD: http://www.ardmediathek.de/tv/Tagesschau-in-100-Sek/26-06-2017-05-06-Uhr-Tagesschau-in-100/Das-Erste/Video-Podcast?bcastId=767970&documentId=43790230 , Quelltext von 26.06.2017 05:06 Uhr - Tagesschau in100s 🇩🇪

  • Zunächst rückwärts suchen im Stream-Daten-Terminal nach h264 oder auch nach mp4.

In der Ausgabe findet sich unter anderem die folgende Zeile:

1
 44   1.275290 192.168.28.20 -> 80.228.47.66 HTTP 923 GET /9.gif?a=H~b=5730cbbe943034646~c=f756901c-5115-528e-0a2a-7db77e258bf7~d=ardmediathek.de~e=3~g=0~w=60198~ac=TV-100s-0506.podm.h264.mp4~ag=ardmediathek.de~ah=ardmediathek.de~al=Linux~am=P~aw=http://media.tagesschau.de/video/100s/2017/0626/TV-100s-0506.podm.h264.mp4~cm=Akamai~dx=55.063~en=26.06.2017%2005:06%20Uhr%20-%20Tagesschau%20in%20100%20Sekunden~pd=ardplayer-v3.7.5~sa=Others~ay=HTML5-3.15.2~ak=HTML5~ap=109~ HTTP/1.1 
  • Die gesuchte URL ist also http://media.tagesschau.de/video/100s/2017/0626/TV-100s-0506.podm.h264.mp4.

Diese Revision wurde am 11. Februar 2020 08:32 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Howto