fritzcap – VoIP-Telefongespräche mitschneiden und speichern leicht gemacht

AVM FRITZ!Box 7490

In der Vergangenheit habe ich bereits zwei Artikel veröffentlicht, wie ihr VoIP-Telefongespräche mitschneiden und speichern könnt:

Da zu diesem Thema weiterhin Fragen kommen, dachte ich mir, euch eine neue Methode vorzustellen. Als Basis dient die in der Programmiersprache Python geschriebene Skriptsammlung fritzcap. Das Tool automatisiert den Vorgang des Paketmitschnitts und die anschließende Extraktion der VoIP-Telefonate. D.h. ihr müsst euch nicht mehr mit Wireshark herumschlagen. Wie der Name schon sagt setzt fritzcap eine FRITZ!Box mit mindestens FRITZ!OS 6.30 voraus. Aktuell wird nur der G.711-Codec unterstützt.

Wenn der Paketmitschnitt erst nach Beginn des Telefonats startet, kann es vorkommen, dass nur ein Kanal aufgezeichnet wird. Dieses Verhalten ist anscheinend erst mit FRITZ!OS 6.80 und höher der Fall. Wer von dem Problem betroffen ist, sollte mit einem Recovery auf FRITZ!OS 6.50 zurückgehen und erneut testen.
Vor dem Mitschneiden von VoIP-Telefonaten sollte jedoch die aktuelle Rechtslage beachtet werden! Bei unerlaubten Aufzeichnungen sind sogar strafrechtliche Konsequenzen möglich. Ich übernehme keine Haftung.

fritzcap installieren und einsetzen

  1. Zunächst muss der CallMonitor der FRITZ!Box aktiviert werden. Der integrierte Anrufmonitor ist standardmäßig deaktiviert und muss mit Hilfe eines angeschlossenen Telefons aktiviert werden. Dazu einfach #96*5* wählen und ein paar Sekunden warten. Der CallMonitor eurer FRITZ!Box ist jetzt via TCP-Port 1012 erreichbar. Das Ausschalten funktioniert analog mit #96*4*.
  2. Zweitens benötigt ihr ein installiertes Python, damit das Skript ausgeführt werden kann. fritzcap setzt Python in Version 2.6 oder höher voraus. Ich habe das Skript mit Python 2.7.14 getestet. Python 3.x scheint aktuell noch nicht zu funktionieren. Einfach downloaden und installieren, das wars schon. Hier könnt ihr Python für Windows herunterladen: https://www.python.org/downloads/windows/
  3. Die dritte Voraussetzung ist fritzcap selbst, welches ihr bei Github erhaltet. Hier findet ihr immer die neueste Version zum Download: https://github.com/jpluimers/fritzcap/archive/master.zip
  4. Nach dem Download müsst ihr die Skriptsammlung entpacken. Ich habe sie zum Testen auf den Desktop gelegt.
  5. Anschließend eine Eingabeaufforderung („cmd.exe“) öffnen und in den Skriptordner navigieren.
  6. Mit diesem Befehl wird fritzcap im Monitor-Modus gestartet. fritzcap erkennt über den CallMonitor, wann ein Telefonat geführt wird und startet bzw. stoppt die Aufzeichnung automatisch. Anschließend wird das Gespräch aus dem Paketmitschnitt extrahiert und in einer WAV-Datei gespeichert.
    fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1 --password PASSWORT
  7. Dieser Befehl startet die Aufzeichnung und Dekodierung eines VoIP-Telefonats von Hand. Die Dateien werden in ein dynamisch erzeugtes Verzeichnis abgelegt. Die Aufzeichnung wird mit STRG+C beendet.
    fritzcap.py --capture_files --decode_files --cap_folder "captures/%(tcaps.Y-m-d/HMS)" --box_name 192.168.178.1 --password PASSWORT

fritzcap kann noch einiges mehr. Eine komplette Übersicht aller Funktionen bekommt ihr über die eingebaute Hilfe-Funktion:

fritzcap.py --help

Tobi

