fritzcap: Tool für Etherreal Trace und Audiodaten-Extraktion v2.0

Bei mir besteht das gleiche Problem wie bei @voteforpresident, gibt es zu dem Problem bereits eine Lösung? Gleiches Setup FB 6490, F-OS 07.12, Vodafone
 
Nein, da wird es auch keine Lösung jemals geben.
 
Hallo alle,

ich habe Fritzcap 2.3.1 jetzt testweise eine Zeit lang (auch) an einer 7490 mit FritzOS 7.01 betrieben. Es läuft auf einem Windows 7 Rechner.

Dabei bekomme ich immer wieder Abbrüche - und zwar immer den gleichen. Manchmal 8 Stunden nach Start, manchmal nach 3 Stunden, manchmal nach 2:

2020-08-26 10:58:15,296 [ Thread-3::5084 ] [DEBUG ] [ capture_monitor::init_login ] Login HTTP result:200
2020-08-26 10:58:15,298 [ Thread-3::5084 ] [DEBUG ] [ capture_monitor::init_login ] Login OK (SID: da460bfb5d6ccb9a)
2020-08-26 10:58:15,299 [ Thread-3::5084 ] [DEBUG ] [ capture_monitor::run_logic ] pre_capture acquire lock.
2020-08-26 10:58:15,299 [ Thread-3::5084 ] [DEBUG ] [ capture_monitor::run_logic ] pre_capture acquire lock finished.
2020-08-26 10:58:15,299 [ Thread-3::5084 ] [DEBUG ] [ capture_monitor::run_logic ] pre_capture wait().
2020-08-26 18:43:52,825 [ Thread-4::5716 ] [ERROR ] [exception_logging_thread::run ] Exception in `run`
Traceback (most recent call last):
File "C:\PortApps\FritzCap/core/exception_logging_thread.py", line 48, in run
self.run_logic()
File "C:\PortApps\FritzCap/core/call_monitor.py", line 84, in run_logic
line = line + self.tn.read_until("\n", timeout=5) # Wait until one line data was readed from the telnet connection.
File "C:\Python27\lib\telnetlib.py", line 296, in read_until
return self._read_until_with_select(match, timeout)
File "C:\Python27\lib\telnetlib.py", line 366, in _read_until_with_select
self.fill_rawq()
File "C:\Python27\lib\telnetlib.py", line 576, in fill_rawq
buf = self.sock.recv(50)

error: [Errno 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen

---> Das sieht für mich danach aus, wie wenn die Verbindung PC zur FritzBox gestört wäre .... war sie aber nicht. Oder die Fritzbox sagt irgendwann "ich will nicht mehr. Schluß. Ende." - aber sowas würde ich eher nach einer immer festen Zeitspanne erwarten.

Ich habe nirgendwo einen Parameter gefunden, um eine Art time-out-Wert zu erhöhen - außer in call_monitor.py:

Code:
                    line = line + self.tn.read_until("\n", timeout=5)        # Wait until one line data was readed from the telnet connection.

Den Wert 5 habe ich testweise mal auf 35 erhöht - keine sichtbare Besserung. In der Box selber kann man (z.B. auf der Seite "Paketmitschnitt") auch nichts einstellen.



Nun die Fragen:

1. Hat jemand auch schon mal diesen "Fehler" gehabt - und evtl. eine Abhilfe gefunden? Liegt es vielleicht am FritzOS 7.01 ?


2. Gibt es eine Möglichkeit, Fritzcap so zu starten, daß es sich nach einem solchen Fehler wieder von alleine neu startet?

Ich muß da immer CTRL-X oder CTRL-C drücken ... oft mehrfach .... bis dann phyton wieder beendet wird und ich gefragt werde, ob ich die Batch-Datei (mit der ich Fritzcap starte) beenden will ... Anscheinend loggt Fritzcap zwar den Abbruch brav - beendet sich dann aber nicht richtig. Immer wenn dieser Fehler auftritt, ist der DOS-Prompt noch nicht wieder da ....

Gibt es vielleicht im Phyton-Laufzeitsystem eine Einstellung, daß abgebrochene Programme auch Phyton beenden sollen?


3. Gibt es eine Möglichkeit, Fritzcap so zu starten, daß es sich nach z.B. 2 Stunden wieder automatisch beendet?

Dann könnte ich eine Batch-Datei mit Endlos-Schleife machen, die nach 2 Stunden immer wieder neu startet....


Oder hat sich schon mal jemand was selbst gebastelt:
- Batch-Datei startet Fritz-Cap in anderem Task (DOS-Fenster)
- Batch-Datei bekommt PID des anderen DOS-Fensters zurück oder kann sie ermitteln
- Batch-Datei killt nach 2h den anderen Task .... und fängt dann wieder von vorne an....

Kann das Probleme bei der Fritzbox machen? Ich hatte mal den Fall, dass Fritzcap längst nicht mehr lief - aber auf der "Paketmitschnitt" Seite der Fritzbox immer noch ein wandernder Balken mit laufendem Mitschnitt angezeigt wurde - der sich auch nicht mittels Stop-Button stoppen lies .... erst ein Neustart der Fritzbox brachte Abhilfe)
 
