Ich brauche ein Programm, das mir HTTP Requests und Responses aus TCP streams passiv herausfischt, also ohne diese verändern. Ich will diese dann entweder als separate Files speichern, oder gleich ein weiteres Programm starten lassen dass die Daten per pipe einliest & weiterverarbeitet. Am Ende will ich alle übertragenen Dateien (Bilder und Videos) wieder zusammensetzen & zwischenspeichern, so dass ich mir das gute Zeugs später bequem permanent abspeichern kann. Ich hab mir einen TLS MITM Proxy geschrieben, damit komme ich an die entschlüsselten Verbindungen meines iPads ran: https://github.com/Daniel-Abrecht/mitm-tools Ich komme also mit ganz normalen Paketcapture Programm problemlos an die Daten ran. Diese stören sich auch am initialen socks Handshake in der regel nicht. Alternativ könnte ich auch einen weiteren socks proxy dazwischen schalten, damit könnte ich den Traffic sogar beliebig weiter manipulieren. Es wäre zwar einfach, das selbst auch noch zu schreiben, aber gibt es eventuell schon was fertiges dafür? Irgendwie finde ich nie was, das genau passt. Was ich mich auch noch frage, gibt es einen Weg, iptables socks beizubringen, so dass ich die Verbindungen dort filtern, NATen, etc. kann, wie reine TCP Verbindungen? Das könnte recht praktisch sein.
Hast du schon ncat angeschaut? Und tcpdump/tcpreplay? LG, Sebastian
Mit tcpdump kann ich zwar nach dem port usw. filtern, aber HTTP Requests mitsamt Response in separate Files speichern geht nicht. Ich kann den Traffic zwar in pcap files speichern, aber die dann zu Parsen und weiterverarbeiten vereinfacht mein Endziel, die übertragenen Dateien rauszufischen, nicht wirklich. ncat kannte ich noch nicht, scheint wie netcat zu sein. Aber ich glaube, damit kann ich das auch nicht wirklich umsetzen. tcpreply & co. sehen interessant aus, kannte ich noch nicht. Sind aber für mein vorhaben vermutlich auch nicht das richtige.
Ich habe es mir jetzt selbst geschrieben: https://github.com/Daniel-Abrecht/mitm-tools intercept.py ist ein weiterer socks proxy, zum zwischen die anderen 2 schalten. Das lädt interceptor/http.py, welches http traffic erkennt und dekodiert. Und bei jedem 2XX request ruft es save_http_files.sh auf und pipet den fertig dekomprimierten Inhalt da rein. Bei range requests gibt er den range auch mit, und save_http_files.sh setzt es wieder zusammen (wobei das ist glaub ich noch etwas buggy.) Das kann nun fast alles speichern, was so über die Leitung kommt. Ganz am Ziel bin ich aber noch nicht. Bei HLS Videostreams hat man eine m3u playlist, die vom Browser mehrfach neu geladen werden kann. Darin steht, welche Video Dateien in welcher Reihenfolge geladen werden müssen. Ich muss noch was in die save_http_files.sh reinbauen, dass es m3u decodiert, und die Dateien in einem Ordner zusammenfasst, damit ich auch das Zeugs einfach abgreifbar habe.
Daniel A. schrieb: > Ende will ich alle übertragenen Dateien (Bilder > und Videos) wieder zusammensetzen & zwischenspeichern, so dass ich mir > das gute Zeugs später bequem permanent abspeichern kann. > nicht. Bei HLS Videostreams hat man eine > m3u playlist, die vom Browser mehrfach neu geladen werden kann. Darin > steht, welche Video Dateien in welcher Reihenfolge geladen werden > müssen. Du willst Streams als Videodatei? ffmpeg -i [https://]input.m3u[8] -c copy -bsf:a aac_adtstoasc output.mp4 http://www.ffmpeg.org/ffmpeg-bitstream-filters.html#aac_005fadtstoasc
@Irml Das Problem bei HLS Livestreams ist das hier, speziell die "#EXT-X-MEDIA-SEQUENCE": https://apple.co/3bCiwtQ Der Server pollt also quasi eine EXTM3U Datei, und der Server liefert jeweils eine neue Playlist, mit ein paar Streams am Anfang entfernt, und ein paar neuen am Schluss. Ich kriege also schon die einzelnen Fragmente abgespeichert, aber momentan speichere ich nur die neuste Version einer Datei. Am Ende hätte ich also von der EXTM3U nur die neueste Version der Datei, und die listet womöglich die Fragmente vom Anfang nicht auf. Ich muss die EXTM3U Playlists also zwingend noch parsen, und mit Vorgängerversionen kombinieren, sonst fehlt mir eventuell der Anfang vom Stream. Ausserdem muss ich den Inhalt neu schreiben, dass es die abgefangenen lokalen Fragmente referenziert, und nicht die ursprünglichen Dateinamen oder externe URLs. Im Grunde nicht schwer, aber ich muss das halt erst noch umsetzen.
youtube-dl versucht? Kann neben Youtube sehr viele andere
Streaming-Seiten und Formate...
>> youtube-dl -o recording.mp4 "m3u8-URL"
Jetzt ist es fertig. Range Requests werden richtig zusammengefasst, und wenn eine EXTM3U Datei geladen wird, erstellt es jetzt eine Datei M3U:irgendwas, die die lokalen Kopien der Dateien referenziert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.