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

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
M.e. ist das auf deinem Sat-Receiver wohl normal, da er für Sat-Empfang vorgesehen ist und eine ganze Menge anderer Daten zu verarbeiten hat.
Überlege mal, wieviel Daten in 30 Minuten zusammenkommen.
Und was passiert eigentlich, wenn während dieses Vorgangs ein weiterer Anruf stattfindet?
Dann wird parallel ein weiteres .cap erzeugt, könnte allerdings auf dem Sat-Receiver wegen dem Prozessor Probleme machen. Was für einen Prozessor hat der Sat-Receiver?
Bitte prüfe mal mit
Code:
cat /proc/cpuinfo | less
auf deinem Sat-Receiver und poste mal die Werte für:
Code:
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1386.501
cache size      : 1024 KB
processor       : 1
vendor_id       : GenuineIntel
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
stepping        : 8
microcode       : 0x838
cpu MHz         : 1416.945
cache size      : 1024 KB
core id         : 1
cpu cores       : 4
processor       : 2
vendor_id       : GenuineIntel
model name      : Intel(R) Celeron(R) CPU  J1900  @ 1.99GHz
cpu MHz         : 1375.543
cache size      : 1024 KB
Das sind zB. meine Werte und ich habe nur einen Mini-PC (149 €) als Server für die ganze Haussteuerung (Rolladen, Kameras, Poolsteuerung, Datensicherung, Temperaturüberwachungen, Heizung, Fritzcap, Homepage, etc.) im Einsatz. Bei mir dauert das Umwandeln eines ca. 30 min. Gespräches um die 20 - 30 Sekunden.
Läuft aber auch noch mehr in den Tasks der Prozessoren.
 
Zuletzt bearbeitet:

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
Gibt's evtl. ne Möglichkeit, das zu beschleunigen?
Hab ich bereits geschrieben: Richte dir doch einfach einen Raspi 3 ein (~45 € ohne Gehäuse) und lasse den für FritzCap, etc. laufen, und den Sat-Receiver das tun, wozu er geschaffen wurde, nämlich für das Fernsehen sorgen :cool:.
Bitte keinen Raspi 4, die sind noch zu instabil und keinen Raspi < 3, die sind zu langsam. Und keinen Raspi 3 unter 1 GB RAM um zu sparen, da hast du zukünftig keine Freunde dran.
 
Zuletzt bearbeitet:

Yellow99

Neuer User
Mitglied seit
8 Feb 2020
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
Was für einen Prozessor hat der Sat-Receiver?
Ist ne Dreambox dm7020HD ... für sowas wie Telefonaufzeichnung nen extra Rechner hinhängen ist mir zu aufwendig, da hat sich halt der Receiver angeboten...

Code:
system type          : BCM7413B1 STB platform
processor             : 0
cpu model             : Brcm4380 V4.4  FPU V0.1
BogoMIPS              : 403.45
cpu MHz                       : 405.016
wait instruction      : yes
microsecond timers    : yes
tlb_entries           : 32
extra interrupt vector        : yes
hardware watchpoint   : no
ASEs implemented      : mips16
shadow register sets  : 1
kscratch registers    : 0
core                  : 0
VCED exceptions               : not available
VCEI exceptions               : not available

processor             : 1
cpu model             : Brcm4380 V4.4  FPU V0.1
BogoMIPS              : 403.45
cpu MHz                       : 405.016
wait instruction      : yes
microsecond timers    : yes
tlb_entries           : 32
extra interrupt vector        : yes
hardware watchpoint   : no
ASEs implemented      : mips16
shadow register sets  : 1
kscratch registers    : 0
core                  : 0
VCED exceptions               : not available
VCEI exceptions               : not available
Dachte mir, vielleicht kann man was zus. beschleunigen mit geänderten Settings, mehrere Worker gleichzeitig o.Ä. ...
 

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
Ist ne Dreambox dm7020HD ... für sowas wie Telefonaufzeichnung nen extra Rechner hinhängen ist mir zu aufwendig, da hat sich halt der Receiver angeboten...
Code:
cpu MHz                       : 405.016
Naja, ~400 MHz ist für den Prozessor nicht unbedingt der Knaller .... da gibt es schon Mobiltelefone die mehr Leistung haben.