Hallo, mein Name ist Tobias und ich habe diesen Blog im April 2009 ins Leben gerufen. Seitdem blogge ich hier über Software, Internet, Windows und andere Themen, die mich interessieren. SSDblog ist mein zweiter Blog, indem es rund um das Thema SSDs geht. Ich würde mich freuen, wenn ihr meinen Feed abonniert oder mir auf Twitter und Facebook folgt.

30 Antworten

  1. Marvin sagt:

    Hallo habe deine Anleitung zum Thema „fritzcap – VoIP-Telefongespräche mitschneiden und speichern leicht gemacht“ befolgt.
    Hat auch alles soweit gut geklappt allerdings bekomme ich folgenden Fehler.
    Villeicht hast du einen Tipp für mich an was es liegt, es werden .cap Dateien abgelegt und leider keine .wav Dateien.

    Hier der Fehler:
    2017-12-23 12:13:18,342 – Ring (ID:0, ActiveCalls.:1, Caller:-, DialedNumber:-, LinePort:SIP0)
    2017-12-23 12:13:19,450 – Start capture (capture_file:’captures/2017-12-23/121319/capture_20171223121319.cap‘).
    2017-12-23 12:13:22,401 – Connect (ID:0, ActiveCalls.:1, Caller:-, DialedNumber:-, LinePort:SIP0)
    2017-12-23 12:13:45,236 – Disconnect (ID:0, ActiveCalls.:0, Caller:-, DialedNumber:-, LinePort:SIP0)
    2017-12-23 12:13:56,088 – Capture finished (capture_file:’captures/2017-12-23/121319/capture_20171223121319.cap‘).
    2017-12-23 12:13:56,091 – Decode process started (worker_id:1, file:’captures/2017-12-23/121319/capture_20171223121319.cap‘)
    2017-12-23 12:13:56,092 – Invalid PCAP dump header. Probably not a valid capture file
    2017-12-23 12:13:56,095 – Decode process finished (worker_id:1, file:’captures/2017-12-23/121319/capture_20171223121319.cap‘)

  2. Jörg sagt:

    leider klappt das bei mir nicht
    Fehlermeldung:

    C:\fritzcap-master>fritzcap.py –capture_files –decode_files –monitor_calls —
    box_name 192.168.179.1 —
    Traceback (most recent call last):
    File „C:\fritzcap-master\fritzcap.py“, line 39, in
    import argparse
    ModuleNotFoundError: No module named ‚ConfigParser‘

  3. Jörg sagt:

    es funktioniert nur mit Phyton 2.x

    Aufruf Parameter Passwort anstatt: –password PASSWORT mit: -p PASSWORT der FritzBox

  4. Benrhard Friess sagt:

    Hi Tobi,

    vielen Dank für die Beschreibung!

    Vielleicht möchtest Du noch die Information ergänzen, dass das von Dir angegeben Kommando nur dann funktioniert, wenn die Fritz!Box über WAN ans Internet angebunden ist und als Router/Gateway arbeitet.

    In meinem Fall läuft die Box als Client, der über einen anderen Router im Netz ins Internet geht und in diesem Fall muss das Interface, auf dem aufgezeichnet werden soll genauer spezifiziert werden.

    Mein Kommando lautet demnach:
    fritzcap.py --capture_files --decode_files --cap_interface 1-eth0 --monitor_calls --box_name 192.168.178.1 --password foobar

    Dann funktioniert FritzCap ganz hervorragend!

    Viele Grüße

    Bernhard

    • Schweitz sagt:

      Hallo Bernhard,
      mit Deinem Kommando für fritzcap / FritzBox als Client, mit dem die Automatische Aufzeichnung aktiviert wird, funktioniert fritzcap einwandfrei. Aber den Befehl für den manuellen Start bekomme ich nicht hin. Habe verschiedene Varianten versucht. Hast Du einen Tipp?
      Vielen Dank

  5. Kurt sagt:

    Hallo zusammen,

    hat schon jemand Erfahrungen mit fritzcap auf der FB 7590 unter Fritz!OS 7 ?

  6. Kann mit mir jemand telefonieren der sich auskennt? Windows 10 und 7590

    • Schweitz sagt:

      Hallo Tobi,
      das ist alles sehr gut beschrieben. Wenn aber an der FritzBox ein Benutzername vergeben ist, müssen die cmd-Befehle mit --username foo ergänzt werden:

      fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1 --username foo --password PASSWORT und

      fritzcap.py --capture_files --decode_files --cap_folder "captures/%(tcaps.Y-m-d/HMS)" --box_name 192.168.178.1 --username foo --password PASSWORT

      foo = Benutzername

  7. Schweitz sagt:

    das hat alles mit der FritzBox 7390 ohne Proleme funktioniert. Habe jetzt eine FritzBox 7530 (FritzIOS 07.02). Es wird nur noch eine .wav (mit der Stimme des Anrufers) und die .cap Datei erzeugt (es fehlt also die capture_xxxxxxxxxxxxxxx_mix_0_1.wav). Verwendet habe ich fritzcap-master und python-2.7.15.
    Weiss jemand eine Lösung?

    • Tobi sagt:

      Liegt vermutlich an der neuen FRITZ!OS Version und / oder an der 7530. Da die letzte Version von fritzcap eineinhalb Jahre alt ist wurde die Entwicklung offensichtlich eingestellt. Du kannst den Entwickler aber gerne auf Github kontaktieren.

    • Schweitz sagt:

      Aber „Kurt“ hat eine FritzBox 7590 auch mit Fritz!OS 7 und schreibt am 7. Sept. 2018:
      „fritzcap läuft im Monitor-Mode auf einem NAS und funktioniert einwandfrei.“
      Somit müsste das auch für die 7530 zutreffen. NAS habe ich eingerichtet, aber weiter komme ich nicht. Finde auch nichts bei Google.
      Wie ist die Lösung?
      Wie erreiche ich den Entwickler von Fritzcap? Github-Support ist nicht zuständig. Und in Fritzcap ist keine README Datei.

    • Kurt sagt:

      Hallo Schweitz,
      ich lasse fritzcap bei Bedarf in einem eigenen Fenster (screen) auf dem NAS laufen. An dieser Stelle sei angemerkt, dass mein NAS ein externes Gerät ist, auf dem Linux als Betriebssystem läuft (QNAP TS-651). Wenn an der FritzBox ein USB-Stick ist, der als NAS eingerichtet ist, funktioniert das nicht, weil du fritzcap nicht in oder auf der Fritzbox installieren kannst. Wie oder ob das auch auf einem Windows PC funktioniert weiß ich nicht. Der Rechner müsste ja dann immer eingeschaltet sein, was i.d.R. ja nicht der Fall sein wird. Das NAS ist bei mir jedoch immer an.

      Hinweise zum genutzten screen-Befehl findet man hier: https://wiki.ubuntuusers.de/Screen

      Dazu ist Folgendes nötig (die Befehle habe ich in [ ] geschrieben):

      1. auf der FritzBox muss der Anrufmonitor aktiv sein. Dazu #96*5* an einem Telefon wählen, um den Callmonitor einzuschalten
      2. an den Telefoniegeräten sollte die HD-Telefonie deaktiviert sein, weil fritzcap den dabei genutzten Codec nicht „lesen“ kann
      3. auf dem NAS muss python 2 laufen, python 3 funktioniert nicht
      4. ich habe auf dem NAS eine „fritzcap“-Freigabe eingerichtet und die fritzcap-Dateien dorthin kopiert
      5. mit Putty als admin auf dem NAS anmelden
      6. mit [cd ..] ins ROOT-Verzeichnis wechseln
      7. mit [screen -S FRITZCAP] eine neue Sitzung „FRITZCAP“ starten
      8. mit [cd share/fritzcap] in das unter 4. erstellte Verzeichnis wechseln
      9. mit [python fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1 --password DEINPASSWORT] fritzcap starten
      10. die Sitzung mit [Strg+A] und danach [D] trennen.
      11. mit "logout" die Verbindung zum NAS trennen

      fritzcap läuft jetzt in der unter 7. erstellten Sitzung „FRITZCAP“ weiter und zeichnet ein- & ausgehende Anrufe in einem Unterverzeichnis auf. Bei einem Neustart des NAS muss fritzcap allerdings wie oben beschrieben erneut in einer Sitzung gestartet werden.

      Der Vorteil dieser Lösung ist, dass nur dann, wenn auch telefoniert wird der Datenverkehr der Fritzbox aufgezeichnet wird. Man darf nicht vergessen, dass dabei der GESAMTE Datenverkehr der Internetschnittstelle aufgezeichnet wird und nicht nur die Daten des Telefonates. Wenn nebenbei also gerade Updates von PCs geladen werden, oder jemand auf Youtube Videos guckt, kann die .cap-Datei schon mal ein paar Gigabyte groß werden. Wenn man nur sporadisch ein einzelnes Telefonat mitschneiden will, ist es ohnehin einfacher das direkt an der Fritzbox zu machen. Diese bietet die Möglichkeit des Paketmitschnitts von Haus aus an. Hinweise dazu erhält man auch auf der Internetseite vom Hersteller. Aus den so erstellten Dateien kann man dann mit WireShark das Gespräch extrahieren.

      Wichtig ist an dieser Stelle, dass das alles nur erlaubt ist, wenn man mit sich selbst telefoniert, oder alle Gesprächspartner darüber informiert und einverstanden sind, dass das Gespräch aufgezeichnet wird.

      Viel Erfolg
      Kurt.

  8. Schweitz sagt:

    Da das auf der FritzBox 7390 klappte, habe ich nun die Lösung von Bernhard versucht – FritzBox 7390 als Client => funktioniert. Aber die Lösung mit fritzcap auf dem NAS finde ich eleganter. Komme aber mit den Befehlen nicht zurecht, z.B. ..screen (was bedeuten die Punkte, was muss in die Klammern). Aber vielleicht werden in diesem Forum solche Grundkenntnisse vorausgesetzt.

  9. Ich habe ein Problem mit der 7590. Kann mich einer mal dazu anrufen bitte?

    • Schweitz sagt:

      Hallo Alexander,
      wie oben beschrieben habe ich eine Frtzbox 7530 (mit dem gleichen OS wie auf Deiner 7590). Funktionierte damit nicht, aber da das mit der 7390 funktionierte, läuft diese jetzt an der 7530 als Client (AVM Anleitung) mit dem Befehl von Bernhard (eine 7390 auch gebraucht im Internet bei A… ). Ich möchte meine Tel. Nr. hier nicht posten.

      System Win 10. Ich benutze fritzcap-2.3

      Meine Befehle im Detail (der entpackte Ordner fritzcap-2.3 liegt auf C:\

      cmd öffnen

      cd /d C:\

      (cd Leerzeichen Schrägstrich d Leerzeichen C Doppelpunkt Backslash)

      Enter

      fritzcap-2.3\fritzcap.py --capture_files --decode_files --cap_interface 1-eth0 --monitor_calls --box_name IP ADRESSE DER CLIENT BOX --username DEIN BENUTZERNAME --password DEIN PASSWORT

      Enter

      Ich habe mit diesen Befehlen eine .cmd Datei erstellt, diese mit Bat_Cmd To_Exe_Converter in eine .exe konvertiert.

      Viele Grüße
      Schweitz

      PS an Tobi: Es wäre schön, wenn die Befehle, z.B der von Kurt, durch das Hochladen unverändert blieben.

    • Tobi sagt:

      Habe das Problem gefunden. Die Befehle werden unverändert gespeichert, aber durch einen Filter verändert angezeigt. Zukünftig einfach die Befehle wie folgt im Kommentar speichern, dann sollte alles richtig angezeigt werden:
      <code>Befehle</code>

      Habe dementsprechend auch den Kommentar von Kurt angepasst.

  10. Bei mir startet fritzcap automatisch beim Start von Windows.
    Ich habe in Windows Powershell (Administrator) eigegeben:

    cd E:\fritzcap-master
    .\fritzcap.py –capture_files –decode_files –monitor_calls –box_name 192.168.178.1 –username (Meinen Usernamen) –password (Mein Passwort)

    Ich habe mit dem Editor eine Datei geöffnet und fritzcapi.bat genannt.
    Die Eingabe in Powershell habe ich kopiert und in diese Datei eingefügt.
    Diese Datei habe ich in den Autostart Ordner verschoben (C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)

    • Wenn ich jedes Telefonat automatisch mitschneiden will, muss den ganzen Tag das dos Fenster von cmd.exe mir fritzcap geöffnet sein. Das ist lästig.
      Wie kann ich fritzcap automatisch beim Start von Windows starten und im Hintergrund laufen lassen?

    • Andreas Schoeller sagt:

      Fehler! Im Autostart Ordner funktionieren nur Verknüpfungen, keine .bat Dateien.
      Es muss so gemacht werden:
      Die Datei fritzcap.bat liegt im fritzcap- master Ordner.
      Die erste Zeile mit „cd“ am Anfang habe ich weggelassen und nur die zweite Zeile mit „.\“ am Anfang in die Datei geschrieben.
      Dann habe ich eine Verknüpfung der Datei erstellt und in den Autostart Ordner verschoben.

    • Andreas Schoeller sagt:

      Man kann das Fenster minimiert öffnen, indem man in den Eigenschaften der Verknüpfung bei Ausführen: Minimiert wählt

  11. cue sagt:

    Meine Frau schneidet ab und an befufsbedingt Gespräche mit.
    Wir hatten sonst immer ISDN Comfort beim Anbieterwechsel
    mitbestellen müssen, weil es nur über die alte FritzBox Software
    zu bewerkstelligen war…

    Nun sind wir einen großen Schritt unabhängiger – Danke!

    Ich habe einfach mal das Ganze in eine kleine Anwendung gepackt:

    http://www.manyplay.de/cgi-bin/mp_load.pl?dl=FRZ

    In die Eingabefelder jeweils
    – das Verzeichnis von Python,
    – das aufzurufende Script
    sowie das Verzeichnis des Scripts.

    @Andreas Schoeller
    Einfach „x:\pfad\fritzcap.exe“ /s in einen neuen Link
    und in den Windows Autostart Ordner packen.

    Beispiel für den Link „c:\fritzcap-master\fritzcap.exe“ /s

    Im verlinkten Zip ist ein vorgefertigter Link, der mit
    Pfadangaben erweitert werden müsste.

    Die Eingabefelder werden in eine .ini Datei abgelegt.

    • cue sagt:

      Die aktuellste Version lässt mit /s /h ein Minimieren nach dem Start zu.

    • Andreas Schoeller sagt:

      Deine Lösung hat funktioniert. Ich musste aber erst im Defender (Einstellungen > Windows Sicherheit > Viren- & Bedrohungsschutz > Einstellungen für Viren- & Bedrohungsschutz > Ausschlüsse > Ausschluss hinzufügen > Datei diese Datei hinzufügen.
      Nur das Minimieren mit /h hat nicht funktioniert. Man kann das Fenster aber minimiert öffnen, indem man in den Eigenschaften der Verknüpfung (Link) bei Ausführen: Minimiert wählt.
      Was ist der Vorteil deiner Lösung zu meiner Batch-Datei Lösung?

  12. cue sagt:

    Windows 10 moniert reine Executable aus dem Netz.
    Es müssen beide Parameter in der Reihenfolge /s /h
    sein, ein minimieren ohne Start erscheint mir unsinnig.
    Nach Deinen gemachten Ergänzungen gibt es keinen
    wirklichen Vorteil mehr…
    Es war als reine Vereinfachung für mich gedacht und
    war der Meinung, es könnte anderen von Nutzen sein.

    • Andreas Schoeller sagt:

      ich habe /s /h hinter den Link gemacht. Nur /s funktionierte, aber /h dahinter hat nicht minimiert.
      Aber minimiert öffnen, indem man in den Eigenschaften der Verknüpfung (Link) bei Ausführen: Minimiert wählt, hat doch den gleichen Effekt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.