Guten Tag,

ich bin neu im Forum, daher vergebt mir bitte Formfehler ;)

Ich habe Fritzcap soweit installiert bekommen, bekomme den auch zum lauschen, der nimmt auch Gespräche auf, aber irgendwie macht er keine Wav daraus...

Git: github.com/jpluimers/fritzcap
Command: sudo python fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1 --password xxx

Terminal:
2020-09-15 19:56:30,552 - FritzCap version 2.3.1 started.
2020-09-15 19:56:30,554 - Connect to the call monitor service on 192.168.178.1:1012.
2020-09-15 19:56:30,555 - Connected to the call monitor service on 192.168.178.1:1012.
2020-09-15 19:56:41,752 - Ring (ID:0, ActiveCalls.:1, Caller:MeineNummerzumtesten, DialedNumber:xxx, LinePort:SIP0)
2020-09-15 19:56:43,063 - Start capture (capture_file:'captures/2020-09-15/195643/capture_20200915195643.cap').
2020-09-15 19:56:43,385 - Connect (ID:0, ActiveCalls.:1, Caller:MeineNummerzumtesten, DialedNumber:xxx, LinePort:SIP0)
2020-09-15 19:56:54,354 - Disconnect (ID:0, ActiveCalls.:0, Caller:MeineNummerzumtesten, DialedNumber:xxx, LinePort:SIP0)
2020-09-15 19:57:06,230 - Capture finished (capture_file:'captures/2020-09-15/195643/capture_20200915195643.cap').
2020-09-15 19:57:06,231 - Decode process started (worker_id:1, file:'captures/2020-09-15/195643/capture_20200915195643.cap')
2020-09-15 19:57:06,240 - Decode process finished (worker_id:1, file:'captures/2020-09-15/195643/capture_20200915195643.cap')

Ist vielleicht ein etwas spezifisches Problem, aber er saved das Ganze nur als .cap Dateien, sollte es aber als .wav Konvertieren, was aber leider nicht passiert... Kennt sich jemand vielleicht damit aus? Mir wäre das Ganze sehr wichtig :(
 
@kangoru10

Als erstes würde ich mal prüfen, mit welchem Codec das Gespräch übertragen wurde:

Fritzbox - Telefonie - Eigene Rufnummern - Tab "Sprachübertragung".

Die passende Zeile suchen (15.09.2020 / 19:56 Uhr)....

Wenn dort "G.711" in der Spalte "Kodierung" steht, ist es auch mir ein Rätsel ;-) Edit: bzw: siehe ganz am Ende ....

Steht dort aber "G.722-HD", dann liegt es meines Erachtens daran .... so wie ich es überall gelesen habe, kann dieses Format von FritzCap nicht dekodiert werden.


Abhilfe für zukünftige Anrufe / Aufzeichungen:

Im Bereich "Telefoniegeräte" bei jedem relevanten DECT-Telefon ins Detail gehen; dann auf den Reiter "Merkmale des Telefoniegeräts". Dort im Bereich "HD-Telefonie" auswählen: "HD deaktiviert". Diesen Menuepunkt gibt es bei mir aber nur bei DECT-Telefonen - nicht bei den analogen FON-Anschlüssen und nicht bei in der Fritzbox definierten IP-Telefonen. Bei letzteren wählt das Endgerät (IP-Telefon) den Codec anscheinend selber aus.


Abhilfe für bereits aufgezeichnete .cap Datei:

