Hinweise


Willkommen

Navigation


Partner Links

 
Antwort Themen-Optionen Ansicht
Ungelesen 29.02.16, 05:25   #1
Benutzerbild von pimperkatze
Mitglied seit: Jun 2015
Beiträge: 7
pimperkatze ist offline
pimperkatze
Member
 
RTMP und RTMPE Flash Streams herunterladen - Kommandozeile

Navigation und Aufruf eines Programms über Kommandozeile wird hier nicht erklärt - Info gibt es anderswo zuhauf.
Die Anleitung hier ist für Windows 7, funktioniert auf anderen Betriebssystemen aber ähnlich.

Es gibt Programme die können RTMP-Verbindungen durch Schnüffeln im Netzwerkverkehr erkennen und Streams speichern. Leider war bei mir dann öfter Anfang und Ende fehlerhaft oder mittendrin Sprünge oder es ging gar nichts. RTMPE wollen aus rechtlichen Gründen viele kommerzielle Programme nicht mehr entschlüsseln. Hinter rtmpdump steht kein Unternehmen und der Quellcode ist frei.

Mit rtmpdump kann man RTMP und RTMPE Streams entschlüsselt herunterladen und das Ergebnis ist perfekt solange man genug Bandbreite hat. Das Problem ist die komplexen Kommandozeilen-Parameter herauszufinden, woran so mancher scheitert.
Zum Erschnüffeln der Parameter nehmen wir einfach das dem rtmpdump beiliegende rtmpsrv, dieses kann RTMP/E-Anfragen annehmen und gibt die nötigen Parameter für rtmpdump aus, die wir per Copy&Paste übernehmen können.
Download rtmpdump: http://www.videohelp.com/software/RTMPDump

Zum Erkennen der IP des Stream Servers nehmen wir Process Monitor. Das kann auch Netzwerkverbindungen loggen.
Download Process Monitor: https://technet.microsoft.com/de-de/...ssmonitor.aspx


Eine Konsole öffnen und rtmpsrv ausführen. rtmpsrv lauscht nun auf RTMP Standart Port 1935. Die Anfrage des Flash Players muss nun auf "localhost" umgeleitet werden. Dazu benötigen wir die IP-Adresse des Stream-Servers.

Process Monitor starten und Filter hinzufügen: "Process Name"-"contains"-"flashplayer" und "add" klicken.
Der Filter funktioniert für den aktuellen Firefox mit Flash Plugin. Der Prozessname könnte bei anderem Browser anders sein, mit dem Taskmanager ("taskmgr") aber nicht schwer zu ermitteln.
Process Monitor ist aktiv, wenn der Button mit Lupensymbol kein rotes "X" hat. Damit er nur Netzwerkverbindungen zeigt nur den Filter-Button "Show Network Activity" aktivieren, die anderen deaktivieren. Unter Options->"Show resolved network addresses" den Haken wegklicken.
Nun startet man im Browser das Video/Musik kurz und pausiert dann wieder. Process Monitor sollte Ergebnisse listen, als:
FlashPlayer... | <PID> | TCP ... | ...local_port -> IP:remote_port
z.B.
FlashPlayerPlugin_1.0a.exe | 2440 | TCP Receive | Peter-PC:53008 -> 199.93.37.126:1935

Hier sehen wir schön den Server Port "1935". Nun die IP kopieren (mit Rechtsklick) oder abtippen. Diese IP muss nun aufs eigene System umgeleitet werden. Entweder fügt man die IP einem bestehenden Netzwerk-Adapter hinzu oder installiert extra einen virtuellen Loopback-Adapter.
Und das geht so: Über die Systemsteuerung den Geräte-Manager öffnen und Rechtsklick auf die Wurzel der Baumansicht, also den Computernamen. "Legacy Hardware hinzufügen" -> Hardware manuell aus Liste wählen -> "Netzwerkadapter" -> Hersteller: Microsoft -> "Microsoft Loopbackadapter", immer auf "weiter" klicken und es ist verfügbar. (Man kann davon auch beliebig viele installieren)
Einem Netzwerk-Gerät kann man eine beliebige IP-Adresse geben, damit landed jede Anfrage an diese Adresse auf "localhost" und kann lokal entgegengenommen werden.
Über Systemsteuerung -> Netzwerk -> Adaptereinstellungen auf das virtuelle Gerät rechtsklicken und "Eigenschaften" auswählen. In der angezeigten Liste "Internetprotokoll Version 4" auswählen und "Eigenschaften" klicken. Wähle "Folgende IP-Adresse verwenden" und füge die Server IP ein (Subnetz 255.255.255.255, kein Gateway), "ok" und Einstellungen schließen. Die Netzwerkverbindung des neuen "Geräts" aktivieren. Zum Testen könnte man nun "ping IP" oder "tracert -d IP" aufrufen. "ping" sollte 1ms oder weniger anzeigen und "tracert" sollte nur einen Hop listen. Der Befehl "netsh interface ip show addresses" listet die Netwerkgeräte und deren IP-Adressen.
Stream Server Domains kann man auch mit der hosts-Datei auf 127.0.0.1 umleiten, was aber nicht funktioniert, wenn der Flash Player eine IP-Adresse direkt aufruft anstatt einer Domain. Die IP-Umleitung ist dagegen universal.

