Installer une boîte à outils permanente comme un nul(l) 5/6 [Série arrêtée]

Partager des fichiers et envoyer des mails sans être espionné, c’est bien.

Héberger votre propre serveur de voix sur IP (VoIP) c’est mieux ! Adieu Skype et consorts !

Vous voulez voir la bouille de votre fille, les boutons de vos potes ou les barbes des hackers de votre équipe en temps réel rien qu’avec un navigateur Internet récent (testé sous Chrome) ? Vous êtes au bon endroit !

VoIP

Introduction

Après quelques recherches sur Internet, j’ai trouvé un logiciel open source de voix sur IP en peer to peer. (telepresence)

Ce logiciel permet de faire simplement des vidéoconférences sécurisées et est censé permettre le partage de documents (je n’ai pas réussi à faire fonctionner le partage de documents…)

Vous pouvez également sécuriser le canal de transmission avec SSL, mais je n’aborderai ici que l’installation d’un serveur SIP basique.

La documentation de l’outil est bien faite : http://conf-call.org/technical-guide.pdf?svn=2

Installer les outils nécessaires

Avant tout, nous devons installer de quoi récupérer du code source et le compiler.

sudo apt-get update
sudo apt-get install git subversion autoconf libtool pkg-config cmake

Nous avons maintenant un environnement complet qui va nous permettre de compiler des drivers et autres outils.

Installer les drivers

Afin d’utiliser n’importe quel navigateur Internet récent comme client de vidéoconférence, il faut installer la librairie libsrtp.

Attention : La version disponible dans le gestionnaire de paquets ne doit pas être utilisée, la version de développement est nécessaire !

Pour toute la suite, nous téléchargerons les sources dans le dossier /opt :

cd /opt

Récupérons, configurons, compilons et installons libsrtp :

sudo git clone https://github.com/cisco/libsrtp/
cd libsrtp
sudo CFLAGS="-fPIC" ./configure --enable-pic
sudo make
sudo make runtest
sudo make install

Vous pouvez aussi obtenir un meilleur son en installant OpenAL, qui n’est malheureusement pas disponible via le gestionnaire de paquets :

cd /opt
sudo wget http://kcat.strangesoft.net/openal-releases/openal-soft-1.15.1.tar.bz2
sudo tar -xvjf openal-soft-1.15.1.tar.bz2
cd openal-soft-1.15.1/build
sudo cmake .
sudo make
sudo make install

Le reste des drivers et autres librairies nécessaires peuvent être installés grâce au gestionnaire de paquets officiel (pourquoi se compliquer la vie ? ) :

sudo apt-get install openssl speex yasm vpx-tools libvpx-dev libx264-dev libfreetype6-dev libreoffice libreoffice-dev

Installer FFMpeg

L’utilitaire bien connu de réencodage vidéo FFMpeg est utilisé par open telepresence. Encore une fois, la version fournie par le gestionnaire de paquets ne convient pas, nous devons récupérer les sources.

cd /opt
sudo git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg

Des modifications majeures ont été apportées à FFMpeg avec la version 2, nous devons utiliser la version n1.2 :

sudo git checkout n1.2

Si, comme moi, vous avez voulu tenter avec la dernière version de FFMpeg (on ne se refait pas), vous devrez nettoyer vos sources avant de chercher à compiler la bonne version de FFMpeg :

sudo make distclean

Note : En règle générale, si vous avez des erreurs de compilation avec un code source fraîchement récupéré, un distclean peut régler le problème.

Il nous reste à configurer (avec tout un tas d’options récupérées de la documentation officielle), compiler et installer :

sudo ./configure --extra-cflags="-fPIC" --extra-ldflags="-lpthread" --enable-pic --enable-memalign-hack --enable-pthreads --enable-shared --disable-static --disable-network --enable-pthreads --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe --enable-gpl --disable-debug --enable-libfreetype --enable-libx264
sudo make
sudo make install

Entre chaque commande, vous avez le temps de vous faire un petit café 🙂

Quelques recettes pour vous faire passer le temps :-)

Quelques recettes pour vous faire passer le temps 🙂

Lier le tout avec Doubango

Doubango doit être compilé sur le système où il est installé, pour lier tous les drivers disponibles.

cd /opt
sudo svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango
cd doubango
sudo ./autogen.sh
sudo ./configure --with-speexdsp --with-ffmpeg
sudo make
sudo make install

Je ne sais pas pourquoi, mais, pour moi, installer doubango me désinstalle les librairies de ffmpeg. Il me faut donc réinstaller ffmpeg…

cd /opt/ffmpeg
sudo make install