Ein extra Rechner alias Raspberry-Pi mit 1,2 GHz Quad Core Prozessor zu ~ 40-50 Euro für die Telefonaufzeichnung ist aus meiner Sicht nicht aufwendig, nicht teuer (Spaß/Hobby/Leistung kostet i.d.R. auch etwas Geld) und im Vergleich zu einer 500 Euro Dreambox 7020 HD ein "Schnäppli" ;) wie der Schweizer sagt.

Und ohne den kleinen Mehraufwand eines Raspi, hat man dann eben den umständlicheren Mehraufwand der Daten umkopiererei am heimischen Windows PC. Muß aber jeder selber wissen, was man möchte. Ich bin eher der verwöhnte Automatisierungsmensch mit Poolroboter, Rasenmähroboter, automatischer Rolladensteuerung, etc. intelligentes Smart-Home. Ist Geil :cool:.
Nur den Rücken kann mir Alexa nicht kratzen, aber da werde ich auch noch eine Erfindung machen...

In diesem Sinne viele Grüße
 

Yellow99

Neuer User
Mitglied seit
8 Feb 2020
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
Mal was Anderes...

beim Setzen von decode_workers_count in der .conf Datei bekomm ich den gleichen Fehler bie dereinst bei after_capture_time ... int erwartet, aber string.

Weiß zufällig einer, wo ich DA das Cast zu Int ergänzen muss, damit alles passt?

BTW, was machen diese decode_workers eigentlich genau? Bringt es was, die Zahl zu ändern?
 

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
Weiß zufällig einer, wo ich DA das Cast zu Int ergänzen muss, damit alles passt?
[...]was machen diese decode_workers eigentlich genau? Bringt es was, die Zahl zu ändern?
Kannst mich auch gleich fragen ;) - hier tümmelt sich ja wohl derzeit kaum ein weiterer Kundiger.

zu 1.)
suche in der fritzcap.py den Abschnitt:
Code:
 ######################################
    ### init decode workers service    ###
    ######################################
    if (args.decode_files is not None):
        nothing_to_do = False
        work_queue = Queue.Queue(0)

        if (args.decode_workers_count < 1):
            logger.warning("The workers count is '< 1' now and will be set to '1'. At least 1 worker have to be active to do decode work.")
            args.decode_workers_count = 1

        for i in range(args.decode_workers_count):
            all_threads.insert(0, CapfileWorker(i, work_queue)) # create a worker
und korrigiere:

if (int(args.decode_workers_count) < 1):
und
for i in range(int(args.decode_workers_count)):

Code:
 ######################################
    ### init decode workers service    ###
    ######################################
    if (args.decode_files is not None):
        nothing_to_do = False
        work_queue = Queue.Queue(0)

        if (int(args.decode_workers_count) < 1):
            logger.warning("The workers count is '< 1' now and will be set to '1'. At least 1 worker have to be active to do decode work.")
            args.decode_workers_count = 1

        for i in range(int(args.decode_workers_count)):
            all_threads.insert(0, CapfileWorker(i, work_queue)) # create a worker
zu 2.)
Ich denke nicht, das es was bringt, die Zahl zu ändern, weil:
Es werden einfach weitere Dekodierungsprozesse gestartet, vielleicht um die Dekodierung zu verifizieren, der Gedanke das Entwicklers erschließt sich mir nicht. Ich denke, es war eine Idee, die nie vollendet - oder vollendet werden musste, daher auch der BUG - da nie getestet.

