[[Vorlage(Archiviert)]] {{{#!vorlage Warnung 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. }}} {{{#!vorlage Hinweis Diese Howto-Anleitung wurde zuletzt von [user:linux_joy:] am 15.07.2017 unter '''Lubuntu 14.04''' erfolgreich getestet. }}} {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(4)]] [:Wireshark#tshark:tshark] ist die Kommandozeilenversion des Paket-Sniffers [:Wireshark:]. Mit tshark kann man auch [:Archiv/Howto/Stream-Adressen ermitteln: Stream-Adressen ermitteln], z.B. um Streams [:Streams_speichern: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. {{{#!vorlage 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 [:Archiv/Howto/Stream-Adressen ermitteln: Stream-Adressen ermitteln] vorgestellten Alternativen einsetzt, so kann man es mit einem [:Proxyserver#Lokaler-Proxy:lokalen Proxyserver] probieren. 1. Außerdem ist das in diesem Artikel vorgestellte Verfahren erheblich mühsamer als beispielsweise die [:Archiv/Howto/Stream-Adressen_ermitteln/#Netzwerkanalyse: Netzwerkanalyse], welche im Howto [:Archiv/Howto/Stream-Adressen ermitteln: 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 [:Wireshark#Programmstart: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: {{{#!vorlage Befehl tshark -D }}} = Ausführung = 1. Man ruft wieder ein Terminal [1] auf und gibt dort den folgenden Befehl ein: {{{#!vorlage Befehl tshark -i -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" }}} 1. Gleich danach stoppt man tshark und grep jedoch mit der Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. 1. Durch das Schließen des Terminal-Fensters findet der vorgenannte Befehl Eingang in die Datei '''~/.bash_history'''. 1. Danach ruft man wieder ein Terminal [1] auf und gibt dort erneut den vorgenannten Befehl ein bzw. blättert einfach mit [[Vorlage(Tasten, up)]] zur letzten Befehlseingabe zurück und bestätigt mit [[Vorlage(Tasten, enter)]]. 1. Nun ruft man eine Streaming-Seite auf bzw. lädt sie mit [[Vorlage(Tasten, ctrl+r)]] neu (ggf. leert man mit [[Vorlage(Tasten, ctrl+shift+r)]] zuvor auch den Webseiten-Cache des Browsers). 1. Dann stoppt man tshark und grep mit der Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. 1. Danach ruft man wieder ein Terminal [1] auf und gibt dort erneut den vorgenannten Befehl ein bzw. blättert einfach mit [[Vorlage(Tasten, up)]] zur letzten Befehlseingabe zurück und bestätigt mit [[Vorlage(Tasten, enter)]]. 1. Jetzt erst startet man den Stream. 1. Ca. 5 Sekunden, nachdem die Übertragung des Streams begonnen hat, stoppt man tshark und grep mit der Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. 1. 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 [:Terminal#Suchfunktionen:Suchfunktion] durchsuchen, siehe dazu auch den Abschnitt [#Beispiele Beispiele]. {{{#!vorlage 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). 1. 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 [paste:423667:26.06.2017 05:06 Uhr - Tagesschau in100s] {de} * 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: {{{#!code bash 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`. = Links = * [:Streaming:] {Übersicht} Grundlegendes zum Thema; Audio- und Videostreams mit Browser-Plugins oder eigenständigen Programmen abspielen * [:Streams_speichern:] {Übersicht} Übersichtsartikel * [:Archiv/Howto/Stream-Adressen_ermitteln:] * [:Archiv/Howto/Streaming-Inhalte herunterladen:] ## * [:Streams speichern/Beispiele:] * [:Internetradio:] {Übersicht} Übersichtsartikel * [:Internetradio_aufzeichnen:] * [:Internet-TV:] {Übersicht} Übersichtsartikel * [:Wireshark:] # tag: Howto