Si quelqu’un a une meilleure solution au problème, je suis preneur…

Enfin, installer telepresence

Note : Si vous êtes sur un système 32 bits, tout devrait bien aller avec les sources officielles. J’ai eu quelques soucis pour obtenir la vidéo, je documenterai ici une modification à appliquer dans les sources avant de compiler.

Commençons par récupérer les sources :

cd /opt
sudo svn checkout https://telepresence.googlecode.com/svn/trunk/ telepresence
cd telepresence

Continuons avec un petit coup de configuration automatique :

sudo ./autogen.sh
sudo ./configure

On peut ensuite compiler et installer :

sudo make
sudo make install

Configuration de telepresence

Un fichier de configuration se trouve dans le dossier /usr/local/sbin, aux côtés de telepresence. Par défaut, le serveur cherche le fichier de configuration dans le dossier courant. Il faut bien penser à se déplacer dans /usr/local/sbin avant de le lancer.

Ouvrons le fichier /usr/local/sbin/telepresence.cfg pour configurer le serveur :

accept-sip-reg = yes

...

codecs = pcma;pcmu;vp8;h264-bp;h264-mp

...

# my first test bridge
[bridge]
# The id is mandatory. The SIP clients will call "sip:10060@domain" to connect to this bridge.
id=10060
# The pin-code to protect the bridge.
pin-code=1234

# my second test bridge
[bridge]
id=10061
pin-code=0000

Bien sûr, vous pouvez configurer les « bridges » que vous voulez… Mais qu’est-ce qu’un « bridge » ?

Un « pont » en anglais (‘Merica !) sert à configurer une salle de conférence virtuelle. Vos amis qui se connecteront à une même salle pourront communiquer.

Accept-sip-reg devrait permettre à n’importe qui de se créer sa propre salle virtuelle. Il n’est alors plus nécessaire de les configurer dans le fichier de configuration.

Il ne reste qu’à démarrer le serveur :

cd /usr/local/sbin
sudo ./telepresence

Problèmes rencontrés

Value 4611686018427387904.000000 for parameter ‘sws_flags’ out of range

Si comme moi, vous obtenez ce type d’erreur lorsque vous entamez une conversation vidéo, j’ai une bonne nouvelle :

[swscaler @ 0xabaa29bc] Value 4611686018427387904.000000 for parameter 'sws_flags' out of range [0 - 4.29497e+09]
Error initializing filter 'scale' with args 'w=640:h=360'

J’ai la solution ! 🙂

Ce problème ne devrait apparaître que sur les systèmes 64 bits. En effet, « 4.29497e+09 » est l’entier non signé maximum sur les systèmes 32 bits. Or, « 4611686018427387904 » est l’entier signé maximum sur les systèmes 64 bits.

Une petite modification de code source sera nécessaire. Ouvrez le fichier /opt/telepresence/source/filter/OTOverlay.cc et modifiez le code autour de la ligne 168 :

if(nInWidth != nOutWidth || nInHeight != nOutHeight || strFilterDesc.empty())
{
       tsk_istr_t iH, iW;
       tsk_itoa(nOutWidth, &iW); // "-1" to keep aspect ratio
       tsk_itoa(nOutHeight, &iH);

       strFilterDesc = "scale=w=" + std::string(iW) + ":h=" + std::string(iH) + ":flags=2" + (strFilterDesc.empty() ? "" : (", " + strFilterDesc));
}

En spécifiant le « drapeau » (flag), on n’utilise plus la valeur par défaut qui fait tout planter et ça fonctionne bien !

Après avoir modifié les sources, il faut recompiler et réinstaller telepresence :

cd /opt/telepresence
sudo make
sudo make install

No codec matched

Si (toujours comme moi…) vous avez une erreur du type « No codec matched », ça veut tout simplement dire que vous avez mal installé doubango ou que vous n’avez pas installé le codec utilisé par votre client SIP.

Dans mon cas, je n’avais pas installé le codec libvpx permettant de supporter le conteneur vidéo *.webm utilisé par les clients SIP sous Chrome et Firefox.

Après avoir installé un codec, il faut recompiler doubango et réinstaller ffmpeg s’il est supprimé lors de l’installation de doubango

# Vous installez le codec qui va bien selon la documentation officielle, puis exécutez ces lignes pour reconstruire doubango et ffmpeg
cd /opt/doubango
sudo ./autogen.sh
sudo ./configure --with-speexdsp --with-ffmpeg
sudo make
sudo make install
cd /opt/ffmpeg
sudo make install

Il n’est pas nécessaire de reconstruire telepresence car il utilise les librairies partagées par doubango.