Wireshark installieren (gibt's auch portabel; auf neuste Version achten);
Datei dort laden und im Menupunkt "Telephonie" müsste es dann der Menupunkt "RTP - RTP Streams" sein.

Bei mir funktionierte irgendwann auch mal "Telephonie - VOIP Anrufe". Und manchmal funktionierte auch in Wireshark nichts.

Ach ja: wenn einer anruft und keiner bei dir abhebt gibt's auch eine Capture-Datei ... und kein WAV .... also auch das mal in der Anrufliste prüfen, ob da tatsächlich ein Gespräch statt fand.
 
[Edit Novize: Überflüssiges Fullquote des Beitrags direkt darüber gelöscht - siehe Forumsregeln]
Werde ich heute Nachmittag definitiv ausprobieren! Ich danke dir für die Mühe, das ganze so säuberlich zusammenzuschreiben und berichte dann, wie es gelaufen ist! :)
 
Zuletzt bearbeitet von einem Moderator:
Bei mir tritt des öfteren das Problem auf, dass während des aufgenommenen Gesprächs einer der beiden Gesprächspartner nur noch leise zu hören ist.
Als ob das Normalisieren des Pegels irgendwie fehlschlägt.
Hat das Problem noch jemand, bzw konnte es lösen?
 
Hallo erstmal,

ich melde Vollzug mit einer FB 7490.
Das sind meine Werte für die g711_decoder.py:
{'len': 236, 'chunk': 160, 'offs': 76, 'encap' : 'VDSL' },
Allerdings finden sich bei Interface 3-17 keine RTP Steams, sondern unter 2-1. Es sind analoge Telefone angeschlossen.
Es werden auch wav Dateien inklusive mix.wav angelegt. Super Arbeit hier - ich bedanke mich vielmals und hab wieder ein bisschen was gelernt.

Gruß
Jörg
 
  • Like
Reaktionen: ctiemann
Das sind meine Werte für die g711_decoder.py:
{'len': 236, 'chunk': 160, 'offs': 76, 'encap' : 'VDSL' },
Es sind analoge Telefone angeschlossen.

Super, danke für die Info. Analoge Telefone (Endgeräte) sind sicherlich egal, da die Streams ja aus der FB gelesen werden.
Grüße
Chris
 
Hallo zusammen, leider ist Pyhton nicht meine Sprache.

Kann mir einer sagen, wie ich in das Verzeichnis in dem die Wav-Datei des Telefonates abgelegt werden,
eine zusätzliche Datei anlegen kann mit den Infos Caller, DialedNumber und ob Der Anruf Call oder Ring ist?


Danke im voraus.

gruß
Torsten
 
Hallo Torsten,
in der fritzcap.conf findest du die Variablen: "cap_folder" und "cap_file".
Dort kannst du festlegen, wie und wo was gespeichert wird.

Nehmen wir mal folgende Daten an:
Datum: 12.01.2021
Uhrzeit: 16:01:23 Uhr
eingehender Anruf von Telefonnummer: 082411234567
Eigene Telefonnummer: 012211234567

Standart ist:
cap_folder = captures/%(tcaps.Y-m-d/HMS)/ => speichert im Verzeichnis captures/2021-01-12/160123/
cap_file = capture_%(caller.number).cap => speichert im o.g. Verzeichnis die Datei capture_082411234567.cap

cap_folder = captures/%(dialed.number)/%(callevent.name)/%(tcaps.Y-m-d/H-M-S)/ => speichert im Verzeichnis captures/012211234567/RING/2021-01-12/16-01-23/
cap_file = capture_%(tcaps.Y-m-d-H-M-S)_%(callevent.name)_%(dialed.number)_%(caller.number).cap => speichert im o.g. Verzeichnis die Datei capture_2021-01-12-16-01-23_RING_012211234567_082411234567.cap

RING
= Anruf von außen / Call = Anruf nach draussen

Datum: 12.01.2021
Uhrzeit: 16:01:23 Uhr
ausgehender Anruf an Telefonnummer: 082411234567
Eigene Telefonnummer: 012211234567

cap_folder = captures/%(dialed.number)/%(callevent.name)/%(tcaps.Y-m-d/H-M-S)/ => speichert im Verzeichnis captures/082411234567/CALL/2021-01-12/16-01-23/
cap_file = capture_%(tcaps.Y-m-d-H-M-S)_%(callevent.name)_%(dialed.number)_%(caller.number).cap => speichert im o.g. Verzeichnis die Datei capture_2021-01-12-16-01-23_CALL_082411234567_012211234567.cap

Der Zusammenstellung der Klassen-Namen z.B. %(callevent.name) sind keine Grenzen gesetzt.

