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

Es steht doch in der Fehlermeldung:
Code:
1-08 02:04:02,974 [  Thread-2::8260 ] [DEBUG   ] [    g711_decoder::decode            ] Unsupported payload type 164

Du benutzt auch wirklich Version 2.1.0 ?
Wie ist die Box angebunden ? DSL ?
Ggfs. mußt Du in der g711_decoder.py in der class G711Decoder ein paar Anpassungen vornehmen. Es gibt hier im Thread bereits Ansätze für abweichende Payload-Typen.
Poste mal ein (ausreichend anonymisiertes) Wireshark-Log mit ein paar Paketen bei eingehenden Gesprächen.
Welche Kodierung steht bei Telefonie -> Eigene Rufnummern -> Sparchübertragung ?

Edit: Ah, ich seh' 's grad' - Annex A könnte das Problem sein.
 
Zuletzt bearbeitet:
"Steht in der Fehlermeldung": soweit war ich auch schon, die Frage lautete wie kann ich das beheben... ;)
Version: ich nutz die Fritzcap, welche unter dem Link von Seite 1 und dem gleichnamigen Paket "fritzcap-2.1.0.zip" drin ist. Ob das die 2.1 ist weis ich nicht.
Box: spielt ja nicht wirklich eine Rolle (Gespräche wreden aufgezeichnet, Wireshark kann umwandeln), aber: Annex A/ADSL.
---
Edit2 (bevor die Fragen kommen)
PPPoE, Autokonfiguration der Verbindung via TR069)
---
Zusatz Info: der VoIP-Account ist ein "reiner" VoIP-Account, unabhängig des DSL-Anschlusses (also kein All-IP-Zeug, und auch kein Versuch von Festnetz zu capturen).
Anpassungen: ok; welche, wo, und was? (sag mir bitte wenigstens auf welcher von diesen mittlerweile 12 Seiten ich was überlesen habe... **)
Codec: G711 ein- und ausgehend.

Wireshark-Protokol: da ich nicht genau weis was du benötigst (resp. wie ich das hin bekomme) ein Screenshot des RTP-Paketes aus der .cap-Datei:
https://dl.dropboxusercontent.com/u/6790070/shark.jpg
(Bild ist etwas grösser, möchte nicht schon wieder eine Verwarnung bekommen)

Ich möchte hinzufügen: ich bin kein Python-Programmierer, es wäre nett, wenn du das bei den Erklärungen/Hinweisen berücksichtigen könntest; bsp. in der Form "Datei *.py", an der und der Stelle das und das einfügen... Vielen Dank...

** ein Problem in diesem Thread:
Technische Infos zur Inbetriebname kreuzen sich mit individuellen Problemen (meaculpa, inkl. meinem); ev. wäre ein Aufteilen in "Fritzcap: hier downloaden + Hinweise zur Installation" (bsp. was wo wegen der Payload geändert werden muss), und einen Thread "Probleme mit Fritzcap" - wo dann Fälle wie der meinige hin kommen.. Würde die Sache übersichtlicher machen; vgl. ich sass 5 Stunden an der Einrichtung bevor ich gepostet habe; und durfte 11 Seiten "Filtern" und hab dann wohl den wichtigen Hinweis übersehen...
 
Zuletzt bearbeitet:
Dein Wireshark-Anhang ist etwas unübersichtlich und enthält, zumindest nachdem was ich sehe, nicht das Wichtige: Du benötigst Infos bzgl. der Framelänge und der Payload-Länge. Di Differenz zwischen Beidem ist der Offset. Diese drei Dinge könntest Du in einer neuen Zeile in g711_decoder.py einbauen, und zwar bspsw. so:
Code:
          {'len': 224, 'chunk': <Payload-Länge>?, 'offs': <Offset-Länge>, 'encap' : 'DSLPPPoE' },    # DSL (PPPoE)
          {'len': 232, 'chunk': 160, 'offs': 72, 'encap' : 'DSLPPPoE' },    # DSL (PPPoE)
          {'len': 312, 'chunk': 240, 'offs': 72, 'encap' : 'DSLPPPoE' },    # DSL (PPPoE)
          {'len': 73,  'chunk': 0,   'offs': 72, 'encap' : 'DSLPPPoE' },    # DSL (PPPoE) ComfortNoise

Mit dieser Datei versuchst Du es dann nochmal.

Edit:

Wichtig wäre auch eine Info über den mittels Wireshark ermittelten Payload-Typ (s.a. hier).
 
Zuletzt bearbeitet:
Dein Wireshark-Anhang ist etwas unübersichtlich und enthält, zumindest nachdem was ich sehe, nicht das Wichtige:

Nun stell dir mal vor wie das für einen aussieht, der sich überhaupt nicht mit Wireshark oder Python auskennt... (einen wie mich, zum Bleistift)

Da ich ein Anfänger in diesem Bereich bin hoffe ich auf Nachsicht...

In Wireshark gefunden:
Paket-Grösse (die 224bytes)
IPv4:
Header Length 20bytes.
Total Length 200

UDP:
Length: 180

... seh ich das richtig, das die Werte dann wie folgt aussehen:
len(gth): 224
Chunk: 180,
Offset: 44
?
 
Ich würde es nach Deinen Angaben eher zuerst so versuchen:
Code:
          {'len': 224, 'chunk': 160, 'offs': 64 'encap' : 'DSLPPPoE' },    # DSL (PPPoE)
          ...

Falls das nicht funktioniert, kannst Du Deine Variante probieren.

Edit: Paketgrößen angepaßt.
 
Zuletzt bearbeitet:
Danke, mit den angepassten Längen hat's geklappt :)

Eine (vorerst ;) letzte Frage zu Fritzcap von mir:
bis jetzt habe ich fritzcap vor dem Anruf via -c -d -m aufgerufen; wenn ich ohne die Optionen (vor dem Anruf) das Skript aufrufe, kommt "Nothing to do" und es wird beendet...

Gibt es eine Möglichkeit, das ich fritzcap während des Gesprächs "anwerfen" kann?

(kann grad nicht testen, muss erst nen neuen Prepaid-Voucher lösen gehen)
 
Dazu könnte ich mir eine Kombination mit CallMonitor und einem geeigneten Script vorstellen.
Dies würde natürlich voraussetzen, daß Du ein entsprechendes Freetz auf der Box besitzt.
Was stört Dich an dem Parameter -m ?
 
Mich stört nichts am Parameter, ich weis noch nichteinmal wofür der ist... (hab die Parameter aus einem Workaround-Vorschlag für eines der Probleme die auch ich hatte hier im Faden drangehängt)

Mein Ziel:
Ich krieg Anruf - stell dabei fest: muss man aufzeichnen da wichtiges besprochen wird, das man später belegen können muss. Gegenseite gibt ok zum Aufzeichnen... (oder es folgt ein Folgeanruf wo das ok zum Aufzeichenn schon da ist, dann wird sofort gestartet)
-> nun starte ich, in Ermangelung an Alternativen, fritzcap
-> Gespräch wird aufgezeichnet bis Gespräch beendet, und dann als wav gespeichert

... (wie) lässt sich das mit Fritzcap bewerkstelligen?
 
Den Eingangspost hattest Du gelesen ?

fritzcap in der Monitor-Modus starten, d.H.: Der Anrufmonitordienst (telnet service auf der FB) wird benutzt um die Aufzeichnungen automatisch zu starten/stoppen. "-c" steht für Aufzeichnung, "-d" steht für dekodieren und -m steht für Anrufüberwachung.
Code:
fritzcap -c -d -m

D.h., daß jeder Anruf automatisch aufgezeichnet wird. Bei Bedarf kann man denn nicht Benötigtes im Nachgang löschen.
 
Hast du meine Frage gelesen?

Mein Ziel:
Ich krieg Anruf - stell dabei fest: muss man aufzeichnen da wichtiges besprochen wird, das man später belegen können muss. Gegenseite gibt ok zum Aufzeichnen... (oder es folgt ein Folgeanruf wo das ok zum Aufzeichenn schon da ist, dann wird sofort gestartet)
-> nun starte ich, in Ermangelung an Alternativen, fritzcap
-> Gespräch wird aufgezeichnet bis Gespräch beendet, und dann als wav gespeichert

... (wie) lässt sich das mit Fritzcap bewerkstelligen?

... ein simples "nein" hätte als Antwort durchaus genügt, aber ok; dann werd ich versuchen fritzcap auf einem anderen gerät laufen zu lassen - sobald es korrekt funktioniert:

nachdem einkommende Gespräche funktionieren (gestern: Testanruf von mir selber, heute zwei vom Kollegen), passierte heute beim Ausgehenden das hier:

fritzcap.jpg


... gestartet habe ich fritzcap BEVOR ich die Nummer wählte...

Ist das so gewollt (nur Eingehende können aufgezeichnet werden), oder hab ich iwo noch nen kleinen Wurm drin?

Edit:
ach ja, der Aufruf:
hab ein .cmd-Skript erstellt, das im "vorpfad" von Fritzcap gespeichert ist, und das Skript aufruft.
Gestartet wird über ein Skript via Desktop...
Änderungen seit heute Nacht: keine bis auf Windows-Updates
 

