Un proxy SIP pour le téléphone Livebox d'Orange

Mise à jour : RIP siproxd_orange :(

Moins d'une semaine après avoir publié mon dernier article, certaines personnes ont probablement déjà pu observer ma page BitBucket et voir que j'avais créé un nouveau dépôt public intitulé siproxd_orange.

Après avoir passé près de deux mois à analyser le fonctionnement du client SIP officiel d'Orange (j'ai nommé le Livephone), il n'y a rien de plus naturel que de valider le fruit de mes recherches en fabriquant une implémentation indépendante des mêmes extensions au protocole SIP.

Voici donc ma première deuxième release, la version 0.1.1 de ce plugin, qui est le fruit de maintenant presque trois mois d'intense recherches. Je vous le propose en téléchargement, tout en précisant néanmoins qu'il est très important de lire le fichier README qui l'accompagne.

Le résultat ? J'ai pu téléphoner via le numéro géographique (en 01) attribué pour ma Livebox, directement via Linphone et via un téléphone SIP Cisco 7960G. Le téléphone Cisco trône d'ailleurs fièrement sur mon bureau depuis que je l'ai acheté sur Leboncoin.

Cisco 7960 sur mon bureau
Faire mumuse avec du SIP est une bonne excuse pour faire de genre de craquages. C'est juste un peu moins "girlfriend-compliant".

Mon plugin se contente généralement de réécrire certains des paquets SIP qu'il reçoit. Comme Orange utilise des URI "tel:" dans certains de ses messages et que siproxd fait mal la vérification syntaxique lorsque de tels URI figurent dans les messages SIP (ils font pourtant l'objet de la RFC 3966), j'ai été parfois obligé de réécrire les messages avant même l'étape de parsing de siproxd. Ces réécritures modifiaient la longueur des paquets reçus et provoquaient un bug pour lequel j'ai soumis un patch, qui vient tout juste d'être accepté.