Eine zusätzliche Datei mit Anruferinformationen ablegen ist möglich, aber ein höherer Aufwand, wäre aber machbar z.B. in der capture_monitor.py unter "def init_capture_file(self):".
Leider hab ich jetzt aber keine Zeit und die Frage ist, ob es mit den o.g. Informationen nicht ausreicht.
Sicherlich mag man die "eierlegende Wollmilchsau" aber es sollten erstmal andere Probleme mit fritzcap angegangen werden.

Viele Grüße aus dem Allgäu,
Chris
 
Zuletzt bearbeitet:
Hallo Chris,

vielen Dank für deine Antwort.

Das " cap_file = capture_%(tcaps.Y-m-d-H-M-S)_%(callevent.name)_%(dialed.number)_%(caller.number).cap " hätte mir gereicht.
Jedoch wird nur das FIle "capture_file:'captures/2021-01-12/175641/capture_2021-01-12-17-56-41___.cap" angelegt.

Bei cap_folder leider das gleiche Problem.

Wie du siehst scheint er die Variablen nur als Blank zu schreiben.

Hast du noch eine Idee ?
 
Hi Chris,
ich habe das gleiche Problem. Die Telefonnummer wird auch bei mir nicht erzeugt im Dateiname auch das Verzeichniss wird so nicht angelegt. Diese Variable scheint aus irgendeinem Grund nicht zu greifen. Hast du noch eine Idee? Ich habe dieses Problem schon seit langer Zeit und leider keine Lösung dazu gefunden.

Die beiden Werte stehen bei mir in der fritzcap.conf:
cap_folder = captures/%(dialed.number)/%(callevent.name)/%(tcaps.Y-m-d/H-M-S)/
cap_file = capture_%(tcaps.Y-m-d-H-M-S)_%(callevent.name)_%(dialed.number)_%(caller.number).cap

Es erscheinen sogar eine Reihe von Fehlermeldungen:
C:\fritzcap>c:\fritzcap\python fritzcap.py -c -d -m
2021-01-12 21:32:12,664 - FritzCap version 2.3.1 started.
2021-01-12 21:32:12,667 - Connect to the call monitor service on fritz.box:1012.
2021-01-12 21:32:12,684 - Connected to the call monitor service on fritz.box:1012.
2021-01-12 21:32:20,732 - Call (ID:1, ActiveCalls.:1, Caller:(von mir ausgeblendet hier steht die TelNr), DialedNumber:(von mir ausgeblendet hier steht die TelNr), LinePort:SIP2)
2021-01-12 21:32:21,045 - Exception in `run`
Traceback (most recent call last):
File "C:\fritzcap/core/exception_logging_thread.py", line 48, in run
self.run_logic()
File "C:\fritzcap/core/capture_monitor.py", line 125, in run_logic
self.sub_start_capture()
File "C:\fritzcap/core/capture_monitor.py", line 245, in sub_start_capture
self.init_capture_file()
File "C:\fritzcap/core/capture_monitor.py", line 228, in init_capture_file
file = StringHelper.parse_string(self.cap_file, self.data_map)
File "C:\fritzcap/core/string_helper.py", line 77, in parse_string
value = StringHelper.parse_dates(matchObj.group(2), matchObj.group(3), data_map)
File "C:\fritzcap/core/string_helper.py", line 101, in parse_dates
str = (work_time.strftime(time_format))
ValueError: Invalid format string
Exception in thread Thread-3:
Traceback (most recent call last):
File "c:\fritzcap\lib\threading.py", line 801, in __bootstrap_inner
self.run()
File "C:\fritzcap/core/exception_logging_thread.py", line 48, in run
self.run_logic()
File "C:\fritzcap/core/capture_monitor.py", line 125, in run_logic
self.sub_start_capture()
File "C:\fritzcap/core/capture_monitor.py", line 245, in sub_start_capture
self.init_capture_file()
File "C:\fritzcap/core/capture_monitor.py", line 228, in init_capture_file
file = StringHelper.parse_string(self.cap_file, self.data_map)
File "C:\fritzcap/core/string_helper.py", line 77, in parse_string
value = StringHelper.parse_dates(matchObj.group(2), matchObj.group(3), data_map)
File "C:\fritzcap/core/string_helper.py", line 101, in parse_dates
str = (work_time.strftime(time_format))
ValueError: Invalid format string
 
Hallo denon20022 und dadusto,
ich schaue mir das Problem heute Nachmittag mal an. Hab jetzt gerade leider keine Zeit.

