VoIP and Hacking | Consulenza Documentazione

VoIPmonitor

by admin on Oct.19, 2011, under Asterisk, Hacking, Linux, Telefonia, Tools, VoIP

VoIPmonitor è un network packet sniffer open source, per linux o Unix/POSIX, dedicato al voip monitoring, in grado di analizzare velocemente i protocolli SIP ed RTP. Oltre ad essere eseguito (tipicamente) come daemon è in grado di analizzare pcap files precedentemente archiviati.
Per ciascuna chiamata VoIP rilevata voipmonitor calcola una serie di statistiche su perdita, latenza, ed altri fattori, ed è inoltre in grado di predirre il cosidetto MOS (Meaning Opinion Score) in conformità al modello ITU-T G.107, allo scopo di definire la qualità di una chiamata. Le statistiche vengono archiviate in un database MySQL, inoltre ciascuna chiamata viene salvata come un file pcap dump ed opzionalmente in un file audio WAV oppure OGG.
La versione Free di VoIPmonitor è in grado di decodificare solamente il codec G.711. Quella commerciale può invece decodificare G.729/G.723/GSM/Speex/iLBC. Una delle funzionalità più notevoli di VoIPmonitor è la sua capacità di decodificare chiamate vocali che cambino i codecs utilizzati durante la chiamata.

Il software, può venire scaricato da SourceForge

Supposto di averlo archiviato in /opt/

e soddisfatti i prerequisiti:

# apt-get install libmysql++-dev libvorbis-dev libpcap-dev apache2 php5-mysql php5-gd

# mkdir /var/spool/voipmonitor
# cd /opt
# tar xvzf voipmonitor-3.0.1.tar.gz
# cd voipmonitor-3.0.1
# make
# make install
# mysqladmin -u root -p create voipmonitor
password:
#
# cat cdrtable.sql | mysql voipmonitor -p
password:
#

A questo punto, allo scopo di testare la cattura di una chiamata VoIP in ingresso (tramite il provider Messagenet) su un server Asterisk che la tratti come segue nel relativo context:

[incoming]
exten => 04371956065,1,Ringing(5)
exten => 04371956065,n,Answer
exten => 04371956065,n,Wait(5)
exten => 04371956065,n,MusiconHold()

si può avviare il programma così:

# ./voipmonitor -k -SRG -W -i eth0 -p password -v
Capturing on interface: eth0

Total calls [0] calls in queue[0]
voipmonitor: calls[0]

Total calls [0] calls in queue[0]
voipmonitor: calls[1]

Total calls [1] calls in queue[0]

storing to MySQL. Queue[1]
INSERT INTO `cdr` SET caller = ‘+390437xxxxxx’, callername = ‘+390437xxxxxx’, sipcallerip = 3563141964, sipcalledip = 3232235788, called = ‘04371956065′, duration = 21, progress_time = 0, first_rtp_time = 6, connect_duration = 21, calldate = FROM_UNIXTIME(1319031659), fbasename = ‘769284ca58464edc4b9770f53faeee04@sip.messagenet.it’, sighup = 0, lastSIPresponse = ‘200 OK’, lastSIPresponseNum = 200, bye = 3 , whohanged = ‘caller’ , a_ua = ” , b_ua = ‘foxtrot’ , a_index = 1 , a_received = 742 , a_lost = 0 , a_avgjitter = 1 , a_maxjitter = 1 , a_payload = 8 , a_sl1 = 0 , a_sl2 = 0 , a_sl3 = 0 , a_sl4 = 0 , a_sl5 = 0 , a_sl6 = 0 , a_sl7 = 0 , a_sl8 = 0 , a_sl9 = 0 , a_sl10 = 0 , a_d50 = 0 , a_d70 = 0 , a_d90 = 0 , a_d120 = 0 , a_d150 = 0 , a_d200 = 0 , a_d300 = 0 , a_saddr = 3252906024 , a_lossr_f1 = 0 , a_burstr_f1 = 0 , a_mos_f1 = 4.5 , a_lossr_f2 = 0 , a_burstr_f2 = 0 , a_mos_f2 = 4.5 , a_lossr_adapt = 0.00135135 , a_burstr_adapt = 0.998649 , a_mos_adapt = 4.2670996286306941 , b_index = 0 , b_received = 745 , b_lost = 0 , b_avgjitter = 1 , b_maxjitter = 2 , b_payload = 8 , b_sl1 = 0 , b_sl2 = 0 , b_sl3 = 0 , b_sl4 = 0 , b_sl5 = 0 , b_sl6 = 0 , b_sl7 = 0 , b_sl8 = 0 , b_sl9 = 0 , b_sl10 = 0 , b_d50 = 0 , b_d70 = 0 , b_d90 = 0 , b_d120 = 0 , b_d150 = 0 , b_d200 = 0 , b_d300 = 0 , b_saddr = 3232235788 , b_lossr_f1 = 0 , b_burstr_f1 = 0 , b_mos_f1 = 4.5 , b_lossr_f2 = 0 , b_burstr_f2 = 0 , b_mos_f2 = 4.5 , b_lossr_adapt = 0 , b_burstr_adapt = 0 , b_mos_adapt = 4.5
converting RAW file to WAV Queue[1]
voipmonitor: calls[1]

Total calls [0] calls in queue[0]

^Cvoipmonitor: SIGINT received, terminating

E’ evidente, dallo stesso output del programma, la creazione di un record relativo alla chiamata nel database MySQL
A questo punto, risulta inoltre presente in /var/spool/voipmonitor una directory corrispondente alla data/ora corrente (2011-10-19/) e contenente i seguenti file:

-rw-rw-rw- 1 root root 1235746 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.pcap
-rw-rw-rw- 1 root root  856364 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.wav
-rw-rw-rw- 1 root root   40704 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.1.graph
-rw-rw-rw- 1 root root   45295 2011-10-19 13:12 2c5c0e485348eb282a46bda55600bcec@sip.messagenet.it.0.graph

Se il significato dei primi due è inequivocabile, gli altri due sono file ASCII contenenti liste di coordinate. Esiste infatti, a cura dello stesso produttore, una applicazione web PHP (che però non è compresa nel package open source) che filtra i dati presenti nel database e graficizza la distribuzione di latenza e perdita di pacchetti.

Send post as PDF to PDF | PDF Creator | PDF Converter
:, , , ,

Comments are closed.

Cerchi qualcosa in particolare?

Usa il form qui sotto per cercare nel sito:

Blogroll!

Alcuni links...

Archives

Tutte le entries, in ordine cronologio...