Se connecter avec un simple navigateur

Je n’ai testé qu’avec Chrome, je ne garantis pas que ça fonctionne avec un autre navigateur !

Le client Internet fourni par l’équipe du logiciel fonctionne à merveille. Connectons-nous simplement sur son site : http://conf-call.org/

Il faut commencer par paramétrer le client dans l’onglet « settings ».

Simple et convivial. Au moins leur client est joli :-)

Simple et convivial. Au moins leur client est joli 🙂

Chaque champ contient des valeurs par défaut pour vous aider à saisir ce qu’il faut. Vous ne devriez pas avoir de soucis.

N’oubliez pas de cliquer sur « Save » avant de revenir à l’écran de connexion où vous entrerez l’identifiant de votre salle virtuelle et son mot de passe, si nécessaire.

Ecran de connexion du client SIP sous Chrome

On ne fait pas plus simple…

Un petit clickou sur « join » et le tour est joué !

Flippant le nounours hein ? :-p

Flippant le nounours hein ? :-p

Vous pouvez maintenant inviter vos amis et discuter un peu !

Oui j'ai quelques peluches :-)

Oui j’ai quelques peluches 🙂

Vous pourrez remarquer qu’avec ce client, la personne qui parle apparaît au centre de l’écran et les participants apparaissent en bas.

Un autre client : Jitsi

Vous pouvez également utiliser d’autres clients SIP pour discuter. Par exemple, le client gratuit jitsi.

La plupart des clients SIP ne supportent pas les mots de passe pour les salles virtuelles. Vous devrez donc supprimer (ou commenter) le code PIN de votre salle virtuelle dans votre fichier de configuration avant de redémarrer telepresence.

Commençons par ouvrir Jitsi et annuler lorsqu’il nous demande les identifiants pour nos comptes.

Un tour vers « Fichier > Ajouter un nouveau compte » nous permet de configurer ce que l’on veut.

Nouveau compte sous Jitsi

Sélectionnons le protocole SIP avant de cliquer sur « Avancé ».

Configuration d'un compte SIP sous jitsi

Dans le premier onglet, il faut saisir son nom d’utilisateur privé, son domaine, ainsi que son mot de passe et son nom affiché. Il n’y a pas besoin de mot de passe avec notre configuration par défaut.

Allons maintenant dans l’onglet « Connexion ».

Ce n'est pas évident mais ce que les clients SIP appellent "proxy" est en fait le proxy SIP (votre serveur telepresence)

Ce n’est pas évident mais ce que les clients SIP appellent « proxy » est en fait le proxy SIP (votre serveur telepresence)

Le plus important est de décocher la case « Configuration automatique du proxy », de sélectionner « UDP » et de configurer votre serveur (utilisez l’adresse IP si vous ne disposez pas d’un nom de domaine public) avec le port 20060.

Cliquons ensuite sur « Suivant » puis « S’identifier ». Vous devriez apparaître connecté.

Connecté sous Jitsi

Appelez ensuite la salle virtuelle : « sip:10060@homeserver » pour discuter avec vos amis !

Bon, il me reste quelques problèmes de codec manifestement (caméra verte), mais il y a le son ! :-)

Bon, il me reste quelques problèmes de codec manifestement (caméra verte), mais il y a le son ! 🙂

Pour aller plus loin

Vous pouvez suivre la documentation officielle pour configurer la couche de transport sécurisé (TLS) de votre serveur et ainsi chiffrer vos communications. C’est bien documenté et assez de personnes se sont cassé les dents pour que vous trouviez la réponse à vos questions sur le groupe Google officiel : https://groups.google.com/forum/#!forum/opentelepresence

Je n’ai pas été en mesure d’utiliser la fonctionnalité de partage de présentation (PowerPoint, dans mon cas). J’ai peut-être manqué quelque chose, mais je ne voulais pas me prendre la tête avec ça, vu que le but principal était d’avoir un outil de voix sur IP fonctionnel, indépendant, léger et gratuit. 😉

Conclusion

Je vous ai bien dégrossi le travail, mais croyez moi, ça a été bien laborieux pour installer cet outil et le faire marcher (au moins pour le son et la vidéo sous Chrome). Je n’ai pas installé tout ce qui était conseillé dans la documentation technique. Peut-être que si l’on installe tout, la solution fonctionne mieux…

Dans tous les cas, pour faire de la voix (et de la vidéo) sur IP et pouvoir organiser des vidéoconférences simplement, cet outil est plutôt bien fait, simple à installer et à configurer (si quelqu’un s’est déjà cassé les dents sur les problèmes). Il met à la portée de tous le contrôle de ses communications, ce qui n’est plus un luxe avec toutes les affaires d’espionnage qui courent… Il remplacera à merveille Skype ou un téléphone, le tout pour pas un rond !

