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

Bei mir ist es so, dass ich momentan das Script über eine QNap laufen lasse.
Es funktioniert auch soweit, aber der Monitor läuft nur, solange die Telnet Verbindung besteht.
Es wurde ja schon zur Genüge besprochen, dass das Script nur funktioniert, wenn ein PC/Mac an ist.
Aber ist es denn nicht möglich den Monitor 24 Std. laufen zu lassen.
Dass ich z.B. nur durch telnet mit "Python -u fritzcap.py -d -c -m" den Monitor starte?
Er wird nämlich beendet, wenn ich auch telnet beende.
 
Das wäre natürlich klasse, wenn es funktionieren würde.
Leider bekomme ich da diese Fehlermeldung:

Bildschirmfoto 2013-04-20 um 18.24.36.png


Qnap: TS-419 PII

Edit:
Das mit Screen hat wunderbar funktioniert.
Nur ist leider so, das fritzcap.py anders als beim ersten Mal nicht richtig in Wave umwandelt.
Ich habe z.B. eine capturexxx.cap mit 8 MB. Nach dem dekodieren habe ich 2 Dateien capturexx_0.wav und capturexx_1.wav beide haben die exakte Größe von 378 Byte.
Das ist komisch.
Ich habe nun das ganze am Mac ausprobiert, da bekomme ich die Fehlermeldung
"Invalid PCAP dump header. Probably not a valid capture file"
 
Zuletzt bearbeitet:
Also ich habe nun immer das Problem, dass aus der Cab keine Wav-DAtei wird. In den Logs habe ich immer obigen Fehler mit Invalid PCAP Header.
Dann habe ich die Version 2.0 ausprobiert und habe das gleiche Problem.
mit der 1.9 r12 geht es wunderbar, aber da muss ich jedesmal von Hand starten und beenden, was ich eigentlich nicht wollte.
Specs:
Fritz!Box 7390 5.50
Dateien liegen auf Sambashare einer Qnap TS-419PII
Verbindung stelle ich über Telnet von einem iMac her.
Screen funktioniert soweit wunderbar.

mfg

tetam

Edit:
Wenn ich die Dateien mit Wireshark öffne und Verarbeite bekomme ich einwandfreie Audiodateien.
 
Zuletzt bearbeitet:
Bei mir erzeugen die Versionen 2.x zwar in aller Regel wav-Dateien, doch diese enthalten dann immer nur "Lärm".

Aufnahmen mit Version 1.9.1_r12 klappen dagegen, solange sie kürzer sind als zehn Minuten. Grund hierfür ist, dass das Script, um den Paket-Mitschnitt auf der Fritzbox zu stoppen, die selbe SessionID verwendet, die es beim Starten verwendet hat, die aber nach zehn Minuten verfällt. So kann der Mitschnitt nach zehn Minuten nicht mehr gestoppt werden, und beim Decodieren der ständig weiter wachsenden cap-Datei gibt es dann Fehler.

Testweise habe ich in der fritzcap.py den gesamten Login-Block ("if login_required:" usw., Zeilen 80-118) kopiert und nach der Zeile 136 "print 'Stopping trace'" ein zweites Mal eingefügt, so dass das Script zum Stoppen des Trace immer eine neue Session startet. Das ist sicher sehr unelegant (habe keine Peilung von Python), doch damit klappt es jetzt auch mit längeren Gesprächen.

Python 2.7.3, Win7 x64, gefritzter Speedport 920V, Firmware 75.04.91.
 
Ich hab fritzcap auf meinem 10€ ddwrt Router laufen und das Rauschen tritt hier ebenfalls auf. Möglicherweise ist die Hardware einfach zu schwach. Auf dem PC wiederrum werden die Audiodaten einwandfrei decodiert.
Deswegen lasse ich sie auf dem Router nur noch aufzeichnen, der Speicher ist im Netzwerk freigegeben und per Batchscript werden alle .cap Dateien vom PC aus automatisch decodiert.
 
Zuletzt bearbeitet:
Und wie hast Du das mit dem Batchscript gemacht?
Kann man Wireshark über die Kommandozeile steuern?
 
Dafür brauchst du ja kein Wireshark. fritzcap.py einfach nur mit entsprechenden parameter starten wie im Startpost erwähnt:

bspw.
fritzcap -d /tmp/captures/201012122121/captured.cap
 
Ich habe es gerade nochmal ausprobiert und es ging. Aber bisher hatte ich immer ne Fehlermeldung erhalten.
Aber wenn das nun auch geht, macht das natürlich alles einfacher.
 