Stimmt - ich glaube, ich habe damals den Fehler beseitigt, aber es nicht hier veröffentlicht. Nachtrag: Doch habe ich.

Hier: https://www.ip-phone-forum.de/threads/fritzcap-tool-für-etherreal-trace-und-audiodaten-extraktion-v2-0.232682/post-2358036 und den Beiträgen danach.
Bitte mal lesen, mindestens bis POST #317!

Ersetzt bitte mal die core/string_helper.py und die core/capture_monitor.py. Ich glaube die zwei hatte ich damals korrigiert.
Aber bitte die originale erst umbenennen in zB. "capture_monitor.py.original" und dann ersetzen, damit ihr die Änderungen wieder Rückgängig machen könnt.
Hab auch die capfile-worker.py mal geändert, aber das war, glaub ich, noch ein anderes Problem.

Ich benutze Fritzcap selber schon lange nicht mehr, da kein Bedarf. Exfrau ist ausgezogen *lach
Schreibt mal bitte Rückmeldung, ob es damit klappt.
Ach ja - ein Like ist immer nützlich ;-)

Viele Grüße
 

Anhänge

  • core.zip
    5.8 KB · Aufrufe: 35
Zuletzt bearbeitet:
Hi Chris,
es könnte nicht besser laufen! Läuft TOP. Super vielen Dank.;)
Viele Grüße
Andy
 
Zuletzt bearbeitet:
  • Like
Reaktionen: ctiemann
Hi Chris,
nach dem Update auf die FRITZ!OS: 07.25 muss zwingend auch der User beim login mit rein. Kannst du mir sagen wie das geht?
Viele Grüße
Andy
 
Vollzitat von darüber gemäß Boardregeln entfernt by stoney
Guten Morgen Andreas,
versuche mal den in den Aufruf --username name einzubauen, sollte funktionieren.

/etc/fritzcap/fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1 --username root --password xyz
 
Zuletzt bearbeitet von einem Moderator:
Hi Chris,
danke für die schnelle Hilfe. Jetzt funktioniert es so wie du es beschrieben hast. Kann man den Namen und das Kennwort auch in der fritzcap.conf eintragen. Was muss ich dort wie eintragen damit ich es nicht in dem Aufruf mit rein packen muss. Der Nachteil ist das sonst mein Kennwort von der Box dann immer in der Dosbox sichtbar ist für jeden der auf den Bildschirm sehen kann.
viele Grüße
Andreas
 
Bitte Post: https://www.ip-phone-forum.de/threa...udiodaten-extraktion-v2-0.232682/post-2424401 beachten!

Ich sehe gerade: In der fritzcap.config solten auch die Einträge username = ichBins und password = ichBinGeheim reichen.

fritzcap.conf:
Code:
[settings]
# capture_files        =
# decode_files         =
# monitor_calls        =

username = ichBins
password= ichBinGeheim

# logging_config       =
# box_name             = fritz.box
# call_service_port    = 1012
# login_not_required   =
# protocol             = http
# cap_folder            = captures/%(dialed.number)/%(callevent.name)/%(tcaps.Y-m-d/H-M-S)/
cap_folder             = captures/%(tcaps.Y-m-d/HMS)/
# cap_file               = capture_%(tcaps.Y-m-d-H-M-S)_%(callevent.name)_%(dialed.number)_%(caller.number).cap
cap_file               = capture_%(caller.number).cap
# after_capture_time   = 20
# decode_workers_count   = 2

default_login   = getpage=../html/de/menus/menu2.html&errorpage=../html/index.html&var:lang=de&var:pagename=home&var:menu=home&=&login:command/password=%s
sid_challenge   = getpage=../html/login_sid.xml
sid_login       = login:command/response=%s&getpage=../html/login_sid.xml
start_str       = ?start=1&start1=Start
stop_str        = ?stop=1&stop1=Stop

[phone_book]
08003301000   = Telekom
0448556694    = ZuHause
0177111222    = MeineFrau-Handy
0048177111222 = MeineFrau-Handy
und Aufruf wie gehabt:
Code:
/etc/fritzcap/fritzcap.py --capture_files --decode_files --monitor_calls --box_name 192.168.178.1

ungetestet, ansonsten nochmal melden.

Sonnige Grüße
Chris
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,183
Beiträge
2,247,562
Mitglieder
373,729
Neuestes Mitglied
ChTh
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.