Open telepresence n’est pas exempt de bugs mais pour une version beta, on peut bien lui pardonner 🙂

C’est simple (quand ça marche) et convivial (une fois installé), que demande le peuple ?

Parce que je n’ai pas la science infuse : sources

Eh! Pour le coup, je n’ai pu me référer qu’au site officiel, je n’ai pu trouver d’aide nulle part ailleurs…

À propos

Un informaticien, qui tente de faire comprendre au public que l'informatique n'est pas si compliquée, malgré des acronymes et autres termes obscurs pour faire croire que c'est difficile (et que c'est de votre faute si "ça ne marche pas")

Tagged with: , , , , , , , , , , , , , , , , , , , ,
Publié dans Informatique, Installations, Windows
15 comments on “Installer une boîte à outils permanente comme un nul(l) 5/6 [Série arrêtée]
  1. warfares dit :

    salut, pour commencer désolé de poster dans cet articel mais ne connaissant pas wordpress, si je postait dans lsujet original je n’était pas sur que tu appercoives ce qui suit. ( et je ne volais pas t’envoyer de mais dans l’hypothèse ou cela servirait à d’autre personnes )
    concernant https://piratercommeunnul.wordpress.com/2013/01/06/contourner-un-ids-comme-un-null/
    donc si j’ai bien compris le payload ( on appelera comme cela la partie éxécutée sur la victime ), le seul truc qui est détecté est : metsrv.dll qui est encoyé.
    ensuite le trafic est chiffré en aes ( ca pas sur, juste d’apreès metasploit-framework/lib/msf/core/handler/reverse_tcp.rb et des sessions wireshark qui ne montrent qu’un traffic chiffré ).
    premièrement le payload reverse_tcp_rc4 ne doit-il pas justement palié à ce problème ? ( désolé je ne peut pas faire les teste ne disposant pas du matériel nécessaire pour mettre en place Snort )
    deuxièmement, lors d’analyse réseau avec wireshark, je trouve bien la chaine que tu décris comme détectée cependant je ne la trouve pas dans metsrv.dll… cela veut-il dire qu’il y a d’autres fichiers envoyés ?
    De plus dans la console il est marqué : 768512 bytes sent ( en gros ) alors que la dll ne fait que 69632 octets sais-tu ce qui explique une telle différence ?
    sinon merci beaucoup pour tes articles qui sont très biens faits !

  2. warfares dit :

    ah et j’oubliais, n’est-il pas possible d’inclure directemetn la dll dans l’éxécutable afin de ne pas avoir à la retransférer à chaque fois ? je n’ai rien trouvé à ce sujet 😦

  3. warfares dit :

    bon, désolé du flood mai apparement la fatigue me fait dire n’importe quoi … donc pour ma part c’est metsrv.x86.dll qui est envoyé … et qui fait bien 768512 octets !
    cependant elle ne contient pas la signature d’injection contenue dans l’article. Cependant, il semblerait que les 16 premiers octects soient remplacé par un header de 63 octets dont je n’ai pas encore l’explication.
    voila, si certains ont des réponses au reste qu’ils n’hésitent pas

  4. warfares dit :

    au cas ouca interesserait concernant mon flood de hiers, voici l’expliation de la différence de header de la dll lorsqu’elle est envoyée : http://blog.csdn.net/gaa_ra/article/details/6528359

    • mystcaster dit :

      Bonjour,
      Tout d’abord, oui tu pouvais commenter mon article initial. (Par contre, je ne peux pas le déplacer…)
      Concernant la signature d’injection de l’article, il se peut que les bases de signatures de Snort aient changées. As-tu essayé avec ta propre instance de Snort ?
      Merci pour le lien, je ne m’étais pas posé la question du header. Je prendrai le temps de parcourir l’article plus tard (je ne parle pas couramment le chinois 🙂 )

  5. bibish dit :

    Super intéressant !
    A quand un article complet sur les Binder/Crypter pour rendre un fichier FUD ?

  6. #? dit :

    Bravo et merci pour ton travail et ton temps. Ton blog est très enrichissant

  7. Geogeo dit :

    On attend toujours la suite avec impatience!

  8. Betterstring dit :

    Tu n’a jamais fais une pause aussi longue ^^ j’espère que tu reviendra quand même xD

Laisser un commentaire

MystCaster
novembre 2013
L M M J V S D
 123
45678910
11121314151617
18192021222324
252627282930  
Catégories
Archives