#1 21/04/2013 21:23:45

Xavier75
Moddeur newbie
Date d'inscription: 21/04/2013
Messages: 21

[Script] Déchiffrer le mot de passe SIP de la Neufbox

Salut,

Le mot de passe SIP de la Neufbox est reçu avec les fichiers de configuration téléchargés au démarrage. Sauf qu'il est obfusqué...

Après un peu de reverse-engineering, j'ai réussi à le déchiffrer, et j'ai créé un script Python qui s'occupe de se connecter au SSH, de récupérer ce qu'il faut pour générer le mot de passe (fichiers de configuration + clé différente pour chaque Neufbox présente dans la mémoire Flash), et enfin d'afficher le mot de passe déchiffré smile

handle_img_tag('$matches[1]$matches[3]')

Les dépendances nécessaires pour exécuter le script sont :
- Python 2.7
- PyCryto
- Paramiko

Le script est disponible ici.

Il suffit de passer les informations de connexion au SSH en arguments : ./neufbox-sip.py <hostname> <port> <username>

Enjoy smile

PS : Ce script a été testé sur une Neufbox 6. Si quelque chose ne fonctionne pas correctement chez vous, n'hésitez pas à le signaler.

PS2 : Ce compte SIP ne pourra être utilisé que depuis la ligne téléphonique de votre Neufbox, avec la bonne adresse MAC, et uniquement sur le bon VC (celui qui correspond à l'interface voip0 sur la box).

Dernière modification par Xavier75 (21/04/2013 21:30:24)

Hors ligne

 

#2 21/04/2013 21:43:06

VincentAlex
Modérateur
Lieu: Massy (91)
Date d'inscription: 01/10/2007
Messages: 3031

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Merci pour le script. C'est fxmx qui va être ravi.

Xavier75 a écrit:

PS2 : Ce compte SIP ne pourra être utilisé que depuis la ligne téléphonique de votre Neufbox, avec la bonne adresse MAC, et uniquement sur le bon VC (celui qui correspond à l'interface voip0 sur la box).

Par contre, concrètement que peut on faire avec ?

Faut aussi savoir que tous les clients ne sont pas sur plateforme SIP, il y en a encore beaucoup en MGCP.


Environnement de développement : MacOsX/Fedora 12
Dépôt dropbox

Hors ligne

 

#3 21/04/2013 21:47:27

Xavier75
Moddeur newbie
Date d'inscription: 21/04/2013
Messages: 21

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Ça devrait pouvoir permettre de profiter de la téléphonie Neufbox sans Neufbox... Ça pourrait également être intégré à un firmware alternatif.

Comparé à Libertalk, il y a moins de restrictions évidemment, et je pense que la communication doit être un peu plus rapide.

Dernière modification par Xavier75 (21/04/2013 21:50:05)

Hors ligne

 

#4 22/04/2013 09:58:50

fxmx86
Administrateur
Date d'inscription: 31/12/2007
Messages: 2891
Site web

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Sympa ! Un truc possible et interessant, ca sera d' ajouter un asterisk sur la box qui fera un petit PABX avec une seule sortie SIP


Version NB4 modée :  OB4-FULL+USB-R2.1.6

Hors ligne

 

#5 22/04/2013 15:53:07

Supercactus
Moddeur bidouilleur
Date d'inscription: 13/03/2013
Messages: 55

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Xavier75 a écrit:

uniquement sur le bon VC (celui qui correspond à l'interface voip0 sur la box).

Donc je suppose qu'on peut se servir du SIP directement sur le PC en routant la bonne adresse IP sur la bonne interface smile

Hors ligne

 

#6 25/04/2013 11:13:26

guifort
Moddeur aficionados
Date d'inscription: 06/07/2008
Messages: 168

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

On doit pouvoir natter le lan0 vers voip0 pour l'interface VOIP en question.


Il doit également être possible de mettre un serveur Asterisk dans la Box et d'avoir des clients locaux et distant du coup ! (j'ai déjà fait ça avec un autre opérateur)

Hors ligne

 

#7 09/05/2013 19:09:53

nague
Moddeur newbie
Date d'inscription: 08/08/2012
Messages: 8

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Super boulot Xavier75 !

Hors ligne

 

#8 13/06/2013 15:26:23

quatsch
Moddeur newbie
Date d'inscription: 13/06/2013
Messages: 2

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Merci beaucoup, mais ce script ne fonctionne pas sur ma neufbox 4, quelqu'un une idee d'ou se trouve l'auth_key, c'est lui qui semble poser probleme, le script retrouve que des 0000000

Hors ligne

 

#9 13/06/2013 18:08:19

Xavier75
Moddeur newbie
Date d'inscription: 21/04/2013
Messages: 21

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Salut quatsch,

Sur ma NB6, je peux afficher l'auth_key encodée en hexadécimal (ainsi que d'autres informations) en tapant la commande "serialization --show" en SSH. Il me semble que la même commande est présente dans le firmware des NB4. Est-ce que ça fonctionne chez toi ?

Si oui, est-ce que tu peux copier le contenu de /dev/mtdblock-bootloader sur ton ordi, l'ouvrir dans un éditeur hexadécimal et me dire à quel offset se trouve l'auth_key ?

Hors ligne

 

#10 14/06/2013 15:17:02

quatsch
Moddeur newbie
Date d'inscription: 13/06/2013
Messages: 2

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

effectivement cette commande est présente ... mais pas de auth_key alors ma neufbox est tres vieille, c'est une ser_r0 ca vient peut-etre de la?

Dernière modification par quatsch (14/06/2013 15:27:59)

Hors ligne

 

#11 14/06/2013 18:55:50

Xavier75
Moddeur newbie
Date d'inscription: 21/04/2013
Messages: 21

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Peut-être que le mécanisme est tout simplement différent avec les NB4, je vais regarder ça de plus près.

Normalement, la requête HTTP effectuée pour récupérer les identifiants SIP se trouve dans le fichier /var/log/daemon.log, est-ce que tu pourrais montrer l'URL, qui contient "cfgnb4sip.xml" normalement (en virant les infos personnelles, c'est-à-dire l'adresse IP privée en 10.x.x.x et la fin de l'adresse MAC) ?