Ich bekomme es nicht ans laufen... Er verbindet sich mit der Fritzbox und in der cap datei steht nur "not autorizied login first". Hab zwar den ganzen Thread gelesen aber es klappt einfach nicht. Kann mir einer eine Konfigurationsdatei zukommen lassen wo das Passwort schon eingetragen ist und benutzt wird?

Meine Einstellungen (fritzcap.conf):
Code:
[settings]
# capture_files        =
# decode_files         =
# monitor_calls        =
password               = 12345

# logging_config       =
box_name               = 192.168.179.1
# call_service_port    = 1012
# login_not_required   =
# protocol             = http
cap_folder             = captures/%(tcaps.Y-m-d/HMS)/
cap_file               = capture_%(tcaps.YmdHMS).cap
# after_capture_time     = 12
# 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]
8556694       = ZuHause
0448556694    = ZuHause
0177111222    = MeineFrau-Handy
0048177111222 = MeineFrau-Handy
Ich habe eine FBF 7270v3 05.50 (erreichbar unter 192.168.179.1) und im browser kann ich auch aufnehmen. Aber im Tool nicht... Was hab ich falsch gemacht?

Inhalt der cap Datei
Code:
Not authorized. Please login first..
Ausgabe der Kommandzeile:
Code:
2013-04-24 16:23:06,987 - FritzCap started.
2013-04-24 16:23:07,040 - Connect    to the call monitor service on 192.168.179.1:1012.
2013-04-24 16:23:07,167 - Connected  to the call monitor service on 192.168.179.1:1012.
2013-04-24 16:23:09,438 - Call       (ID:1, ActiveCalls.:1, Caller:XXXXXXX, DialedNumber:XXXXXXX, LinePort:SIP0)
2013-04-24 16:23:10,115 - Start capture (capture_file:'captures/2013-04-24/162310/capture_20130424162310.cap').
2013-04-24 16:23:16,201 - Connect    (ID:1, ActiveCalls.:1, Caller:XXXXXXX, DialedNumber:XXXXXXX, LinePort:SIP0)
2013-04-24 16:23:19,082 - Disconnect (ID:1, ActiveCalls.:1, Caller:XXXXXXX, DialedNumber:XXXXXXX, LinePort:SIP0)
2013-04-24 16:23:30,786 - Capture finished (capture_file:'captures/2013-04-24/162310/capture_20130424162310.cap').
2013-04-24 16:23:30,788 - Decode process started  (worker_id:1, file:'captures/2013-04-24/162310/capture_20130424162310.cap')
2013-04-24 16:23:30,789 - Invalid PCAP dump header. Probably not a valid capture file
2013-04-24 16:23:30,789 - Decode process finished (worker_id:1, file:'captures/2013-04-24/162310/capture_20130424162310.cap')
 
Zuletzt bearbeitet:
An der fritzcap.conf wird es vermutlich nicht liegen. Login klappt ja und eine .cap Datei wird auch erstellt, nur das decodieren will wohl nicht ganz.
Wie gross sind denn die .cap dateien? Sollte ca. 1,5 mb/min haben.
Schonmal probiert manuell mit Wireshark zu decodieren?
 
In der cap steht nur "Not authorized. Please login first.."
Aber ich hab herausgefunden wieso: In der "\core\capture_monitor.py" steht nicht an allen Stellen die Variable mit demBoxnamen. In 2 Links stand "fritz.box". Ich habs ausgetauscht gegen "192.168.179.1" und jetzt läufts. Ließe sich in der nächsten Version vielleicht verbessern.

@bor2tom: Bitte in der Datei "\core\capture_monitor.py" die Zeilen 164 und 183 anpassen. Dort wird nicht die Variable boxname sondern "fritz.box" genutzt. Ist wahrscheinlich noch nicht aufgefallen da alle Leute unter "fritz.box" auch die richtige Box erreichen.

EDIT wenn wer das gleiche Problem hat:

\core\capture_monitor.py im Editor öffnen und Zeile 164 durch
Code:
conn_url = self.protocol + '://' + self.box_name + '/login_sid.lua'
und Zeile 183 durch
Code:
conn_url = self.protocol + '://' + self.box_name + '/login_sid.lua?username=root&response=' + response_bf
ersetzen.

EDIT 2: Klitzekleiner Fehler entdeckt: Wenn FritzCap während eines Anrufs gestartet wird wirft es eine Exception wenn der Anruf zu Ende ist:
Code:
Exception in thread Thread-4:
Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
    self.run()
  File "D:\Users\...\Desktop\pcap/core/call_monitor.py", line 176, in run
    self.logger.info("Disconnect (ID:%s, ActiveCalls.:%s, Caller:%s, DialedNumber:%s, LinePort:%s)" % (sline[2],callers_
count,call_id_map[sline[2]][0],call_id_map[sline[2]][1],call_id_map[sline[2]][2]))
KeyError: '1'
 