Grüße und LIKE nicht vergessen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Yellow99

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
Dachte mir, vielleicht kann man was zus. beschleunigen mit geänderten Settings, mehrere Worker gleichzeitig o.Ä. ...
Im Gegenteil: Je mehr Threads, umso mehr Rechenleistung benötigt dein Prozessor.

Bei vielen Programmierprojekten gibt es Aufgaben, die gleichzeitig erfüllt werden müssen, oder bei denen dies zumindest günstig ist: Server zB. müssen mehrere Anfragen gleichzeitig bearbeiten können; die numerische Verarbeitung von großen Datenmengen kann auf Mehrprozessor-Maschinen schneller geschehen, wenn beide Prozessoren unabhängig voneinander arbeiten; usw. (Multitask).
Eine auf Unix-Systemen mögliche Lösung ist es, die Aufgaben von unterschiedlichen Prozessen erledigen zu lassen, die via Pipes oder shared memory miteinander kommunizieren und Daten austauschen. Jeder Prozeß hat einen eigenen PC (program counter), ein eigenes Code-Segment und einen eigenen Stack.

Vergleichbar unter Windows: Je mehr Anwendungen gleichzeitig, umso langsamer dein PC bei der Verarbeitung der Aufgaben.
Entscheidend hier: Der Prozessor, das RAM und die Pipe (Festplatte, Controller, etc.)
Was nützt dir ein Prozessor aus dem Taschenrechner mit einer SSD und 64 GB RAM? Nichts.
Was nützt dir ein Intel Xeon E7-8890v4 24-Kern (24-Core) CPU mit 2.20 GHz (8300 €) mit einer IDE-Festplatte? Nichts.
Dein Sat-Receiver? Gut zum dekodieren der Satelliteninformationen und Empfangssignale, mehr nicht. Nur dafür ausgelegt, der Hersteller gibt doch nicht mehr Geld aus, als notwendig?
Der überzogene Preis dafür ist vielleicht das now-how der Software und weil es jeder haben will, nicht der Preis der Hardware. Geiz ist geil.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Yellow99

Yellow99

Neuer User
Mitglied seit
8 Feb 2020
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
Und schon wieder Danke für die schnelle & kompetente Antwort! (ich glaube, hier wurde durch Dich in ein paar Tagen mehr gelöst als anderswo in den letzten paar Jahren - bin bei meiner Suche auf SO viele Fragen gestoßen, und nie ne brauchbare Lösung dabei). ;)

Der überzogene Preis dafür ist vielleicht das now-how der Software und weil es jeder haben will, nicht der Preis der Hardware. Geiz ist geil.
Find ich nicht - bei nem Sat-Receiver muss man ja auch die Entwicklungskosten usw. berücksichtigen, das Betriebssystem, das drauf läuft usw. usw. Für NICHT RESTRIKTIVE Technik bin ich gern bereit etwas mehr zu zahlen... und so teuer ist ne Dreambox 7020 aktuell auch gar nicht mehr, um die 80 - 100 Euro auf eBay.

Du hast mit allem Recht, und natürlich wär es auch cooler, das alles automatisch und in Sekunden erledigen zu lassen. Aber Fakt bei mir ist, ich brauch diese Rechenleistung gar nicht wirklich. Eigentlich will ich nur Gespräche aufzeichnen können, und dafür langt auch das .CAP File. Für den Fall, dass ich dann doch aus irgend einem Grund ein spezielles Gespräch nachträglich nochmal anhören möchte, kann ich mir das File immer noch auf den PC holen und da dekodieren.

Außerdem... Raspberry Pi, was es dafür gibt ist glaub ich nur Linux, und damit kenn ich mich nicht aus. Hab schon ziemlich gebraucht, FritzCap auf meinen Sat-Receiver draufzukriegen und den korrekten Befehl zu finden, dass das nach dem Ausloggen immer noch weiterläuft (gelöst mit 'nohup'). ;)
 
  • Like