Nun startet man im Browser das Video/Musik damit rtmpsrv die Anfrage empfängt. rtmpsrv möchte nun gleich rtmpdump mit den erkannten Parametern aufrufen, was nicht funktioniert solange die IP-Umleitung aktiv ist. Die Verbindung des Loopbackadapters deaktivieren oder die gesetzte IP über die Einstellungen wieder löschen. Rechtsklick auf das Konsolenfenster mit den Parametern -> "markieren" und den Block markieren (komplette Zeilen) und nochmal darauf rechtsklicken. Die Standart-Konsole unter Windows hat das Problem, dass Neuzeilenzeichen mit kopiert werden. Am besten nun Notepad starten (Zeilenumbruch aktivieren), den kopierten Text einfügen und bereinigen, hierbei Neuzeilenzeichen aus dem Text entfernen und den Ausgabe-Dateinamen mit extra Parameter -o "name.flv" angeben, falls gewünscht. Nun den Text wieder kopieren, auf das Konsolenfenster rechtsklicken und "einfügen", dann Eingabetaste drücken.

rtmpdump benutzt per default einen Trick um schneller als 1x zu laden, das funktioniert nicht bei jedem Server. Manche Server fangen an zurückzuspringen und der Download wird riesengroß, weil Videoabschnitte mehrfach enthalten sind, und lädt effektiv auch nur 1x. Hier hinter die Parameter "--realtime" hinzufügen und rtmpdump lädt normal mit 1x Geschwindigkeit. Man kann mehrere Instanzen von rtmpdump starten und somit mehrere Streams gleichzeitig laden.


Myspace
Mir ist aufgefallen, dass obwohl nichts abgespielt wird, Process Monitor weiterhin RTMP Traffic loggt. Solange die Verbindung noch besteht und nicht neu aufgebaut wird greift die IP Umleitung nicht. Erst rtmpsrv und IP-Umleitung starten, dann im Browser die Seite neu laden. Beim Starten eines Tracks reagiert dann rtmpsrv. Alternativ kann man mit TCPView die Verbindung auch von außen trennen.


tape.tv
tape.tv benutzt RTMPE über SSL Verschlüsselung. Process Monitor zeigt "72.247.179.63:443" (443 ist der Port für SSL).
Leider kann rtmpsrv nur auf Port "1935" lauschen, Quellcode ändern und neu kompilieren wäre etwas aufwendig. Wir starten einfach eine Portumleitung, wofür es einfache fertige Programme gibt.
Wir nehmen hier mal Bouncer: http://netnix.org/bouncer/

Aufruf mit "bouncer --port 443 --destination localhost:1935".
IP-Umleitung von "72.247.179.63" (kann jetzt anders sein) aktivieren und die Seite mit dem Video im Browser aufrufen.
rtmpsrv kommt in eine Endlosschleife, hier einfach mit Tasten Strg+C (gleichzeitig drücken) das Konsolenprogramm abbrechen und die Parameter wie üblich kopieren.
IP-Umleitung deaktivieren und rtmpdump mit Parametern aufrufen. Läuft.


MyVideo
Manche Filme kann man mit der erschnüffelten Adresse (URL Snooper) direkt über HTTP als FLV Datei im Browser aufrufen, was man schnell am puffernden Videobalken sieht.
Andere Filme streamen über RTMPE, das hier kaum puffert. Beim Neuladen einer Filmseite wechselt MyVideo die IP-Nummer des Servers, was das Umleiten erschwert. Über "erweitert" können wir aber einem Netzwerkgerät mehrere IP-Nummern zuweisen (4.23.47.254|199.93.32.254|199.93.37.126) dann empfängt rtmpsrv die Video-Anfrage.
Achtung: Im Aufrufparameter "rtmpe://" mit "rtmp://" ersetzen sonst meldet rtmpdump Fehler.

Medieninhalte von Pro7Sat1 verwenden dagegen "Adobe HTTP Dynamic Streaming", das kann man mit AdobeHDS.php speichern. Das erklär ich dann im nächsten Post.


Bei Unklarheiten einfach nachfragen.

Geändert von pimperkatze (29.02.16 um 12:51 Uhr). Grund: was hinzugefügt
Mit Zitat antworten Beitrag melden
   
Antwort


 


Themen-Optionen
Ansicht



Jetzt registrieren


Registrieren | Forum-Mitarbeiter | Kontakt | Nutzungsbedingungen | Archiv

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:32 Uhr.

All trademarks are the property of their respective owners.
Copyright ©2019 Boerse.IM/AM/IO/AI



().