Zuletzt bearbeitet:
Mir ist jezt noch was aufgefallen. Und zwar sind die Streams nicht "synchron".
Das bedeutet, dass der Angerufene mit dem Anrufer zeitlich versetzt wiedergegeben wird.
 
In der fertig gemixten Datei? Oder auch die Dateien getrennt?

Probier mal die zwei getrennten WAV Dateien mit sox zu verbinden.
http://sourceforge.net/projects/sox/files/sox/14.4.1/sox-14.4.1a-win32.zip/download

Code:
sox -M datei1.wav datei2.wav ausgabe.wav

EDIT: Hilft vielleicht die Bearbeitung der Netzwerkaufnahme mit "repair_cap_file.py"?

EDIT 2: Wenn ich die Datei mit SoX mixe, ist das vollkommen syncron.
 
Zuletzt bearbeitet:
Hi
Bei mir funktioniert die Umwandlung von cap zu Wav nur wenn ich es mit wireshark mache. Über die fritzcap.py bekomme ich immer entweder eine Fehlermeldung oder es passiert gar nichts. Die Umwandlung über Python hat von 100 mal etwa 3 mal funktioniert.
 
Also, ich habe über http://wiki.qnap.com/wiki/Screen_command
auf meiner QNap mit dem Befehl:

Code:
python -u fritzcap.py -d -m -c

den Monitor gestartet.
Fritzcap erstellt mir Cap Dateien und das wars.
Die "Cap´s" werden nicht in Wave umgewandelt. Warum auch immer.
Dann kopiere ich mir mittels Finder die Cap-Dateien auf den Schreibtisch, öffne sie in Wireshark und durchlaufe das Prozedere um eine *.au Datei daraus zu erstellen.

Wenn ich mich nun über telnet auf meiner Qnap einlogge und Versuche fritzcap mit folgendem Befehl zu starten
Code:
python -u fritzcap.py -d capture.cap
erhalte
ich folgende Fehlermeldung:


Code:
2013-04-28 11:57:00,265 - Decode process started  (worker_id:1, file:'captures.cap')
Exception in thread Thread-2:
Traceback (most recent call last):
  File "/share/HDA_DATA/.qpkg/Python/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/share/HDA_DATA/Web/fritzcap/core/capfile_worker.py", line 68, in run
    self.process(filename)
  File "/share/HDA_DATA/Web/fritzcap/core/capfile_worker.py", line 78, in process
    PcapParser(filename, g711.decode).parse()
  File "/share/HDA_DATA/Web/fritzcap/core/pcap_parse.py", line 45, in __init__
    self.f = open(filename, 'rb')
IOError: [Errno 2] No such file or directory: 'captures.cap'

Wie gesagt, die einzige Möglichkeit aus einer *.cap Datei eine Wave/au Datei zu machen ist über Wireshark.

Wenn ich versuche die *.cap Datei zu reparieren passiert folgendes

Code:
[/share/HDA_DATA/Web/fritzcap] # python -u repair_cap_file.py captures.cap   
Traceback (most recent call last):
  File "repair_cap_file.py", line 113, in <module>
    file_to_open_size = os.path.getsize(file_to_open)
  File "/share/HDA_DATA/.qpkg/Python/lib/python2.7/genericpath.py", line 49, in getsize
    return os.stat(filename).st_size
OSError: [Errno 2] No such file or directory: 'F:\\tmp\\290120112105\\capture.cap'
 
Ich weiß, dass sich hier nun schon länger nichts mehr getan hat - aber ich hätte da drei Vorschläge für eine (eventuelle) neue Version:

- Die jeweils zueinander passenden Audiodateien so verbinden (zb. mit "sox -M"), dass jeder Gesprächspartner eine "Tonspur" hat und man gezielt nach Sprache einer Person filtern kann wenn man nur eine Spur abspielt. Momentan ist die Ausgabe Mono und man hört immer beide Personen. Mit einem eigenen Tool was "sox -M %1 %2 test" aufruft gehts auch nicht weil ich dann keine Infos hab welche Dateien zusammengehören.

- Wäre es möglich, dass die Audiodatei schon während dem Aufnehmen geschrieben wird? Dann könnte man sozusagen "live" (bzw. mit wenigen Sekunden Verzögerung) das Gespräch anhören.

- Wenn Punkt 2 irgendwann möglich ist, fände ich auch eine live-Ausgabe der DTMF-Töne (in Zahlen) schön.
 
Zuletzt bearbeitet:
Wenn es denn funktioniert, habe ich sowieso 2 Dateien, eine für meine Sprache und eine für den Gesprächspartner, die bleiben bei mir nach dem Mixen erhalten.
 
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.