Reaktionen: ctiemann

Yellow99

Neuer User
Mitglied seit
8 Feb 2020
Beiträge
16
Punkte für Reaktionen
1
Punkte
3
Und wieder ist ein Frägelchen aufgetaucht...

In der Config gibt's doch folgende Settings:

# capture_files =
# decode_files =
# monitor_calls =

Wenn man FritzCap startet, macht man das doch normalerweise so:

fritzcap.py -c -m -d

also 'connect to router', 'monitor calls' und 'decode captures'.

Was genau müsste ich als Werte (nach dem '=') angeben, wenn ich diese drei Parameter schon in der Config aktivieren möchte, d.h. dass ich dann halt nur noch 'fritzcap.py' zum Start tippen müsste, und alles Andere würde dann über die Config 'automatisch' erledigt?

Wenn ich mir den Code so anschau, SCHEINT es mir so vorzukommen, als ob bei capture_files und monitor_calls JEDER Eintrag nach dem '=' eine Aktivierung darstellt, aber bei decode_files gibt es eine Fehlermeldung...

-d erwartet ja eigentlich einen Filenamen zum Dekodieren, wenn ich den Hilfetext richtig interpretiere, beim Start scheint es vermutl. nicht zu schaden -d anzugeben, weil kein Filename folgt?
 

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
Hm.
Ganz ehrlich hast du Sorgen, die keine sind. Funktioniert FritzCap nicht bislang mit dem normalen Aufruf?

In der fritzcap.py steht ganz einfach drin:
Code:
# set the defaults
    defaults = {"capture_files": False,
                "decode_files": None,
                "monitor_calls": False,
hier kann man weiter analysieren das bei decode_files folgendes geprüft wird:
Code:
if (len(args.decode_files) > 0):
            # there is at least one file to decode throw the command line parameter.
            # Decode all the files
            for file in args.decode_files:
                work_queue.put(file)
und hier ist wieder ein Fehler im weiteren Verlauf und der Übergabe der work_queue.put(file) . Du kannst ein decode-File angeben, aber was bringt das? Ob das decode-File /tmp/irgendwas oder ixelbrixel heißt, ist doch nebensächlich. Das Resultat ist entscheidend und das funktioniert.
Wenn es nicht in der Config gestanden hätte, hättest du nicht mal gewußt das diese Funktion für das debugging existiert. ;-)

PS: Hier sind die Funktionen beschrieben:
Code:
main_args.add_argument('-c', '--capture_files', default=None, action='store_true', help='capture file/s. If the monitor option is not set, only one file will be captured')
main_args.add_argument('-d', '--decode_files', nargs='*', metavar='file', type=str, help='the list of captured files to decode. All the new captures files will be decode automatically if the --capture switch is set. Read the files from the standard input if the list of files is empty and there is no capture work.')
main_args.add_argument('-m', '--monitor_calls', default=None, action='store_true', help='start the call monitor mode. The CALL/RING/DISCONNECT events will be used to start/stop the capture automatically')
Ich könnte jetzt wirklich beigehen und das fritzcap noch modifizieren und verbessern, schade wirklich, dass das Projekt eingestellt wurde. Der Urheber ist sogar hier im Forum angemeldet, war aber wohl seit Jahren nicht mehr da. Auch kotze ich gerade selbst mit der neuen 7590 rum, irgendwas passt da nicht. Ganz und gar nicht.
 
Zuletzt bearbeitet:

Jogme

Neuer User
Mitglied seit
9 Mai 2020
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
bei mir sind die erzeugten cap's 0 byte gross
 

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
bei mir sind die erzeugten cap's 0 byte gross
Hi Jogme, wird wahrscheinlich am richtigen Eintrag in der g711_decoder.py liegen.

z.B. für die 7590:
{'len': 246, 'chunk': 160, 'offs': 86, 'encap' : 'DSLPPPoE' }, # DSL (PPPoE)