Au passage, est-ce que tu es sûr que tu es bien en SIP et pas en MGCP ? Si tu es en SIP tu as normalement un processus "clientSip" qui tourne sur la box, si tu es en MGCP tu as un processus "vodsl".

Hors ligne

 

#12 21/02/2014 00:14:01

oyaji
Moddeur newbie
Date d'inscription: 20/02/2014
Messages: 2

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Xavier75 a écrit:

Sur ma NB6, je peux afficher l'auth_key encodée en hexadécimal (ainsi que d'autres informations) en tapant la commande "serialization --show" en SSH. Il me semble que la même commande est présente dans le firmware des NB4. Est-ce que ça fonctionne chez toi ?

Si oui, est-ce que tu peux copier le contenu de /dev/mtdblock-bootloader sur ton ordi, l'ouvrir dans un éditeur hexadécimal et me dire à quel offset se trouve l'auth_key ?

Pour information, le bootloader de la NB6V diffère légèrement de celui de la NB6 classique, si bien que l'offset où se trouve la valeur de la auth_key n'est plus le même. Le fichier XML contenant les informations liées á la VoIP a été renommé en voip.xml

En pratique pour supporter la NB6V, il faut simplement remplacer 2064 par 2330 et mettre á jour le nom du fichier :

Code:

--- neufbox-sip.py    2013-04-21 21:20:18.000000000 +0200
+++ neufbox-sip.py    2014-02-21 00:33:58.334904862 +0100
@@ -64,7 +64,7 @@ info('Connecté en SSH !')
 
 # Extraire l'auth_key (identifiant unique de 32 octets) de la mémoire flash.
 
-auth_key = 'dd if=/dev/mtdblock-bootloader bs=1 skip=2064 count=32'
+auth_key = 'dd if=/dev/mtdblock-bootloader bs=1 skip=2330 count=32'
 auth_key = ssh.exec_command(auth_key)[1].read()
 
 info('Auth_key de la Neufbox : ' + auth_key.encode('hex'))
@@ -77,7 +77,7 @@ info('Auth_key de la Neufbox : ' + auth_
 # Récupérer le fichier de configuration envoyé par SFR
 
 try:
-    xml = ssh.exec_command('cat /tmp/autoconf/cfgnb4sip.xml')
+    xml = ssh.exec_command('cat /tmp/autoconf/voip.xml')
     xml = fromstring(xml[1].read())
 except:
     ssh.close()

Dernière modification par oyaji (21/02/2014 00:38:08)

Hors ligne

 

#13 21/02/2014 07:44:55

SGDA
Pachyderme
Lieu: 95170
Date d'inscription: 28/08/2007
Messages: 8460

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Merci pour l'info. N'hésite pas aussi à compléter le wiki


XP Pro/Fedora 19 (Schrödinger's cat)

Hors ligne

 

#14 22/08/2014 18:33:09

chronivan
Moddeur newbie
Date d'inscription: 22/08/2014
Messages: 2

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

guifort a écrit:

On doit pouvoir natter le lan0 vers voip0 pour l'interface VOIP en question.

J'aurais bien aimé essayer cette manip pour pouvoir me connecter depuis Ekiga sur mon PC !

Par contre je ne suis pas super à l'aise avec tout ce qui est config réseau, la manip peut se faire directement sur la box en modifiant certains paramètres ?

Si vous avez un peu de lecture sur le sujet ou du simili-tuto je suis plus que preneur smile


Merci !

Hors ligne

 

#15 19/10/2014 13:59:38

tivoli
Moddeur newbie
Date d'inscription: 11/10/2014
Messages: 9

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Pour rappel deux changements a faire pour une NB6V :
1) remplacer 2064 par 2330
2) remplacer cfgnb4sip.xml par voip.xml