Ce qui signifie que tant qu'une hypothétique version 0.8.3 de siproxd n'est pas encore sorti, il faudra compiler soi-même une version patchée du code source pour que le plugin fonctionne correctement. Cette restriction rend malheureusement la mise en œuvre de ma solution beaucoup plus difficile (et croyez-moi, j'ai vraiment voulu faire le plus de choses possibles sans devoir patcher siproxd ou libosip2), en attendant une éventuelle prochaine version 0.8.3. Cette procédure est néanmoins documentée (du mieux que je peux) sur la page du projet siproxd_orange. En attendant, le code source intégrant mon patch est déjà disponible (choisir une snapshot postérieure au 26 mai).

Est-ce que cela signifie qu'on peut désormais brancher son téléphone SIP préféré directement sur l'infrastructure d'Orange ? Tout à fait. Est-ce que cela signifie qu'on pourra débrancher définitivement le câble RJ11 à l'arrière de sa Livebox ? Je ne sais pas. C'est pourquoi je compte aussi sur vous afin de trouver les bugs que je n'aurais peut-être pas pu repérer moi-même.

(Note à moi-même : ça m'apprendra à faire des releases avant de tout tester correctement.)

Mise à jour du 23 janvier 2015 : correction factuelle sur la question de la mauvaise prise en charge par siproxd des URIs "tel:" ; merci aymeric !

Posté par x0r à 25 commentaires • Tags : sip orange livebox voip livephone hack cisco paramètres siproxd linphone

Commentaires

Poster un commentaire

#1 — Tol Phobos

Un seul mot : merci.

#2 — Max

J'attendais de pouvoir utiliser un client SIP de mon choix avec ma livebox depuis longtemps. Merci, merci, merci !

#3 — jb

merci pour ces 2 supers articles !

Les snapshots disponibles de siproxd ne compilent pas, j'ai essayé de fixer les erreurs évidents (headers, etc...) mais il y en a pour un moment. Quelqu'un aurait un snapshot de la fameuse version du 26 mai ?

merci d'avance.

#4 — ghislain

Merci pour toutes ces informations !!

J'ai une question :

Est-ce qu'il y a une chance de pouvoir utiliser le SIP orange sans utiliser la Livebox ?

Merci!

#5 — Seb

Magnifique!

#6 — Antony

Pourquoi pas publié un binaire x86 et amd64 static ? Pourquoi pas proposé une image Rasberry PI

En tout cas c'est un beau travail.

#7 — bobmorane

Félicitation, ca marche impec pour moi (enfin presque..) il s'enregistre, je peux passer des call mais pas en recevoir......Bravo en tout cas, énorme travail !

#9 — x0r

J'ai déjà commencé à désassembler l'application Android, et d'après l'analyse assez sommaire que j'ai pu en faire, le fonctionnement est plutôt similaire à l'application PC.

J'aperçois juste qu'au moment de la récupération des paramètres SIP, un cookie est envoyé au serveur contenant un token d'authentification (récupéré à l'authentification) ainsi que le nom et la version du système d'exploitation (entre autres). Je le faisais passer pour un Windows XP, mais je serai probablement amené à modifier cela.

Je m'étais déjà rendu compte que l'application PC n'était plus disponible au téléchargement (cf. http://x0r.fr/blog/42 ), mais je n'étais pas au courant qu'Orange envisagerait de couper entièrement l'accès aux PC. Merci !

#10 — Magma

Bonjour, l'application livephone n'est officiellement plus autorisée sur PC, elle est maintenant déportée sur ios et android. Pour moi c'est une véritable catastrophe. Du fait de mon handicap je suis dans l'impossibilité complète d'utiliser un combiné fixe ou mobile, livephone était ma seule possibilité d'accéder à la communication téléphonique via un PC. Votre plug-in est-il compatible avec Windows ? Cela arrangerait bien mon affaire. Je trouve ça tellement scandaleux qu'Orange verrouille le SIP à ce point, je suis client chez eux depuis 10 ans mais si je ne trouve pas de solution je vais me trouver contraint de changer de FAI

#11 — x0r

Pour commencer, je pense qu'un petit mail ou lettre à Orange ne serait pas de refus.

Je n'ai pas testé la compatibilité de mon projet avec Windows, mais j'en doute. J'avoue que je ne suis pas franchement intéressé par le développement d'applications Windows. Si néanmoins quelqu'un est partant, il aura tout mon soutien.

Une personne m'a déjà contacté par mail au sujet de la possibilité de faire une machine virtuelle avec siproxd_orange préinstallé dedans. Je suis plutôt en train d'examiner cette voie-là.

Bien que siproxd_orange ne soit pas nécessairement compatible avec Windows, il fonctionne néanmoins avec la plupart des clients SIP, y compris ceux sous Windows.

#12 — Jean

Bonjour, coment avez-vous configurer votre téléphone voip ?

Auriez-vous un tuto de comment le configurer ? J'ai personellement un pap2t.

Cordialement.

#13 — x0r

Bonjour,

La configuration générale du poste VoIP (identifiant, passwords...) est décrite sur la page principale du projet, à savoir http://code.x0r.fr/siproxd_orange/overview .

Pour des instructions spécifiques aux postes VoIP, il y a une matrice de compatibilité ici : http://code.x0r.fr/siproxd_orange/wiki/Home

Cette matrice est bien entendu incomplète, mais libre à vous de le compléter en ajoutant une page "PAP2T" ou en me transmettant par e-mail la marche à suivre.

#14 — Nicolas

Bonjour,

un grand bravo a vous, cependant, vous indiquez que la conf général du poste est disponible à l'url suivante http://code.x0r.fr/siproxd_orange/overview .

dependant a part la compilation, il n'y a rien d'autre :/

pouvez-vous m'indiquez le bon lien? Merci

Encore bravo.

#15 — aymeric

Bjr! petite correction: libosip2 supporte les tel: url depuis 2001!

Pour que le routage utilise le proxy, il suffit de configurer l'ajout d'un header Route: target-uri : tel:xxxxxx Route: <sip:ip-ou-fqdn-du-prochain-hop;lr>

Ça se fait très bien avec osip2/eXosip2 signé, l'auteur ;)

-sinon, projet intéressant! ;)-