Anhänge

  • fritzcap.jpg
    fritzcap.jpg
    128 KB · Aufrufe: 14
Da ich fritzcap auf einem Linux verwende, kann ich zu dem konkreten Fehler nichts sagen. Allerdings könnte ich mir vorstellen, daß es einen Fehler beim Betrieb des Scriptes "im Hintergrund" des Betriebssystems gegeben hat, also das, was man unter Linux in ein screen packen würde.
Hast Du mal einen Neustart des Skriptes versucht und Dich vorher versichert, daß der Prozess nirgendwo mehr läuft ?
 
Da läuft nichts im HIntergrund, das Skript wird direkt per Verknüpfung im entsprechenden Fenster geladen... (Im Vordergrund)

Neustart des Skripts: ja, gemacht. Ergebnis: blieb gleich. Ausgehender Anruf (geht über die gleiche VoIP-Nr) - Syntaxfehler...

Eine Idee was da sein könnte?
 
Was passiert, wenn Du die betreffende Zeile (167 in callmonitor.py) mal auskommentierst ?
Ist die Paketlänge für abgehende Telefonie gleich ?
 
...anderer Verdacht als die Skripte:

ich hab gerade nochmal getestet:
fritzcap aufgerufen.
Eine Minute gewartet.
... dann gehts; ohne Fehler...

?!? Lässt sich reproduzieren...

Fritzcap aufrufen, bis "Connected to the call monitor service..." erscheint, dann Anruf = den Fehler.
... ein paar Sekunden warten nachdem die "Connected to ..." da ist, danach funktionierts...

(braucht Fritzcap etwas "vorlauf" vor den SIP-Protokollen? Oder läuft ein Teil des Scripts noch im Hintergrund weiter, wenn die "Connected to"-Zeile kommt? (d.h. einfach etwas länger klingeln lassen wenn ich "auf Bedarf" aufzeichen will?)

...wollte eigentlich nicht auf "permanente Rufüberwachung" machen hier (auch wenn man löschen kann)... Gibt es da keine Möglichkeiten?
 
Zuletzt bearbeitet:
Hallo,

vielen Dank an alle die zur Entwicklung dieses Programms beigetragen haben. Es funktioniert wunderbar!
Leider kenne ich mich Python nicht aus. Daher meine Frage, was muss ich in der fritzcap.conf eintragen, um im Dateinamen die Nummer von Anrufer / Angerufenen hinzuzufügen?

cap_file = capture_%(tcaps.YmdHMS).cap

Oder welche Alternativlösungen gibt es?

Vielen Dank im Voraus!

Greetz, Witter!
 
Hallo,

seit dem Update auf Fritz OS 6.30 kann ich die Gespräche nicht mehr "aus dem laufenden Gespräch heraus" (Aufruf von fritzcap.py ohne Argumente) aufnehmen. (hat bis 6.30 sehr gut funktioniert)

Der gute alte Dospromt öffnet sich, ich seh kurz die "Connected"-Zeile - dann ist das Fenster auch wieder zu.
Leider ohne jeglichen Eintrag im Log- oder Debug-File...

Starte ich mit den Parametern "-c -d -m" werden Gespräche - wie vor 6.30 - ohne Probleme aufgezeichnet; aber nur wenn fritzcap schon vor dem Anruf gestartet wurde...

Hat jemand spontan eine Idee woran das liegen könnte?
 
Ich hab ein kleines Problem mit fritzcap - ev. weis jemand Bescheid?

Ich will das Skript über init.d beim Starten meines NAS laufen lassen...

Solange das init.d-Skript aufgerufen wird wenn ich via SSL eingeloggt bin (via "service fritzcap start"), funktioniert alles wie es soll.
Nur wenn es beim Systemstart aufgerufen wird (ohne Einloggen) kommt folgende Meldung:

[ERROR ] Cannot create connection to the call monitor service on 192.168.178.1:1012.

(Tritt auch auf, wenn ich auf fritz.box ziele)

Aufgerufen wird fritzcap über dieses init.d-Skript (basierend auf dieser Quelle, ein paar Anpassungen vorgenommen (Requiered-Start); dieses Skript ist eleganter als das Ding, das ich zuvor verwendete (Aufruf von fritzcap.py jedoch gleich gewesen)):

Code:
#! /bin/sh
### BEGIN INIT INFO
# Provides:          Startet Fritzcap
# Required-Start:   $network $remote_fs $syslog $local_fs
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Startet das Tool Fritzcap
# Description:       Startet das Tool Fritzcap
### END INIT INFO

# Variablen
box_name=192.168.178.1
passwd=...daspasswort...

# Funktionen
do_kill() {
	killall fritzcap.py
}
do_start() {
	/pfad zur/fritzcap.py --box_name $box_name -p $passwd -c -m -d &
}


# Aktionen
case "$1" in
    start)
	    echo -n "Starte Fritzcap..."
	if [ `pgrep fritzcap.py|wc -l` = "0" ]; then do_start
		echo "OK"
	else
		echo "FAIL"
	fi
        ;;
    stop)
        do_kill
        ;;
    restart)
	do_kill && do_start
        ;;
    status)
	ps -e | egrep fritzcap.py
	;;