ce qui donne  :

Code:

#!/usr/bin/python
#-*- encoding: Utf-8 -*-
from xml.etree.ElementTree import fromstring
from getpass import getpass
from hashlib import sha256
from sys import argv
import hmac

try:
    from Crypto.Cipher import AES
except ImportError:
    exit('Erreur : la bibliothèque "PyCryto" n\'est pas installée')

try:
    import paramiko
except ImportError:
    exit('Erreur : la bibliothèque "Paramiko" n\'est pas installée')


print "                     ___ __                 "
print " .-----.-----.--.--.'  _|  |--.-----.--.--. "
print " |     |  -__|  |  |   _|  _  |  _  |_   _| "
print " |__|__|_____|_____|__| |_____|_____|__.__| "
print "                                            "
print " SIP Password Finder             21/04/2013 "
print "                                            "

# Vérifier que les bons arguments ont été renseignés.

if len(argv) != 4 or not argv[2].isdigit():
    print 'Usage:   %s <hostname> <port> <username>' % argv[0]
    print 'Example: %s neufbox 1288 ob4' % argv[0]
    exit('')

# Fonctions pour afficher les informations dans la console.

def info(text):
    print '\033[37m' + '[+] ' + '\033[0m' + text
def error(text):
    print '\033[31m' + '[!] ' + '\033[0m' + text
    exit('')


##########################
# Connexion à la Neufbox #
##########################

# Se connecter en SSH à la Neufbox.

command, hostname, port, username = argv
password = getpass('Entrez votre mot de passe SSH : ')

try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname, int(port), username, password)

except paramiko.AuthenticationException:
    print
    error('Mauvais mot de passe SSH.')

print
info('Connecté en SSH !')

# Extraire l'auth_key (identifiant unique de 32 octets) de la mémoire flash.

auth_key = 'dd if=/dev/mtdblock-bootloader bs=1 skip=2330 count=32'
auth_key = ssh.exec_command(auth_key)[1].read()

info('Auth_key de la Neufbox : ' + auth_key.encode('hex'))


#############
# Infos SIP #
#############

# Récupérer le fichier de configuration envoyé par SFR

try:
#    xml = ssh.exec_command('cat /tmp/autoconf/cfgnb4sip.xml')
    xml = ssh.exec_command('cat /tmp/autoconf/voip.xml')
    xml = fromstring(xml[1].read())
except:
    ssh.close()
#    error("Le fichier cfgnb4sip.xml n'a pas pu être récupéré !")
    error("Le fichier voip.xml n'a pas pu être récupéré !")
# Parser les informations

server = xml.find('telephony-services')

rand = xml.find('rand').text.decode('hex')
password = server.find('password').text.decode('hex')

# Déchiffrer le mot de passe SIP

clefAES = hmac.new(rand, auth_key, sha256).digest()
mdpClair = AES.new(clefAES[:16], AES.MODE_CBC, clefAES[16:]).decrypt(password)

# Afficher les informations

print
info('Registrar : ' + server.find('realm').text)
info('Utilisateur : ' + server.find('pub-identity-sip').text)
info('Identifiant : ' + server.find('digest-username').text)
info('Mot de passe : ' + mdpClair)
info('Proxy : ' + server.find('proxy').text + ':' + server.find('proxy').get('port'))


#################
# Fin du script #
#################

# Fermer la session SSH

ssh.close()
print

Dernière modification par tivoli (19/10/2014 14:01:06)

Hors ligne

 

#16 16/08/2015 00:02:06

FHO Corp
Modérateur et bricoleur barbare !
Lieu: Lyon (69)
Date d'inscription: 22/02/2012
Messages: 761
Site web

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Sympa le script tongue

L’idéal serait un script qui puisse faire l'inverse afin de provisionner la Neufbox avec une conf modifiée d'un autre opérateur SIP big_smile


