Annexes

1. UA en ligne de commande

  • PJSUA
  • linphonec
  • linphonecsh

1.1. Installation PJSUA par les sources

#!/bin/bash
wget http://www.pjsip.org/release/1.12/pjproject-1.12.tar.bz2
tar -xjf pjproject-1.12.tar.bz2
cd pjproject-1.12/
./configure
make dep && make && sudo make install
sudo cp pjsip-apps/bin/pjsua* /usr/local/bin/pjsua

1.2. Installation PJSUA sur Ubuntu

sudo apt update && sudo apt -y install libpjsua2

1.3. Exemple d’usage de PJSUA

Exemple d’un UA qui s’enregistre sur sip:3302@172.16.98.223, qui répond automatiquement aux appels en boucle.

SERVER="172.16.98.223"
USERNAME="3302"
PASSWORD="test1234"
cat << EOF > autoansw.conf
--null-audio
--realm asterisk
--registrar sip:${SERVER}
--id sip:${USERNAME}@${SERVER}
--username ${USERNAME}
--password ${PASSWORD}
--play-file /root/believe-its-free.wav
--auto-answer 200
--auto-play --auto-loop
--max-calls 10
EOF
pjsua --config-file autoansw.conf

1.4. Installation du dépôt Linphone en Centos 7

En Centos 7, ajouter ceci dans le fichier /etc/yum.repos.d/Belledonne.repo

[Belledonne]
name=Belledonne Communications
baseurl=https://www.linphone.org/snapshots/centos7
enabled=1
gpgcheck=0
priority=1
yum update
yum -y install linphone-devel

1.5. Compilation de Linphone minimal pour Raspbian (Rasberry Pi)

Cette procédure permet d’utiliser les outils de la console linphone (linphonec, linphonecsh ou linphone-daemon) sur le raspberry pi.

Installer des dépendances de compilation à partir de dépôts raspbian :

sudo apt-get install cmake automake autoconf libtool intltool yasm libasound2-dev libpulse-dev libv4l-dev nasm git libglew-dev

Cloner le dépôt git de linphone-desktop. Ce dépôt comprend le code source de linphone plus toutes les dépendances requises, avec un script de compilation global qui construit tout dans l’ordre.

git clone git://git.linphone.org/linphone-desktop.git --recursive

Configurer les options de compilation pour l’ensemble du projet linphone-desktop. La ligne ci-dessous définit les options pour une construction minimale de linphone, sans interface utilisateur graphique.

cd linphone-desktop
./prepare.py no-ui -DENABLE_OPENH264=ON -DENABLE_WEBRTC_AEC=OFF -DENABLE_UNIT_TESTS=OFF -DENABLE_MKV=OFF -DENABLE_FFMPEG=ON -DENABLE_CXX_WRAPPER=OFF -DENABLE_NON_FREE_CODECS=ON -DENABLE_VCARD=OFF -DENABLE_BV16=OFF -DENABLE_V4L=OFF

Maintenant la compilation peut être lancée (30 minutes et plus).

make -j4

Source : Compiling linphone on the rasberry pi

1.6. Installation de Linphone sur Ubuntu

sudo apt update && sudo apt -y install linphone-nogtk

1.7. linphonecsh

Exemple linphonecsh

SERVER="172.16.98.223"
USERNAME="3303"
PASSWORD="test1234"
linphonecsh init
linphonecsh register --host ${SERVER} --username ${USERNAME} --password ${PASSWORD}
linphonecsh dial "sip:3302@172.16.98.223"

1.8. linphonec

Exemple linephonec

linphonec -c .linphonerc
Warning: video is disabled in linphonec, use -V or -C or -D to enable.
linphonec> register sip:3303@172.16.98.223 sip:172.16.98.223 test1234
linphonec> Registration on <sip:172.16.98.223> successful.
linphonec> call sip:3302@172.16.98.223
Establishing call id to <sip:3302@172.16.98.223>, assigned id 1
Contacting <sip:3302@172.16.98.223>
linphonec> Call 1 to <sip:3302@172.16.98.223> in progress.
linphonec> Remote ringing.
linphonec> Remote ringing...
linphonec> Call 1 to <sip:3302@172.16.98.223> ringing.
Remote ringing.
linphonec> Call 1 with <sip:3302@172.16.98.223> connected.
Call answered by <sip:3302@172.16.98.223>.
linphonec> Media streams established with <sip:3302@172.16.98.223> for call 1 (audio).
linphonec> terminate
Call ended
linphonec> Call 1 with <sip:3302@172.16.98.223> ended (No error).
linphonec> quit
Terminating...
Unregistration on <sip:172.16.98.223> done.

2. Capture en ligne de commande

2.1. Captures distantes avec affichage dans Wireshark local (via SSH)

Le mécanisme consiste à transférer le trafic capturé à partir d’une hôte distant dans l’interface locale du logiciel d’analyse.

Sous Linux comme sous Windows, il

Sous Linux :

ssh -l username remote_host "tcpdump -s0 -w - 'ip'" | wireshark -k -i -

Sous Windows :

plink -ssh username@remote_host "tcpdump -s 0 -w - 'ip'" | wireshark -i -

2.2. Capture SIP / RTP avec tcpdump

tcpdump -i eth0 udp port 5060 or udp portrange 10000-20000 -s 0 -w capture.cap

2.3. Capture SIP / RTP avec tshark

Option -w de tshark et filtres de capture pcap :

tshark -nq -w register -f 'udp port 5060'

3. Filtres VoIP

3.1. Affichage des points terminaux

tshark -q -z endpoints,ip -r sip.pcapng

3.2. Statistiques SIP tshark

tshark -q -z sip,stat -r sip.pcapng

3.3. Visualiser les appels

tshark -t ud -Y "sip.CSeq.method eq INVITE" -r sip.pcapng

3.4. Enregistrements

tshark -t ud -Y "sip.Method == REGISTER" -r sip.pcapng

3.5. Affichage d’une charge SIP

tshark -t ud -Y "frame.number == 8212" -O sip -r sip.pcapng

3.6. Affichage des utilisateurs SIP enregistrés

tshark -t ud -Y "sip.Method == REGISTER" -r sip.pcapng -T fields -e sip.to.user

3.7. Analyse RTP

tshark -r sip.pcapng -q -z rtp,streams

4. Notes