esac

exit 0

Sowohl das init.d-Skript als auch fritzcap.py sind ausführbar (chmod 755) und gehören root (chown root,root)...

Fehlermeldungen etc gibt es ausser dem fritzcap-Logeintrag keine...

:confused:

Edit:
in fritzcap.py ist der Interpreter mit
#!/usr/bin/python
gegeben; der Fehler tritt auch auf, wenn ich unter do_start das Skript mit /usr/bin/python (NAS läuft auf Debian/Wheezy) aufrufe
 
Zuletzt bearbeitet:
Startreihenfolge?

Vielleicht ist die Firewall zum Zeitpunkt des Aufrufs noch nicht fertig eingerichtet?

Die Fehlermeldung besagt ja, daß die Verbindung zur FRITZ!Box nicht hergestellt werden kann ... da kommt eigentlich nur die falsche Netzwerk-Konfiguration (inkl. Firewall eben) zum Zeitpunkt des automatischen Starts in Frage, wenn es später problemlos läuft.

Vielleicht fügst Du mal ein "echo | nc -v -q 5 192.168.178.1 1012" vor dem Start des Python-Skripts ein ... damit wird versucht, eine Netzwerkverbindung zur FRITZ!Box aufzubauen. Wenn das klappen sollte, wird nach 5 Sekunden aber auch wieder beendet und es geht weiter. Ist die Verbindung nicht möglich, gibt es eine entsprechende Fehlermeldung auch schon vom "nc".
 
Danke für den Tip - leider hänge ich hier an einem Headless-System (NAS auf Openmediavault); allerdings erbrachte die Ausgabe in eine Log-Datei von nc keine Fehlermeldung (Allerdings auch keine Verbindung zum CallMonitor der Fritz)...

Dachte mit den Abhängigkeiten hätte ich die Startreihenfolge drin... Hab nun einfach in rc2.d die Reihenfolge von S02fritzcap auf S99fritzcap (Scripte zählten bis 17) geändert, leider ohne Effekt...

Hab mich allerdings schon länger nicht mehr mit init.d befasst - wie krieg ich das fritzcap-Skript als letztes gestartet (reicht mir ja aus, Hauptsache das läuft)

Edit:
Hab nun mit "Required-Start $all" einen Versuch gemacht; fritzcap wird als letztes Skript gestartet - allerdings mit der gleichen Fehlermeldung "Cannot connect to ..."
 
Zuletzt bearbeitet:
Das ist gleich zweimal "nicht mein Tisch" (1x der alte LSB-Mechanismus anstelle von systemd, das ginge ja noch ... aber dann noch Debian, da will ich gar nicht mehr ;)) - es gibt sicherlich genug Quellen dazu im Netz. Ich wollte nur auf einen "günstigeren Weg" zur Eingrenzung des Problems hinaus, weil (ich habe nicht einen eigenen Blick in das Python-Skript geworfen) die Fehlersuche mit einem "Standardtool" sicherlich leichter von der Hand geht.

Wie wird denn bei Dir die Firewall initialisiert (so es eine gibt)?

Meines Wissens wird beim insserv tatsächlich versucht, anhand der Abhängigkeiten im Kopf des rc-Skripts den passenden Platz in der Startreihenfolge zu finden. Wenn es da auch noch einen "Firewall-Service" geben sollte, fehlt der ggf. in der Liste der Abhängigkeiten noch.

Schau doch mal mit "chkconfig -l" in die LSB-Dienste (wenn das bei Debian auch so läuft, ich muß auch jedesmal erst nachsehen, wenn ich an ein "nacktes" fremdes System muß), ob es dort noch einen solchen Dienst gibt. Vielleicht verwendet Dein System aber auch schon den systemd (der war bei Wheezy m.W. als "preview" schon drin) und Du hast nur den "LSB-Emulator" vom systemd erwischt, der vielleicht mit den Abhängigkeiten nicht richtig klar kommt und wo die Firewall ohnehin nicht über ein rc-Skript initialisiert wird? Dann wäre ein systemd-File zum Start von fritzcap ohnehin besser.
 
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.