Neufbox 4 R3.3.13-RT (ADSL2+ chez Rural Telecom)
Neufbox 6 R3.3.13-RT (Full Routed @ Rural Telecom)
Neufbox 6V R3.3.9-RT (Full Routed @ Rural Telecom)
Dépot Nextcloud Dépot SFR Me on lafibre.info Livebox 2.1 en FTTH sur DSLAM/BAS Personnel

Hors ligne

 

#17 14/09/2015 10:56:29

tonyphi07
Moddeur bidouilleur
Date d'inscription: 06/03/2012
Messages: 97

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

bonjour,
j'ai bien réussi a déchiffrer mon mot de passe sur ma NBV6 en mettant voip2.xml a la place de voip.xml
par contre j'aimerai savoir si je peux utiliser ces infos pour renseigner un trunk de mon Xivo installé sur un raspberry2  qui se trouve sur le même réseau ?

si oui comment vous renseignerez ceci avec les infos que donne le script handle_img_tag('$matches[1]$matches[3]')

Merci

Hors ligne

 

#18 10/01/2017 10:40:39

guifort
Moddeur aficionados
Date d'inscription: 06/07/2008
Messages: 168

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Hello,

Désolé pour le  déterrage de post.

J'ai modifié le script pour faire l'inverse et donc encoder un mot de passe en clair.

J'arrive bien à l'encoder et le décoder via le script.

Cependant quand je le fourni à la box  (NB5) j'obtiens une erreur comme quoi elle n'arrive pas à déchiffrer la configuration.

Du coup je me pose la question suivante : La variable RAND est elle lié à la neufbox ou peut elle être aléatoire  ?

La variable auth_key est visiblement sur 64 octects.

Une idée ?

Edit : Cela provient visiblement de ma configuration "supservice" cependant je ne connais pas le contenu de celle ci.

Quelqu'un aurait l'info ?

Dernière modification par guifort (10/01/2017 12:00:04)

Hors ligne

 

#19 10/01/2017 19:04:33

VincentAlex
Modérateur
Lieu: Massy (91)
Date d'inscription: 01/10/2007
Messages: 3031

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Je pense que la variable RAND doit être liée à la box.


Environnement de développement : MacOsX/Fedora 12
Dépôt dropbox

Hors ligne

 

#20 10/01/2017 20:55:52

guifort
Moddeur aficionados
Date d'inscription: 06/07/2008
Messages: 168

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Hum OK !

Ce qui m'étonne, je n'ai pas d'erreur à propos du mot de passe mais uniquement du supserv :

configuration.c - configurationTraiter - timerT2 = 4000
configuration.c - configurationTraiter - using default gprs profile: zte
configuration.c - checkIntergity - decryption: supserv intergrity check failed!
configuration.c - configurationTraiter - decryption: pattern checking on decrypted config data failed!

C'est comme si elle ne détecte pas un caractère voulu dans la variable supserv mais sans savoir ce que cette variable doit contenir pas évident.

Hors ligne

 

#21 11/06/2017 19:33:40

hugopoi
Moddeur newbie
Date d'inscription: 27/08/2015
Messages: 6

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Je me documente sur le fonctionnement global de la configuration des différents services, J'ai quelques questions :
1) /dev/mtdblock-bootloader correspond-il au CFE broadcom et donc au fichier NB6V-BOOTLOADER-R3.3.2 si oui est-il compressé et/ou packé ? (d'après ce que j'ai vu sur mon editeur hexa non)
2) le fichier NB6V-BOOTLOADER-R3.3.2 est générique à priori comment la NB6 récupère la bonne configuration et/ou le bon firmware avec ses identifiants par le réseau ? Es que la config est en dure dans la box donc installer au premier flash fait par SFR ?
3) Le fichier /tmp/autoconf/voip.xml est récupéré par une requête réseau à priori par la neufbox au boot ? si oui je ne l'ai pas vu pendant mais capture en faisant juste un reboot simple ? quand et comment est récupéré ce fichier ?

Hors ligne

 

#22 16/02/2018 10:49:23

Smurphy
Moddeur newbie
Date d'inscription: 16/02/2018
Messages: 1
Site web

Re: [Script] Déchiffrer le mot de passe SIP de la Neufbox

Petite question d'un debutant sur le matos neufbox.
Ai-je raison de croire que pour etre capable d'utiliser ce script python, je doit d'abord modder ma box pour avoir l'access shell? (ssh). Ou y a t il un autre possibilite d'y acceder? J'ai une NB6VAC-FXC-r0.

Merci smile

Dernière modification par Smurphy (16/02/2018 10:51:18)


Linux'eur depuis 1992...

Hors ligne

 

Pied de page des forums