Welche Fritzbox bzw. welchen Router hast du?
 

Jogme

Neuer User
Mitglied seit
9 Mai 2020
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Hallo ctiemann.
ich habe die kabelbox 6590 am Hausanschluss als Modem und daran dann über LAN 1 eine 7490 als Telefonanlage in der dann mehrere sip nummern liegen.
muss die geschweifte klammer zum aktivieren einer der optionen weg?

ich habe jetzt mal ein bischen rumprobiert und auch die Zeile für die 7490 eingetragen. aber der Fehler
2020-05-13 12:17:26,546 - Seems, there is no valid PCAP file
bleibt.
Ich habe dann mal wireshark gestartet und mitlaufen lassen, aber da habe ich diverse len einträge von dem mitgeschnittenen gespräch
das telefon ist in der 7490 (192.68.179.3) eingetragen.
und jetzt weiss ich nicht wie ich meinen Mitschnitt hier hochladen kann da scheinbar nur txt zugelassen ist.

weiterer Versuch
in der 7490 die capture mitgeschnitten -> 1.Internetverbindung Dateigröße 0 daraus schließe ich mal das ich mir die daten dann von der 6590 holen muss. aber nur der eintrag lan lässt sich starten. und tatsächlich die datei ist größer als 0 kb und lässt sich mit wireshark öfnen. nur welches ist jetzt der Eintrag für len, chunk, ofs, encap?

Weiteres Problem: der Call Monitor für die 6590 muss eingschaltet werden. Mit dem Dect Telefon das an der 6590 angeschlossen ist greift der Aufruf #96*5* nur auf die 7490 zu, sofern sich der/ein Call Monitor überhaupt einschalten lässt.....

wow.. ich habs

wenn es über einen netzwerkport in das modem geht: --cap_interface 1-eth0 hinter dem passwort anhängen ! Es werden alle 4 Dateien erzeugt.
 
Zuletzt bearbeitet:

ctiemann

Neuer User
Mitglied seit
19 Sep 2011
Beiträge
27
Punkte für Reaktionen
6
Punkte
3
muss die geschweifte klammer zum aktivieren einer der optionen weg?
Nein. Diese bilden das Array.

weiterer Versuch
in der 7490 die capture mitgeschnitten -> 1.Internetverbindung Dateigröße 0 daraus schließe ich mal das ich mir die daten dann von der 6590 holen muss. aber nur der eintrag lan lässt sich starten. und tatsächlich die datei ist größer als 0 kb und lässt sich mit wireshark öfnen. nur welches ist jetzt der Eintrag für len, chunk, ofs, encap?

Weiteres Problem: der Call Monitor für die 6590 muss eingschaltet werden. Mit dem Dect Telefon das an der 6590 angeschlossen ist greift der Aufruf #96*5* nur auf die 7490 zu, sofern sich der/ein Call Monitor überhaupt einschalten lässt.....
Ich kenne die Konstellation in Verbindung mit dem Kabelmodem nicht.

wow.. ich habs
wenn es über einen netzwerkport in das modem geht: --cap_interface 1-eth0 hinter dem passwort anhängen ! Es werden alle 4 Dateien erzeugt.
Super. Vielleicht schreibst du die Lösungsmöglichkeit noch etwas ausführlicher für die nachfolgende Generation.

Viele Grüße
Chris
 

Jogme

Neuer User
Mitglied seit
9 Mai 2020
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Super. Vielleicht schreibst du die Lösungsmöglichkeit noch etwas ausführlicher für die nachfolgende Generation.

Viele Grüße
Chris
statt
fritzcap.py --capture_files --decode_files --monitor_calls --box_name (deineBoxIP) --password (deinPASSWORT)

fritzcap.py --capture_files --decode_files --monitor_calls --box_name (deineBoxIP) --password (deinPASSWORT) --cap_interface 1-eth0 (zwingend als letzes)