#16 — x0r

Ah ? Au temps pour moi alors.

En tout cas, j'ai vu que les messages contenant des URLs "tel:" dans les en-têtes From/To font échouer les vérifications de sécurité que fait siproxd. Cette vérification échoue avec le message "security check failed: NULL From Header".

Le test se situe dans le code source de siproxd, fichier security.c, ligne 275 :

> if ((sip->from==NULL) || (sip->from->url==NULL) || (sip->from->url->host==NULL))

Je me souviens avoir fait des tests avec libosip2-3.6.0, mais je ne me rappelle plus exactement de mes conclusions. En tout cas, j'avais observé un comportement qui faisait partir siproxd en live.

#17 — aymeric

Ce que tu montres, c'est le code de sipproxd! C'est donc là que le test n'est pas fait correctement. Dans le cas d'une tel url:

sip->from!=NULL && sip->scheme!=NULL sip->string!=NULL

string contient les chaines de characteres qd l'uri est d'un autre format que "sip" ou "sips"!

Definition de "string" dans la doc:

http://www.antisip.com/doc/osip2/structosip__uri.html#a435ce3dfd6ccd7fb1ab94ccbcceebd31

Sinon, j'ai installé le livephone android pour voir: je n'ai pas vu de tel URL... ni dans le REGISTER, ni dans l'INVITE!... Peut-être que ce souci n'existe donc plus. ;)

#18 — x0r

Oui, c'est bien le code de siproxd que je montre. C'est donc bien siproxd qui fait un mauvais test.

Ce serait peut-être opportun de rapporter le bug et proposer un patch (ce ne sera pas mon premier, étant donné que j'avais déjà corrigé un autre bug de siproxd en développant siproxd_orange :]).

J'amende de ce pas mon billet.

#19 — x0r

Par contre, je me souviens retrouver systématiquement une URI "tel:" dans l'en-tête "From:" lorsqu'on reçoit un appel entrant. On en retrouve également dans les en-têtes "P-Asserted-Identity:" des INVITE sortants.

#20 — Synclinal

Je suis carrément impressionné par ce travail de Titan La réussite d'un tel projet permettrais à bon nombre se personnes de pouvoir se passer de boxes. Encore bravo!

#21 — Lionel

Avec compte chez ippi et un port a configurer sur la box liveplay et cela fonctionne avec en plus un n° geo

#22 — aido

Je suis impressionné par le travail entrepris pour réaliser ce plugin. Je lui tire mon chapeau.

Je dois être une buse par contre car je n'arrive pas à l'utiliser via un sip classique comme linphone sur IOS

Suis je complètement à côté de la plaque ou dois je perséverer dans cette direction? Merci pour vos umiètes

#24 — Youpi6v

Salut,

Tu parles de release 0.8.3 de siproxd, mais sur le site de siproxd, la page http://siproxd.sourceforge.net/index.php?op=snapshot indique que la version 0.8.2 intègre ton patch du 25 mai (2014 I suppose).

Du coup, la version 0.8.2 actuelle (release du 16/04/2016) est ok pour utiliser ton proxy sans rien recompiler ?

Addendum 3615 Mylife : intéressé par le SIP seulement pour avoir un téléphone pas au cul de la livebox (ma paire DECT meurt malgré les changements de batterie).

#25 — Youpi6v

@Youpi6v : la première ligne de l'article "Mise à jour" pointe vers un /autre/ article. RIP siproxd_orange.

Poster un commentaire